使用handler将sdcard文件夹中的所有图像逐一加载到imageview中,但只显示一个图像



我正在尝试从SD卡文件夹图像中一个接一个地加载图像,并在几秒钟后使用处理程序,它们会自动更改,但不会更改其他图像。只显示一个图像

在这里,我把获取和设置图像的处理程序代码放在创建活动上

主页活动.java

final Handler imagehandler = new Handler();
                    Runnable runnable;
                    runnable = new Runnable()
                    {
                        int i=0;
                        @SuppressLint("SdCardPath")
                        public void run()
                        {   // slider image run


                            File dir = new File("/mnt/sdcard/images/");
                            File file[]=dir.listFiles();
                            for (int i=0;i<file.length;i++)
                            {
                                Drawable d = (Drawable) Drawable.createFromPath(file[i].toString());
                                imageslider.setImageDrawable(d);
                                imagehandler.postDelayed(this, 4000);

                          // for interval
                        }
                    };
                    imagehandler.postDelayed(runnable,10);
           } 

在此之前从Runnable中移除for循环将始终显示imageView中的最后一个图像。代替循环使用计数器显示图像,如:

 File dir = new File("/mnt/sdcard/images/");
 File file[]=dir.listFiles();
public static int count=0;
new Handler().postDelayed(new Runnable() {
                public void run() {
                     if(count<file.length){
                       Drawable d = (Drawable) 
                           Drawable.createFromPath(file[count].toString());
                       imageslider.setImageDrawable(d);
                        count++;  //<<< increment counter here
                     }
                    else{
                          // reset counter here
                          count=0;
                     }
                }
            }, 4000);

最新更新