延迟切换图像

时间:2014-05-11 20:33:31

标签: android loops delay android-image

我希望我的应用能够延迟切换两张图片,比如说3秒钟。这是我以前的代码:

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

    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }

    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        @Override
        public void run() {
            ImageView image = (ImageView)      
 findViewById(R.id.imgView_dice0);
            image.setImageResource(R.drawable.dice_6);      
        }
    }, 3000);
}
....

这适用于切换图像一次。我尝试将图像更改放在两个方法中(并将R.drawable.dice_6替换为R.drawable.dice_1),这些方法被延迟调用,被循环包围。这不起作用,应用程序只显示一个相同的骰子。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

您应该在runnable中重新启动Handler.postDelayed以使其正常工作。

类似的东西:

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    private boolean useDiceOne;

    @Override
    public void run() {
        ImageView image = (ImageView)findViewById(R.id.imgView_dice0);
        if (!useDiceOne) {
         image.setImageResource(R.drawable.dice_6);
        } else {
         image.setImageResource(R.drawable.dice_1);
        }
        useDiceOne = !useDiceOne;
        handler.postDelayed(this, 3000);      
    }
 }, 3000);

useDiceOne将用于更改dice_1dice_6之间的图片 p.s缓存ImageView

为了使它更灵活(在你想要的时候停止它等)你可以在某处保存处理程序引用(以及runnable引用)并使用removeCallbacks