ボタンが 200px (0,0 から 0, 200 まで) 下に移動し、1 秒後に元の位置に再び上に移動することを期待しています。
ただし、次のコードは (0,0) からではなく、(0,200) から (0,400) から開始するように動作します。
1 つのアニメーションを AnimationSet に入れると、正常に動作します。しかし、AnimationSet に 2 つ以上のアニメーションを入れると、うまくいきません。
どうしたの?
public class MainActivity extends Activity {
private static final int DISTANCE = 200;
private static final long DURATION = 1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.button1);
TranslateAnimation aniMove = new TranslateAnimation(0, 0, 0, DISTANCE);
aniMove.setDuration(DURATION);
TranslateAnimation aniMoveBack = new TranslateAnimation(0, 0, DISTANCE, 0);
aniMoveBack.setDuration(DURATION);
aniMoveBack.setStartOffset(DURATION + 1000);
AnimationSet aniSet = new AnimationSet(true);
aniSet.addAnimation(aniMove);
aniSet.addAnimation(aniMoveBack);
btn.startAnimation(aniSet);
}
}
ここにXMLがあります
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>