setBackgroundResource()与setImageBitmap()以及setBackground()的使用
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)); 这样既可以节省内存,又可以拉伸整个手机屏幕
setBackgroundResource()与setImageBitmap()以及setBackground()的使用相关推荐
- Android开发万能Utils(工具大全)
AndroidUtils Android开发不得不收藏的Utils 之前写这篇文章主要是项目应用到的Utils,发现已经有一个更全面的开源库总结,所以还是非常震惊可以总结的这么全面,在此我准备重新梳理 ...
- Fragment管理工具类
Fragment相关→FragmentUtils.java→Demo addFragment : 新增fragment removeFragment : 移除fragment replaceFragm ...
- 分享一个整理了很多Android开发工具类的链接AndroidUtilCode
https://github.com/Blankj/AndroidUtilCode API Activity相关→ActivityUtils.java→Demo isActivityExists : ...
- Android工具类blankj
开发人员不得不用的工具这里几乎都已经总结,在这里面很好的一个库. 地址:https://github.com/Blankj/AndroidUtilCode Gradle: compile 'com.b ...
- AndroidUtilCode 介绍和使用
AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发效率,如今它主要包括两部 ...
- AndroidUtilCode 最强大的工具类
一.前言: AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发效率,如今它主 ...
- Android公共工具库使用说明文档
Android公共工具库 1.集成方法 (1).在工程的build.gradle中添加 allprojects {repositories {...maven { url 'https://www.j ...
- Android开发人员的代码速查字典
2019独角兽企业重金招聘Python工程师标准>>> 为方便查找,已进行大致归类,其目录如下所示: Activity相关→ActivityUtils.java→Demo isAct ...
- Android Studio常用API
API 银行卡管理 → BankCheck checkBankCard : 校验银行卡卡号是否合法 getBankCardCheckCode: 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验 ...
- Android最实用的工具类框架——AndroidUtilCode
AndroidUtilCode是一个功能强大且易于使用的Android库.该库封装了Android开发中经常使用的具备完整演示和单元测试的功能.经过使用其封装的API,能够大大提升开发效率.该程序主要 ...
最新文章
- 几个常用的宏:likely和unlikely __raw_writel
- shtml与php的区别,htm,html.shtml区别
- java comparator_Java基础之String漫谈(二)
- linux加密框架 crypto 算法管理 - 算法查找接口 crypto_larval_lookup
- Egg框架入门教程合集之插件/工具/教程/专栏/开源项目
- python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出...
- DataTable数据集动态构造Table表结构
- 46. Define non-member functions inside templates when type conversions are desired.
- 学习笔记-关于pf标志位
- 动态视频壁纸多功能工具箱微信小程序源码,支持外卖CPS和流量主
- 【软件推荐】电脑控制手机软件Scrcpy
- NPN和PNP三极管搭建推挽电路实验
- 宏碁暗影骑士擎2022-重装系统-检测不到硬盘
- Windows socket之IOCP实例----IOCP开发驾照理论考试系统
- fullPage的简单使用
- selenium基本知识点+浏览器隐私模式
- tensorflow 1.10下Mask RCNN实现自己数据集
- 此iphone尚未备份显示未连接服务器,iPhone出现尚未备份的提示是怎么回事 提示取消方法...
- Python汉英/英汉翻译(百度API/有道API)
- FME学习资料……new
热门文章
- 零基础CSS入门教程(7)——CSS外联写法
- 物理地址是怎么确定的?以8086为例
- 疫情后为提高免疫力和健康对红参需求大幅上升;辉瑞与辉凌就前列腺癌创新药注射用醋酸地加瑞克达成战略合作 | 医药健闻...
- 游戏设计---游戏中战斗力计算方法(整理)
- opencv-python Shi-Tomasi角点检测和特征追踪
- [转]通过路径直接打开时地图时报错的解决方法
- Flex + BlazeDS 学习笔记 (一) --- BlazeDS的功能原理及配置实例
- xp 安装IPv6后,无法上网
- 在线文档 - Google 文档的数据协议设计
- 什么是monitor