Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-使用ImageView显示一系列图像_Android_Image_Timer_Imageview_Series - Fatal编程技术网

Android-使用ImageView显示一系列图像

Android-使用ImageView显示一系列图像,android,image,timer,imageview,series,Android,Image,Timer,Imageview,Series,我尝试使用计时器在单个图像视图中显示一系列png图像,例如每1秒更改一次图片 应用程序不断崩溃,这是我的代码,请帮助。 main.xml中有ImageView,出于某种原因,我无法在此发布完整的xml文件。无论如何,它只是一个标准的main.xml,在线性布局中有额外的ImageView public class AniImgTest extends Activity { ImageView iv; public int i=0; Timer timer = new T

我尝试使用计时器在单个图像视图中显示一系列png图像,例如每1秒更改一次图片

应用程序不断崩溃,这是我的代码,请帮助。 main.xml中有ImageView,出于某种原因,我无法在此发布完整的xml文件。无论如何,它只是一个标准的main.xml,在线性布局中有额外的ImageView

public class AniImgTest extends Activity {

    ImageView iv;
    public int i=0;
    Timer timer = new Timer();  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       this.iv=(ImageView)findViewById(R.id.imageView1);
       timer.scheduleAtFixedRate(new TimerTask(){
            @Override
            public void run() {
                Log.v("","myDebug "+i);
                if(i<2)    
                    i++;
                else
                    i=0;

                switch(i){
                case 0:iv.setImageResource(R.drawable.a1); 
                    break;
                case 1:iv.setImageResource(R.drawable.a2); 
                    break;
                case 2:iv.setImageResource(R.drawable.a3); 
                    break;
                }

            }

    }, 0, 5000);

    }
} 

您的任务运行在与主线程不同的线程上,因此它无法更改GUI并导致崩溃。用于在主线程上执行这些任务

还有一件事是不相关的,但是…,而不是:

if(i<2)  
    i++;
else
    i=0;
switch(i){

使用此代码块更改UI组件

     AniImgTest.this.runOnUiThread(new Runnable() {

            public void run() {

                // change your image here.
            }
        });

您应该添加stacktraceHi a380,欢迎使用stackoverflow。您也可以添加代码和xml内容,但需要将其标记为代码。请参见文本编辑框上方的选项栏,或者标记代码/xml并按ctrl+k
     AniImgTest.this.runOnUiThread(new Runnable() {

            public void run() {

                // change your image here.
            }
        });