Я пытаюсь переместить кнопку (с анимацией) при нажатии.Я хочу, чтобы он перемещался на 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, чтобы гарантировать, что координаты кнопки не меняются от щелчка к щелчку.