您的位置:首页 > 其它

setBackgroundResource()与setImageBitmap()以及setBackground()的使用

2016-10-19 14:44 951 查看
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)); 这样既可以节省内存,又可以拉伸整个手机屏幕
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: