android:background和setImageResource的杂记

图像视图ImageView的说明和使用 显示文本用到了文本视图TextView,显示图像则用到图像视图ImageView。由于图像通常保存为单独的图片文件,因此需要先把图片放到res/drawable目录,然后再去引用该图片的资源名称。比如现在有张苹果图片名为apple.png,那么XML文件通过属性android:src设置图片资源,属性值格式形如“@drawable/不含扩展名的图片名称”。 阅读详情

公司开发了一个apk,在新手引导页面用viewpager放了四个界面,每个界面都是一个图片。

开发过程中一直没有问题,上线之后突然有一个三星的用户说一运行就崩溃。

后来调试一下,note3果然运行就崩溃。报OOM错。

viewpager的页面里面都是imageview实现的

ImageView view = new ImageView(NoiceGuideUI.this);
 view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
 view.setBackgroundResource(R.drawable.guide_2);
 view.setScaleType(ImageView.ScaleType.FIT_XY);

实在想不通,上网查了一下原来setBackgroundResource是有问题的。

搜索的内容:

====================================================================================================================================

尽量不要直接使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 

因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。

如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常

另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应, 使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源, 否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。 


通过以下代码就可以避免OOm

/**
		 * 以最省内存的方式读取本地资源的图片
		 * 
		 * @param context
		 * @param resId
		 * @return
		 */
		private Bitmap readBitMap(Context context, int resId) {
			BitmapFactory.Options opt = new BitmapFactory.Options();
			opt.inPreferredConfig = Bitmap.Config.RGB_565;
			opt.inPurgeable = true;
			opt.inInputShareable = true;
			// 获取资源图片
			InputStream is = context.getResources().openRawResource(resId);
			return BitmapFactory.decodeStream(is, null, opt);
		}
然后将返回的bitmap设置给view============================================================================================================================


测试了一下果然是可以的。


半导体设备上位机开发:我的经验与新人指导 半导体设备上位机开发是一项复杂而富有挑战性的工作,需要扎实的技术基础和丰富的经验。如果你对半导体设备上位机开发感兴趣,欢迎随时与我交流,我会尽力帮助你! 阅读详情

相关推荐

从零上手HiAgent:构建能听懂指令的智能体框架实战指南

智能体(Agent)作为人工智能领域的重要范式,正从传统的预设流程自动化转向以目标驱动的自主规划与执行。其核心原理在于利用大语言模型(LLM)作为决策大脑,通过任务规划、工具调用与记忆机制,将模糊的自然语言指令转化为可执行的工作流。这一技术显著提升了人机协作的效率和自然度,其价值在自动化办公、数据分析与智能流程编排等场景中尤为突出。本文聚焦于HiAgent这一具体框架,深入解析其作为智能体开发平台的核心架构,涵盖规划器、执行器、工具集等关键组件,并提供从环境配置、自定义工具开发到复杂任务链构建的完整工程实践

weixin_29266007的博客 893

解决Android加载图片时内存溢出的问题

  尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的sou...

Devil不加V 783

ST-CNN实战:用Python实现交通流量预测(附完整代码)

本文详细介绍了如何利用时空卷积神经网络(ST-CNN)进行交通流量预测的实战过程。通过Python和PyTorch,从数据预处理、构建邻接矩阵,到ST-CNN核心模块的代码实现与模型训练,提供了完整的解决方案,帮助开发者掌握处理时空序列数据的核心算法。

rust6ferris的博客 926

Android View中Background加载的时间分析

关注微信号:javalearns   随时随地学Java 或扫一扫 随时随地学Java 对大多数Android的开发者来说,最经常的操作莫过于对界面进行布局,View中背景图片的加载是最经常做的。但是我们很少关注这个过程,这篇文章主要解析view中背景图片加载的流程。了解view中背景图片的加载(资源的加载)可以让我们对资源加载的过程进行一些优化,

342

如何把Excel的数据导入python?

