首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【编程基础】Android如何获取资源尺寸?

Android为了实现不同屏幕适配,经常会用到在不同dimen.xml文件对于同一dimen ID定义不同大小,然后在代码通过getDimension函数来获取,下面就来说说几种getDimension...getDimension()是基于当前DisplayMetrics进行转换,获取指定资源id对应尺寸。文档里并没说这里返回就是像素,要注意这个函数返回值是float,像素肯定是int。...getDimensionPixelOffset()与getDimension()功能类似,不同是将结果转换为int,并且偏移转换(offset conversion,函数命名offset是这个意思...)是直接截断小数位,即取整(其实就是把float强制转化为int,注意不是四舍五入哦)。...getDimension和getDimensionPixelOffset功能类似,都是获取某个dimen值,但是如果单位是dp或sp,则需要将其乘以density,如果是px,则不乘,并且getDimension

2.4K70

Android-Bitmap

答:我们需要先搞清楚一个概念:我们在电脑上看到 png 格式或者 jpg 格式图片png(jpg) 只是这张图片容器,它们是经过相对应压缩算法将原图每个像素点信息转换用另一种数据格式表示,以此达到压缩目的...所以,一张 png 或者 jpg 格式图片大小,跟这张图片加载进内存所占用大小完全是两回事。但图片在内存大小和Bitmap大小相同 1.2.问题二: 如何计算图片在内存大小?...image.png 也就是位于 res 内不同资源目录图片,当加载进内存时,会先经过一次分辨率转换,然后再计算大小,转换影响因素是设备 dpi 和不同资源目录 其实影响内存还有其他因素...,我们这里就不测试了,直接总结一下: (1):同一图片,在同一台设备,如果图片放在 res 内不同资源目录下,那么图片占用内存空间是会不一样,通常是drawable文件夹分辨率越高,内存越小...(2):同一图片,放在 res 内相同资源目录下,但在不同 dpi 设备图片占用内存空间也是会不一样

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

Android | 计算图片占用内存大小

Assets 资源文件 BitmapFactory.decodeStream(context.getAssets().open("android.png")); 例1: 格式为 png 。..._565; BitmapFactory.decodeStream(context.getAssets().open("android.png"),options); 如果将 png 图片使用 RGB_...drawable 系列目录图片文件,需要注意 dpi 类型影响 hdpi,比例是 1.5 此时图片宽度就是 205,高度 240 了。那么这个是如何计算出来呢?...所以,drawable 图片大小计算方式就是: 图片 / 所在drawable对应dpi比例 * 屏幕dpi。 raw 资源,该文件资源不会受到任何处理。...图片来源是 android 资源文件夹 这种情况下,系统会根据设备 dpi 值,以及 资源目录 dpi 值做一次分辨率转换,转换规律就是:图片宽 * (设备dpi / 对应资源目录 dpi)

3K40

Android 开发绕不过坑:你 Bitmap 究竟占多大内存?

内存占用 3.1 JpgPng 说到这里,肯定会有人会说,我们用 jpg 吧,jpg 格式图片不应该比 png 小么?...这确实是个好问题,因为同样一张图片jpg 确实比 png 会多少小一些(甚至很多),原因很简单,jpg 是一种有损压缩图片存储格式,而 png 则是 无损压缩图片存储格式,显而易见,jpg 会比...不过,抛开 Android 这个平台不谈,出图角度来看的话,jpg 格式图片大小也不一定比 png 小,这要取决于图像信息内容: JPG 不适用于所含颜色很少、具有大块颜色相近区域或亮度差异十分明显较简单图片...如果仅仅是为了 Bitmap 读到内存大小而考虑的话,jpg 也好 png 也好,没有什么实质差别;二者差别主要体现在: alpha 你是否真的需要?...RGB565 看到这个,我就看到了资源优化配置无处不在,这个绿色。。(不行了,突然好邪恶XD),其实如果不需要 alpha 通道,特别是资源本身为 jpg 格式情况下,用这个格式比较理想。

3.2K111

高性能图片优化方案

1.4 网络直接拉取图片直接通过网络请求将网络图片转化成bitmap在这将采用最原生网络请求方式HttpURLConnection方式进行图片获取。经过测试,请求8张图片,耗时毫秒值174。...1.5 加载图片流程搞清楚一个图片概念在电脑上看到 png 格式或者 jpg 格式图片png(jpg) 只是这张图片容器。是经过相对应压缩算法将原图每个像素点信息转换用另一种数据格式表示。...图片大小vs图片内存大小一张 png 或者 jpg 格式图片大小,跟这张图片加载进内存所占用大小完全是两回事。...肯定是不一样。xhdpi:240dpi--320dpi,xxhdpi:320dpi--480dpi,app设置图片如何hdpi查找?...url判断拦截资源条件,过滤非http,音视频等资源,这个是可自由配置缓存内容比如css,pngjpg,xml,txt等第三步,判断本地是否有OkHttp缓存数据,如果有则直接读取本地资源,通过url

