我经历了
TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
但我仍然对Translate animation
如何运作感到困惑。
有人可以解释它是如何工作的吗?我阅读了说
的文档fromXDelta Change in X coordinate to apply at the start of the animation
toXDelta Change in X coordinate to apply at the end of the animation
fromYDelta Change in Y coordinate to apply at the start of the animation
toYDelta Change in Y coordinate to apply at the end of the animation
但我仍然不清楚它是如何运作的。
编辑:我有Button
和LinearLayout
没有任何孩子。当我点击Button
时,我想动态生成TextView
并动画TextView
以显示在LinearLayout
中。 TextView
的数量取决于按钮的点击次数。
答案 0 :(得分:24)
AFAIK,这之间会有相对的联系。
也就是说,如果您想将隐藏的文本视图从屏幕右侧转换为屏幕左侧,则在单击按钮时,您实际上需要从100%的X方向转换它( 屏幕右侧)到X方向的0%(屏幕左侧)。
此时,你根本不需要改变Y方向。对于这两个选项,这将是0%。所以最后,你将有:
fromXDelta 100%
toXDelta 0%
来自YDelta0%
toYDelta 0%
您可以根据需要将此百分比设置在0到100之间来限制组件的视图。
同样,如果您还需要在Y方向上转换组件,则需要将0%更改为其他值。
希望,现在很清楚。
编辑:
根据您的要求,您需要覆盖按钮-1的按键,您可以在那里控制按钮2的可见性和翻译。
在你的res中的anim文件夹中创建动画文件。
<强> translate_button.xml:强>
<?xml version="1.0" encoding="utf-8"?>
<!-- translating button from right to left -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="900"
/>
</set>
现在,在您的活动文件中,
...
// ll is linear layout containing button_2
//counter is used to manage visibility of button_2 on click of button_1,i.e.1st click-button_2 would be visible,on 2nd click on button_1,it would be invisible.
//you can change behavior as per your need
button_2.setVisibility(View.GONE);
button_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(counter<1)
{
counter++;
button_2.setVisibility(View.VISIBLE);
Animation anim=AnimationUtils.loadAnimation(context, R.anim.translate_button);
button_2.startAnimation(anim);
}
else
{
counter=0;
button_2.setVisibility(View.GONE);
}
}
});
ll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(counter==1)
{
counter=0;
button_2.setVisibility(View.GONE);
}
}
});
...
答案 1 :(得分:2)
使用TranslateAnimation,您可以创建一个动画来控制对象。
使用TranslateAnimation,您可以控制对象的位置。 您传递了这4个参数,它们代表X和Y坐标。
根据示例,您想要将对象移动到右侧,您可以执行以下操作: TranslateAnimation(0.0f,1.0f,0.0f,0.0f)
(或使用Animation.ABSOLUTE
,Animation.RELATIVE_TO_SELF
)
我们现在只使用X坐标,因为我们现在正在做一个简单的“LeftToRight”动画移动。
Change in X coordinate to apply at the start of the animation
toXDelta (0.0f)
Change in X coordinate to apply at the end of the animation (1.0f)
= 1到右