如何TranslateAnimation在Android上工作?(How does Translat

2019-07-30 10:49发布

我经历了

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旨意取决于在按钮上点击次数。

Answer 1:

据我所知,会有这之间的相对连接。

也就是说,如果你想翻译从屏幕到屏幕左侧 ,在一个点击按钮的右边一个隐藏的TextView,你真正需要它的X方向( 屏幕的右侧 )的100%转化为X的0% -方向( 屏幕的左侧 )。

在这一点上,你并不需要在all.so这将是两个options.So最终0%改变Y方向,你将有:

fromXDelta 100%

toXDelta 0%

fromYDelta 0%

toYDelta 0%

您可以通过0之间的比例设置为100,按您的要求限制视图组件的。

同样,如果你需要,以及翻译上的Y方向的分量,那么你需要改变0%到一些其他的价值。

希望,它清楚你现在。

编辑:

你的要求,你需要重写按钮1的onclick,在那里你可以控制按钮-2的知名度,以及翻译。

在你的资源创建动画文件夹动画文件。

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);
        }
    }
});

...


Answer 2:

随着TranslateAnimation你可以创建一个动画来控制对象。

随着TranslateAnimation你能够控制物体的位置。 您通过这4个参数,它代表的X和Y坐标。

通过比如你要的对象向右移动,你会做这样的事情:TranslateAnimation(0.0F,1.0F,0.0F,0.0F)

(或使用Animation.ABSOLUTEAnimation.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至权

也许看看http://en.wikipedia.org/wiki/Coordinate_system



文章来源: How does TranslateAnimation work on Android?