Я пытаюсь переместить кнопку (с анимацией) после клика. Я хочу, чтобы он переместил 100 пикселей в нижнюю часть первого щелчка, 100 пикселей вверх на секунду, 100 пикселей на нижнюю треть и так далее. У меня есть простой файл макета (main.xml):
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Press to begin animation" />
Моя стартовая активность выглядит следующим образом:
public class TestActivity extends Activity {
public final String TAG="TestActivity";
boolean toTop=false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b=(Button)findViewById(R.id.button);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(TestActivity.this, "left="+v.getLeft()+"\nright="+v.getRight(), Toast.LENGTH_SHORT).show();
Animation translateAnimation;
if(toTop) translateAnimation=new TranslateAnimation(0, 0, 0, -100);
else translateAnimation=new TranslateAnimation(0, 0, 0, 100);
translateAnimation.setDuration(1000);
translateAnimation.setFillEnabled(true);
translateAnimation.setFillAfter(true);
v.startAnimation(translateAnimation);
toTop=!toTop;
}
});
}
}
Когда я нажимаю кнопку, я вижу, как она перемещается на дно. Но когда я нажимаю его во второй раз, ничего не происходит. Я должен щелкнуть до начального прямоугольника кнопки, чтобы снова начать анимацию. Кажется, что кнопка нарисована так, как ожидалось, но фактический вид остается на той же позиции. Я хочу знать, как я могу полностью переместить взгляд, а не только его визуальную часть. Кроме того, я использую Toast.maketext.show, чтобы гарантировать, что координаты кнопки не будут изменены с момента щелчка.