我想使用xml transition多次进行TransitionDrawable过渡

时间:2018-08-18 07:58:04

标签: android android-transitions

这里我的转换和反向转换只发生一次而不是10次,你能告诉我我错了吗??

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        for(int i=0;i<10;i++)
        {
            Resources res = getApplicationContext().getResources();
            Drawable background[] = new Drawable[2];

            background[0] = res.getDrawable(R.drawable.shapes);
            background[1] = res.getDrawable(R.drawable.large_shape);
            final TransitionDrawable transition = new TransitionDrawable(background);
            ImageView imgview = findViewById(R.id.transitimage);
            imgview.setImageDrawable(transition);

            Runnable r1 = new Runnable() {
                @Override
                public void run() {
                    transition.startTransition(2000);
                }
            };

            Runnable r2 = new Runnable() {
                @Override
                public void run() {
                    transition.reverseTransition(2000);
                }
            };

            Handler h = new Handler();
            h.postDelayed(r1, 0);
            h.postDelayed(r2, 2000);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

public void repeat() {
        new CountDownTimer(2000, 1000) {

            public void onTick(long millisUntilFinished) {
                if (i>9) {    // i is a field,its initial value equals 0
                    cancel(); // stop timer
                }
                if (flag) {
                    transition.startTransition(2000);
                } else {
                    transition.reverseTransition(2000);
                }
                flag = !flag;
                i += 1;

            }

            public void onFinish() {
                repeat();
            }
        }.start();
    }

在某些地方调用上述函数。