74730

Android动态布局入门及NinePatchChunk解密

可是,考虑到一个场景:selector里面引用图片,不是打包时res目录资源,而是后台下发图片呢?类似场景下,我们能不能摆脱这类XML文件呢?...“蛋疼.9.PNG” .9.png图片Android开发来说,都不陌生。通常情况下,我们对于.9.png图片使用,只需要简单放到resource目录下,然后,当做普通图片来用就可以了。...一开始,当我想当然以为可以直接加载本地.9.png图片,用飞起时候,发现了Android Nine Patch一个大坑!!! “说好自动拉升了???”...而不是直接加载.9.png这种图片。 那么第一个思路就来了(参考引用),首先,我们先对.9.png执行一个aapt命令。...注释一样,这个NinePatch Chunk把图片x轴和y轴分成若干个区域,F区域代表了固定,S区域代表了拉伸。

29010

Android动态布局入门及NinePatchChunk解密

可是,考虑到一个场景:selector里面引用图片,不是打包时res目录资源,而是后台下发图片呢?类似场景下,我们能不能摆脱这类XML文件呢?...“蛋疼.9.PNG” .9.png图片Android开发来说,都不陌生。通常情况下,我们对于.9.png图片使用,只需要简单放到resource目录下,然后,当做普通图片来用就可以了。...一开始,当我想当然以为可以直接加载本地.9.png图片,用飞起时候,发现了Android Nine Patch一个大坑!!! “说好自动拉升了???”...而不是直接加载.9.png这种图片。 那么第一个思路就来了(参考引用),首先,我们先对.9.png执行一个aapt命令。...* / 正如源码,注释一样,这个NinePatch Chunk把图片x轴和y轴分成若干个区域,F区域代表了固定,S区域代表了拉伸。

2.4K81

安卓 Bitmap 和 Drawable 使用

还是 xxhdpi 可不能傻傻分不清楚哈) 和目标屏幕密度(所以同等条件下,红米在资源方面消耗内存肯定是要小于三星S6) recycle()方法 3.0开始,Bitmap 像素数据和 Bitmap...ColorDrawable Drawable 资源Android 应用中使用最广泛资源,它不仅可以使用各种格式图片资源,也可以使用多种 xml 文件资源。...当然直接使用图片资源没什么好说,我们主要是要研究下 Drawable 子类。...Drawable - 作为 Android 平下通用图形对象,它可以装载常用格式图像,比如GIF、PNGJPG,当然也支持BMP,当然还提供一些高级可视化对象,比如渐变、图形等。...技巧:EditText 在右侧添加删除图标 更换 radiobutton 图片在 xml 很好设置,但对于初学者如何在代码设置还是不容易找

1.1K10

Bitmap图片压缩,大图加载防止OOM

load-bitmap) 这两篇文章已经做了很明确指出了如何高效加载大图。...内存如果加载一张 500*500 png 高清图片.应该是占用多少内存? png 图片应该有alpha通道,所以 Bitmap.Config 是 ARGB_8888 。...[format,png#pic_center] 例如,如果您有一个可绘制位图资源,它在密度屏幕上大小为 48x48 像素,那么它在其他各种密度屏幕上大小应该为: 36x36 (0.75x) -...*4) ,因为 mdip 到 xxdpi 图片宽高分别会放大4倍; nodpi 目录资源被视为与密度无关,系统将不会对它们进行缩放。...0 压缩100%,100意味着不压缩; OutputStream stream) ;//写入压缩数据输出流; Bitmap.CompressFormat.PNG ,那不管第二个值如何变化,图片大小都不会变化

2.6K00

Android中一张图片占据内存大小是如何计算提问正文推荐阅读

最近封装了个高斯模糊组件,正好将图片相关理论基础也梳理了下,所以,这次就来讲讲,在 Android ,怎么计算一张图片在内存占据大小,如果要优化,可以哪些方向着手。...那么,就需要知道,一张图片大小是如何计算,当加载进内存时,占用空间又是多少? 先来看张图片: ? png.png 这是一张普通 png 图片,来看看它具体信息: ?...所以,我们需要搞清楚一个概念:我们在电脑上看到 png 格式或者 jpg 格式图片png(jpg) 只是这张图片容器,它们是经过相对应压缩算法将原图每个像素点信息转换用另一种数据格式表示,以此达到压缩目的...所以,一张 png 或者 jpg 格式图片大小,跟这张图片加载进内存所占用大小完全是两回事。你不能说,我 jpg 图片也就 10KB,那它就只占用 10KB 内存空间,这是不对。...我们来做个实验,分别从如下几种考虑点相互组合场景,加载同一张图片,看一下占用内存空间大小分别是多少: 图片不同来源:磁盘、res 资源文件 图片文件不同格式:pngjpg 图片显示不同大小控件

1.6K20

Android开发基础系列】图片专题

Android图片是以bitmap形式存在,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式:         图片长度x图片宽度..._565表示16位RGB位图,即R=5,G=6,B=5,它没有透明度,一个像素点占5+6+5=16位,2个字节;         我是用小米手机2s来测试sd卡取出一个照片,如下所示: bit...获取数字,可以0–100改变,这里出来log是:         可以看到,图片大小是没有变,因为质量压缩不会减少图片像素,它是在保持像素前提下改变图片位深及透明度等,来达到压缩图片目的...这里要说,如果是bit.compress(CompressFormat.PNG,quality, baos);这样png格式,quality就没有作用了,bytes.length不会变化,因为png图片是无损...如果将这些压缩后bitmap另存为sd,他们内存大小并不一样。         android手机图片所占内存大小和很多因素相关,计算起来也很麻烦。

15020

Android图片相关

一、概念区别 Bitmap - 称作位图,一般位图文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB8888。作为一种逐像素显示对象执行效率高,但是缺点也很明显存储效率低。...Drawable - 作为Android平下通用图形对象,它可以装载常用格式图像,比如GIF、PNGJPG,当然也支持BMP,当然还提供一些高级可视化对象,比如渐变、图形等。...他管理了每个画图工具字体、颜色、样式。 二、Android读取图片资源 Drawable目录 已将图片保存到drawable目录下,通过图片id获得Drawable或者Bitmap,此方式最常用。...drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } 2) 资源获取...肯定心里会想,放在哪一个都行,只要是在androidres目录下drawable中就行,系统会自己找到。