Python数据分析——excl导入数据的简单方法(xlrd) 本文的初衷是发现网上很多Excel导入Python都没有结合具体Excel文档进行讲解,所以这篇文档将会呈现一个简单快速的Excel+Python的入门方法。 开发环境 Prerequisites: 在开始用Python导入Excel之前,要配置好自己的开发环境,最好有IDE(terminal也可)+安装相应的数据分析包。 IDE :pycharm,vscode,etc 数据分析包:matplotlib,xlrd,numpy,etc 导入数

qq_40783513的博客 7万+

C#---第十一课:对列表的各种操作,添加、删除、排序、列表长度、获取元素的索引、FirstOrDefault()、SingleOrDefault()、last()

1.添加元素 2.删除元素 (1)删除列表中指定的元素 (2)删除列表A中所有与列表B相交的元素---常规 (3)删除列表A中所有与列表B相交的元素---lambda 3.排序(正序、倒序) 4.获取列表的最大容量(长度)、已用容量 6.获取元素在列表中的位置(index) 7.判断某元素是否在列表List中 8.获取列表中第一个元素First() & FirstOrDefault() 9.获取列表中唯一元素Single() & SingleOrDefault() 10.获取列表中最后一个元素

Alien-Hu 3627

android view setbackgroundresource,解决Android加载图片时内存溢出的问题 setBackgroundResource setImageResource...

