Как работает TranslateAnimation android?

Я прошел через

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 

но все же неясно, как он работает.

EDIT: у меня есть Button и LinearLayout без какого-либо дочернего элемента, когда я нажимаю на Button, я хочу создать динамический TextView и оживить, что TextView до LinearLayout число TextViews будет зависеть от количества щелчков на кнопке.

Ответы

Ответ 1

AFAIK, между ними будет относительная связь.

То есть, если вы хотите перевести скрытый текст с справа на экран слева от экрана, нажав кнопку, вам действительно нужно перевести его из 100% от X-направления ( на правой стороне экрана) до 0% от X-направления (в левой части экрана).

На этом этапе вам не нужно менять направление Y на всех. Так что это будет 0% для обоих параметров. Итак, у вас будет:

fromXDelta​​strong > 100%

toXDelta​​strong > 0%

fromYDelta​​strong > 0%

toYDelta​​strong > 0%

вы можете ограничить просмотр компонента, установив этот процент от 0 до 100, согласно вашему требованию.

Аналогично, если вам нужно перевести компонент в направлении Y, тогда вам нужно изменить 0% на какое-то другое значение.

Надеюсь, теперь это ясно для вас.

EDIT:

для вашего требования, вам нужно переопределить onclick кнопки-1, и там вы можете контролировать видимость кнопки-2, а также перевод.

создайте файл анимации в папке с анимацией в папке res.

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

...

Ответ 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 вправо

Возможно, посмотрите http://en.wikipedia.org/wiki/Coordinate_system