69630

一分钟让您APP支持AVIF图片

基于该编解码库 直接使用上述解码库,需要自行编译Android和iOS解码器产物,以及写一些JNI代码,如果您APP使用Glide、SDWebImage等图片库,还得再按照图片要求进行封装集成。...使用 Glide 加载图片 像普通jpg png图片那样加载图片即可,请参见 Glide 官方文档 Glide.with(context).load(url).into(imageView); 使用Fresco...使用 Fresco 加载图片 像普通jpg png图片那样加载图片即可,请参见 Fresco 官方文档。...使用 subsampling-scale-image-view 加载图片 像普通jpg png图片那样加载图片即可,请参见 subsampling-scale-image-view 官方文档。...(R.raw.avif)); 总结 总之就是数据万象AVIF SDK帮您封装了AVIF解码器、对Android iOS常用图片库生态也做了封装,真正让您一分钟就能将AVIF图片显示到APP

1.3K20

Android 点九图机制讲解及在聊天气泡应用

直接放在 res 目录 drawable 或者 mipmap 目录 放在 assert 目录 网络下载 第一种方式是我们最常用直接调用 setBackgroundResource 或者...而对于第二种或者第三种方式,如果我们直接去加载 .9.png,你会发现图片或者图片背景根本无法拉伸。纳尼,这是为甚么呢。下面,且听老衲慢慢道来。...Android 并不是直接使用点九图,而是在编译时将其转换为另外一种格式,这种格式是将其四周黑色像素保存至Bitmap类一个名为 mNinePatchChunk byte[] ,并抹除掉四周这一个像素宽度...因此,在 Android ,我们如果想动态使用网络下载点九图,一般需要经过以下步骤: 使用 sdk 目录下 aapt 工具将点九图转化为 png 图片 解析图片时候,判断是否含有 NinePatchChunk...* / 正如源码,注释一样,这个NinePatch Chunk把图片x轴和y轴分成若干个区域,F区域代表了固定,S区域代表了拉伸。

1.3K20

bitmap六种压缩方式,图片压缩

转载自:http://blog.csdn.net/harryweasley/article/details/51955467 android图片是以bitmap形式存在,那么bitmap所占内存,直接影响到了应用所占内存大小..._565 表示16位RGB位图,即R=5,G=6,B=5,它没有透明度,一个像素点占5+6+5=16位,2个字节 我是用小米手机2s来测试sd卡取出一个照片,如下所示: bit = BitmapFactory.decodeFile...获取数字,可以0–100改变,这里出来log是: 可以看到,图片大小是没有变,因为质量压缩不会减少图片像素,它是在保持像素前提下改变图片位深及透明度等,来达到压缩图片目的,这也是为什么该方法叫质量压缩方法...总结 以上就是5种图片压缩方法,这里需要强调,他们压缩仅仅只是对androidbitmap来说。如果将这些压缩后bitmap另存为sd,他们内存大小并不一样。...android手机图片所占内存大小和很多因素相关,计算起来也很麻烦。

2.6K20
领券