Попытка переместить кнопку в другую точку на экране - PullRequest
0 голосов
/ 31 октября 2011

Я пытаюсь переместить 3 кнопки относительно их начальных точек:

Код для запуска анимации:

protected void showMoreBtns() {
    Button btn1 = (Button)this.findViewById( R.id.more1btn );
    Button btn2 = (Button)this.findViewById( R.id.more2btn );
    Button btn3 = (Button)this.findViewById( R.id.more3btn );

    Animation showMore = AnimationUtils.loadAnimation( this, R.anim.optionsinup1 );
    btn1.startAnimation( showMore );

    showMore = AnimationUtils.loadAnimation( this, R.anim.optionsinup2 );
    btn2.startAnimation( showMore );

    showMore = AnimationUtils.loadAnimation( this, R.anim.optioninup3 );
    btn3.startAnimation( showMore );
}

А анимация определяется как:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="-60"
        android:toYDelta="-30" />
</set>

Все три анимации имеют одинаковый формат, изменяются только android:toDelta.

Проблема заключается в том, что анимация запускается, однако кнопки возвращаются в исходное положение в конце анимации. Я бы хотел, чтобы они остались в конечной точке.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

showMore.setFillAfter (истина);Это будет помещено в ваш код Java.Я надеюсь, что это будет работать. Если вы хотите использовать кнопку после завершения анимации, вы поместите на AnimationEnd (Анимационная анимация) в это место кнопку, используя ваш макет.

1 голос
/ 17 июня 2014

Не уверен, что это поможет вам, но я столкнулся с той же проблемой, что я смог сделать это с помощью этих методов: setTranslationX (float) setTranslationY (float)

вы можете использовать его Вот так

Button button = (button) findViewById(your id); 
button.setTranslationX(a float value);

вот документация по Android, предоставляющая дополнительную информацию http://developer.android.com/reference/android/view/View.html#attr_android:translationX

также обратите внимание, что минимальный требуемый уровень Android SDK составляет 11

1 голос
/ 31 октября 2011

Вам нужно два набора кнопок, и после воспроизведения анимации вы должны сделать так, чтобы один набор исчез, возможно, используя View.setVisibility(View.GONE) для его родителя или для каждой кнопки.

...