Попытка переместить кнопку в другую точку на экране

Я пытаюсь переместить 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 изменены.

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


person Mike D    schedule 30.10.2011    source источник


Ответы (3)


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

person VSC    schedule 02.11.2011

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

person Diego Torres Milano    schedule 30.10.2011
comment
Есть ли более простой способ перемещать элементы в разные точки экрана. - person Mike D; 31.10.2011

Не уверен, что это поможет вам, но я столкнулся с той же проблемой, что и я смог сделать это, используя эти методы: 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%3atranslationX

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

person Mightian    schedule 17.06.2014
comment
Это выглядит хорошо для текущих версий Android, но в то время, когда я задавал этот вопрос, я работал с Android 2.x и, скорее всего, с SDK уровня 7 или 8. - person Mike D; 17.06.2014