我的项目是显示所选文件夹中图像的幻灯片。
我使用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);
答案 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