如何在ImageView而不是viewflipper中依次加载图像?

时间:2011-11-29 05:22:09

标签: android viewflipper android-imageview

我的项目是显示所选文件夹中图像的幻灯片。

我使用ViewFlipper完成了项目。我遇到的问题是将更多图像加载到viewflipper时的内存问题。如果文件夹包含超过15张图像,我会收到强制关闭错误。

Bitmap mBitmap=BitmapFactory.decodeFile(ImageList.get(i));
    image.setImageBitmap(mBitmap);

    viewFlipper.addView(image);
    System.gc();

    }
    viewFlipper.startFlipping();

如何解决此“内存不足”错误,还有其他解决方法吗? 我听说我们可以使用单个图像视图,只是在运行时更改图像。有关如何开始的任何指示? 我还需要设置图像更改之间的时间间隔。

编辑:使用ImageView而不是viewflipper,现在我可以显示单个图像。如何在5秒钟后更改Imageview中的图像?我在onCreate中实现的代码是:

 ImageView imgView01 = (ImageView) findViewById(R.id.imageView1);  
            File dir = new File("/sdcard/WallpapersHD/");
             File file[]=dir.listFiles();

             for (int i=0;i<file.length;i++) {


                 Drawable d = (Drawable) Drawable.createFromPath(file[i].toString());


                 imgView01.setImageDrawable(d);

2 个答案:

答案 0 :(得分:1)

每当您展示新的Bitmap时,请在上一张图片上调用recycle()。这将释放内存空间,因此不会出现与位图关联的窗口泄漏错误。

答案 1 :(得分:0)

如果您要使用单个ImageView,则必须使用postdelayed()handlers()

onCreate()

中使用此方法
private Runnable mUpdateTimeTask = new Runnable() {
    public void run() {

        imageView.removeCallbacks(mUpdateTimeTask);
        imageView.postDelayed(this, 1000);
        imageView.setBackgroudRsource(R.drawable.urImage);

    }
};

现在在需要时调用这些方法,

    imageView.removeCallbacks(mUpdateTimeTask);
    imageView.postDelayed(mUpdateTimeTask, 1000); //1 sec delay to change images