1:直接用setBackgroundResource(R.drawable.img) 容易引起OOM问题,
使用多分辨率图片设计[hdpi,mdpi,ldpi,xhdpi]。UI图片分别设计hdpi,mdpi,ldpi,xhdpi等多种规格,这也是官方推荐的方式,
使用这种方式,还有好处就是可以降低峰值内存,优先避免内存溢出。在android中图片的加载会根据分辨率来自动缩放(而缩放的过程会额外消耗内存)2:用setImageBitmap(bp)来代替SetBackGroundResource(R.drawable.img);
代码
public Bitmap getBitmapStream(int id)
{
BitmapFactory.Options bmFactOpt = new BitmapFactory.Options();
bmFactOpt.inPreferredConfig = Bitmap.Config.RGB_565;//表示16位位图 565代表对应三原色占的位数
bmFactOpt.inInputShareable = true;
bmFactOpt.inPurgeable = true;//设置图片可以被回收
InputStream is = getResources().openRawResource(id);
Bitmap bitmap = BitmapFactory.decodeStream(is, null, bmFactOpt);//比decodeResource()节省内存
try
{
is.close();
} catch (IOException e)
{
Log.e("IOException:",e.getMessage());
e.printStackTrace();
}
return bitmap;
}
imageview.setImageBitmap(getBitmapStream(R.drawable.id));
3:setImageBitmap(bp)虽然节省内存,但不能拉伸,如果想再进行拉伸,可以用setBackground(Drawable);
Bitmap bp = getBitmapStream(R.drawable.pag03);
imageview.setBackground(new BitmapDrawable(this.getResources(),bp)); 这样既可以节省内存,又可以拉伸整个手机屏幕