【问题标题】:I want to do a TransitionDrawable transition multiple times using xml transition我想使用 xml 转换多次执行 TransitionDrawable 转换
【发布时间】:2018-08-18 07:58:03
【问题描述】:

这里我的转换和反向转换只发生一次而不是 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);
        }
    }
}

【问题讨论】:

    标签: android android-transitions


    【解决方案1】:
    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();
        }
    

    在某个地方调用上面的函数。

    【讨论】:

    • 但是给定的解决方案,使得转换和反向转换只发生一次
    • @GokulkrishnaM 请注意 onfinish 方法,它再次调用 repeat()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2014-06-09
    相关资源
    最近更新 更多