在android中创建幻灯片

时间:2013-11-18 17:33:00

标签: java android imageview

我正在创建一个应用程序,用户可以通过单击特定按钮开始幻灯片显示(自动播放)图像。我已经开始了一个线程,在1秒后,新的图像被设置到我的imageView。问题是我的应用程序停止响应并在几秒钟后崩溃。

请检查我的代码并帮助我解决此问题。 (变量被正确初始化)

 playThread = new Runnable() {

        @Override
        public void run() {
            synchronized (this) {
            for (int i=pos;i<mImageIds.length;i++){
            //pos++;

            selectedImage.setImageResource(mImageIds[i]);

            try {

                wait(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }}
        }};

    play.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            runOnUiThread(playThread);



        }   
    });

}
应用冻结时,我的logcat!

enter image description here

1 个答案:

答案 0 :(得分:1)

runOnUiThread()方法用于更新用户界面。任何其他逻辑不应该发生在那里。所以我建议这样的事情:

Thread t = new Thread() {
    for (int i=pos;i<mImageIds.length;i++){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                selectedImage.setImageResource(mImageIds[i]);
        }};);
    try {
        wait(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}};

play.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        t.start();
    }   
});

请注意,我没有测试此代码。