public static Bitmap readBitMap(Context context, int resId){BitmapFactory.Options opt = new BitmapFactory.Options();opt.inPreferredConfig =Bitmap.Config.RGB_565;opt.inPurgeable = true;opt.inInputShar...

weixin_42452642的博客 1206

手把手教你用smarteye搭建免费GB28181监控平台(含海康设备接入避坑指南)

本文提供了一份基于SmartEye搭建免费GB28181视频监控平台的实战指南。详细介绍了从服务器部署、GB28181协议核心配置,到海康威视等主流设备接入的完整流程,并重点分享了设备注册失败、无法预览等常见问题的深度排错方法,旨在帮助中小企业及开发者低成本实现多品牌监控设备的统一管理。

pz89012345的博客 326

Android图片setBackgroundResource和setImageResource的区别

Android图片setBackgroundResource和setImageResource的区别 网上对于这2个的区别大都是如下所示:setImageResource與xml中的src的屬性才是相匹配的,而setBackgroundResource是與xml中的background屬性相匹配的。 在显示效果上的区别: 如果ImageView的width和heigh

lqianq86的博客 1978

电影台词预测类型:NLP小样本多标签分类实战

电影类型预测本质上是短文本语义建模问题,核心在于从高度碎片化、低语义密度的台词(平均仅12.7词)中挖掘隐含的类型学编码规则。其技术难点在于:需应对省略主语、倒装、拟声词等非规范表达;处理Drama与Comedy等类型强共现的多标签耦合;并克服领域迁移障碍——维基文本预训练模型在台词上性能骤降0.11。解决方案聚焦RoBERTa微调、类型感知注意力机制与标签平滑策略,兼顾小样本鲁棒性与业务可解释性,广泛适用于影视元数据标注、智能推荐系统及NLP教学实践。

weixin_33309048的博客 288

[特殊字符] 2026终极实战:Python爬取得物App球鞋实时交易价格 —— 从签名破解到数据可视化全栈指南

价格敏感度:热门鞋款(如Air Jordan 1、Yeezy 350、Dunk SB)价格每分钟都在波动,短线套利空间巨大。稀缺性:限量发售、联名款、地区限定,导致供需关系实时变化。数据壁垒:得物App使用自研WMS签名算法设备指纹绑定动态请求头加密,是爬虫工程师的“练兵场”。本博客将手把手带你从零搭建一套生产级得物球鞋价格爬虫系统,涵盖:抓包与逆向分析(mitmproxy + Frida)签名算法逆向(Python复刻)设备模拟与心跳保活(ADB + uiautomator2)

2201_76125261的博客 1125

解决大屏手机上setImageResource()内存溢出

说明这个问题,首先来看一下实际的内存占用情况。 我们创建一个最简单的android应用,一个Activity,内容是一张图片,图片放在drawable-hdpi目录下。布局文件: android:layout_width="fill_parent" android:layout_height="fill_parent" android:background=

Struggles 5619

弥散圆以及最大弥散圆

1弥散圆的形成? 原本景物中的一点应该经过透镜本应该也是一点才对。但是因为离焦,球差的存在,最终成像会投影成一个光斑圆圈。越小越清晰,越大就互相干涉变得越模糊。 同时人们规定二零最大弥散圆,就是人眼能够感受清晰模糊的一个边界,直径大于它,感受到模糊;直径小于它,感受不到模糊。 下面分别是离焦(左),球差(右)。 2弥散圆大小怎么计算呢? ,f为焦距;<1> ,D为光圈有效孔径;<2> F=f/D; <3> 3条公式合并可得出: ...

camerall 3117

android:background和setImageResource的区别

开发了一个apk,在新手引导页面用viewpager放了四个界面,每个界面都是一个图片。 开发过程中一直没有问题,上线之后突然有一个三星的用户说一运行就崩溃。 后来调试一下,note3果然运行就崩溃。报OOM错。 viewpager的页面里面都是imageview实现的 ImageView view = new ImageView(NoiceGuideUI.this);

wuyou1336的博客 394

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

设置图片background、src的区别和各种设置方式的区别。

ImageView设置图片的方式有很多种 在xml里面设置 设置前景: android:src=”@drawable/xxx” 设置背景: android:background=”@drawable/xxx” 在java里面的设置方式 1.设置背景图片(background) 1.SetBackground(Drawable background) 其参数为一个Drawable对象,目的是设置v...

weixin_42046829的博客 1454

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

安卓开发——如何在代码中设置控件的background和src的内容

设置background(背景)的函数: imageview.setBackgroundReource(int resid) imageview.setBackground(Drawable background) imageview.setBackgroundColor(int color) imageview.setBackgroundDrawable(Drawable back

萌鼠喝酸奶的博客 6639

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

setImageResource与setBackgroundResource使用注意

有的时候调用该方法,今天纠结了一会,  我查看了一下 xml 原来是因为 xml中设置的是 src 不是 backgroud! 导致了imageView..setBackgroundResource 没有效果。 解决方案:       1 修改代码   改为imageView.setImageResource()       2 修改xml    讲 src 改为 backgrou

周云云的博客 1万+

setImageResource和setBackgroundResource的区别

它们的原理是: void android.widget.ImageView.setImageResource(int resId) void android.view.View.setBackgroundResource(int resid) 它们的区別是: setImageResource在xml中的src的属性才是相匹配的,而setBackgroundResource是在xml中的ba

Hot、Rock 711

android 代码 drawable,Android Drawable完全解析(一):Drawable源码分析(下)

昨天下班前,分析了View实例将Drawable作为背景绘制到屏幕上面的流程,今天继续分析Drawable在ImageView中的绘制流程!3:Drawable绘制流程3.3:Drawable在ImageView中的绘制流程ImageView使用Drawable的方式大体以下几种:在xml中直接设置android:background="@mipmap/voice"android:layout_w...

weixin_33201508的博客 545

ImageView的src和background一些我的理解。

android:src="" android:background="" android:backgroundTint="" android:backgroundTintMode="multiply"如果在xml文件夹中设置ImageView的时候: src: src和background我认为的区别在于:src更像是在ImageView中放入一张

Android_luosu的博客 1414

setImageResource和setBackgroundResource的區別

它們的原型如下:void android.widget.ImageView.setImageResource(int resId)void android.view.View.setBackgroundResource(int resid)區別是:setImageResource與xml中的src的屬性才是相匹配的,而setBackgroundResource是與xml中的background屬性...

weixin_30779691的博客 139

Android中用代码设置ImageView的src和background

代码设置ImageView的src: setImageDrawable(Drawable drawable); setImageBitmap(Bitmap bm); setImageResource(int resId); 代码设置ImageView的background: setBackgroundReource(int resid) setBackground(D...

weixin_33875564的博客 876

setImageResource与setBackgroundResource的区别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代.

m0_49241867的博客 1401
上一篇: JPush集成方案
下一篇: fragment杂记
dalancon
博客等级 码龄15年 189粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值