如何使用thread.sleep多次更改图像视图的alpha?

时间:2017-02-28 09:33:01

标签: java android multithreading

我正在尝试为我的游戏制作动画。我正在尝试制作一个在某些条件下会停止的硬币翻转动画。

到目前为止,我尝试在一种方法中多次更改图像视图,并使用thread.sleep来延迟图片之间的过渡。

使用12个不同的图像我现在正在尝试使第一个图像的alpha设置为0,第二个图像设置为1,第二个图像设置为0,第三个图像设置为1,等...

我目前正在尝试这样做的方法是将图像放在ImageViews数组中,然后按顺序调用它们。

    setContentView(R.layout.coin_flip_screen);

    for(int i = 0; i < 4; i++){

        headsTails[i].animate().alpha(0).setDuration(100);
        headsTails[i+1].animate().alpha(1).setDuration(100);
        try {
            Thread.sleep(100);
        } catch (Exception e) {

        }
    }

2 个答案:

答案 0 :(得分:0)

这应该解决它

    headsTails[i].animate().alpha(0).setDuration(100).start();

答案 1 :(得分:0)

final int size = imageView.length;
final int animTime = 300;
final Handler animationHandler = new Handler();
Runnable animationRunnable = new Runnable() {

    int i = 0;

    @Override
    public void run() {
        if(i == size-1){
            animationHandler.removeCallbacks(this);
            return;
        }
        imageView[i++].animate().alpha(0f).setDuration(animTime).start();
        imageView[i].animate().alpha(1f).setDuration(animTime).start();
        animationHandler.postDelayed(this, animTime);
    }
};

animationHandler.post(animationRunnable);

此代码将遍历数组中的所有图像视图,并在消耗完所有图像后自行停止。

animTime变量一起播放,直到获得完美的动画效果。理想情况下,它应该在300到500毫秒左右。

  

我个人不会使用imageview数组来创建此效果   它会耗尽记忆力。有许多更有效的方法   硬币翻转动画,你可以在有空的时候谷歌。