[英]Android Animation Repeating
我有三個具有相同翻譯動畫的視圖。 使用0-2之間的隨機數,可以對三個視圖之一進行動畫處理。 我在重復動畫和每個動畫的延遲方面遇到麻煩(應該在2000ms左右)。
Animation move = AnimationUtils.loadAnimation(this, R.anim.move);
View view1 = (View) findViewById(R.id.view1);
View view2 = (View) findViewById(R.id.view2);
View view3 = (View) findViewById(R.id.view3);
Random color_box_fall_random = new Random();
int random_int = (color_box_fall_random.nextInt(2));
for (int i = 0; i < 10; i++){
if (random_int == 0){
view1.startAnimation(move);
}
else if (random_int == 1){
view2.startAnimation(move);
}
else{
view3.startAnimation(move);
}
}
move.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:startOffset="2000"
android:fromYDelta="-200"
android:toYDelta="50%p"
android:duration="2000" />
</set>
結束之后,您需要使用AnimationListener
來開始下一個動畫。 您可以延遲2秒發布可運行對象,以獲取延遲。
Animation move;
View view1;
View view2;
View view3;
Random color_box_fall_random;
int i;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
move = AnimationUtils.loadAnimation(this, R.anim.move);
view1 = findViewById(R.id.view1);
view2 = findViewById(R.id.view2);
view3 = findViewById(R.id.view3);
color_box_fall_random = new Random();
handler = new Handler();
move.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
i++;
if(i < 10) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
switch(color_box_fall_random.nextInt(2)){
case 0:
view1.startAnimation(move);
break;
case 1:
view2.startAnimation(move);
break;
case 2:
view3.startAnimation(move);
break;
}
}
}, 2000);
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
switch(color_box_fall_random.nextInt(2)){
case 0:
view1.startAnimation(move);
break;
case 1:
view2.startAnimation(move);
break;
case 2:
view3.startAnimation(move);
break;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.