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)); 这样既可以节省内存,又可以拉伸整个手机屏幕
使用多分辨率图片设计[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)); 这样既可以节省内存,又可以拉伸整个手机屏幕
相关文章推荐
- imageView的.setBackgroundResource 、setBackground没有效果
- Android中EditView TextView (padding失效)使用setBackgroundDrawable或setBackgroundResource则xml中设置的 Padding失效
- bitmap和drawable的相互转化以及setImageResource(),setImageDrawable(),setImageBitmap()
- setBackground,setBackgroundColor,setBackgroundDrawable,setBackgroundResource的使用区别
- setImageResource与setBackgroundResource使用注意
- 对于bitmap和一些设置图片setImageResource()和setImagebitmap()方法减少内存使用的方法
- setBackground、setBackgroundColor、setBackgroundDrawable、setBackgroundResource的区别
- Android setImageResource与setImageBitmap的区别
- setBackgroundResource setImageResource等oom问题
- 简述setBackgroundResource、setBackgroundColor、setBackgroundDrawable的区别
- imageView..setBackgroundResource 没有效果
- 关于setImageState(int[] state, boolean merge)的解释以及使用方式
- setImageBitmap和setImageResource
- android setBackgroundDrawable setImageBitmap 区别
- android ImageView 赋值问题setImageResource和setImageBitmap
- mImageView.setBackgroundResource(R.anim.loading_anim);在studio中会报错
- setImageResource与setImageBitmap的区别
- setImageResource与setImageBitmap的区别
- setImageResource和setBackgroundResource的區別
- setImageResource和setImageBitmap详解。