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

Android:使用png而不是矢量图像时分配的内存过多

Android是一个开源的移动操作系统,广泛应用于智能手机、平板电脑和其他移动设备上。在Android开发中,使用png图像而不是矢量图像时可能会导致内存分配过多的问题。

矢量图像是使用数学公式描述的图像,可以无限缩放而不会失真。相比之下,png图像是一种位图格式,它使用像素点来描述图像,因此在不同分辨率的设备上显示时可能需要进行缩放,导致内存分配过多。

当Android应用程序使用大量的png图像时,会占用较多的内存空间。这可能导致应用程序在运行时出现内存不足的情况,从而影响应用程序的性能和稳定性。

为了解决这个问题,可以考虑以下几个方面:

  1. 使用矢量图像:矢量图像可以无限缩放而不会失真,因此在不同分辨率的设备上显示时不需要进行缩放,可以减少内存的占用。可以使用矢量图像格式如SVG(Scalable Vector Graphics)来代替png图像。
  2. 优化png图像:如果必须使用png图像,可以通过优化来减少内存的占用。可以使用压缩工具对png图像进行压缩,减小图像文件的大小。同时,可以使用工具如TinyPNG来减少png图像的颜色深度,从而减少内存的使用。
  3. 使用适当的图像加载库:在Android开发中,可以使用一些优秀的图像加载库来管理和加载图像资源,如Glide、Picasso等。这些库可以帮助开发者更高效地加载和显示图像,减少内存的占用。

总结起来,为了避免Android应用程序在使用png图像时分配过多的内存,可以考虑使用矢量图像、优化png图像以及使用适当的图像加载库来减少内存的占用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 性能优化最佳实践

5.4、资源压缩 压缩 PNG 和 JPEG 文件可以减少 PNG 文件大小,不会丢失图像质量。您可以使用这些工具: pngcrush,pngquant,或 zopflipng。...5.5、 使用 WebP 文件格式 使用 WebP 文件格式 可以使用图像 WebP 文件格式,不是使用 PNG 或 JPEG 文件。...可以使用 Android Studio 将现有的 BMP,JPG,PNG 或静态 GIF 图像转换为 WebP 格式。...5.6、 使用矢量图形 使用矢量图形 可以使用矢量图形来创建与分辨率无关图标和其他可伸缩 Image。使用这些图形可以大大减少 APK 大小。...因此,请考虑仅在显示小图像使用这些矢量 图形。 不要把 AnimationDrawable 用于创建逐帧动画,因为这样做需要为动画每个帧包含一个单独位图文件,这会大大增加 APK 大小。

1.4K10

聊聊有关SVG那些事儿

(SVG对CPU挑战比较大,不过对于现在手机来说,这点问题属于小意思了) 开发者使用成本问题 SVG并不是android支持标准资源格式,android资源框架自然不可能天然支持SVG资源加载...所以,我们得到了比PNG快上70%SVG矢量化资源 相对应优点背后,也存在着不可避免牺牲: 由于我们实现方式原因,启动进程每个SVG将额外消耗掉280us左右时间。...Hi,SVG 可能上面微信介绍大家有点懵,没关系,LZ也是一样懵,我们只需要了解如下几点即可: SVG优势相比PNG,SVG有着更好兼容性以及相比使用PNG,SVG体积更小; SVG并不是android...关于详细,请查阅:W3School官方 首先要解释下矢量图像以及位图图像矢量图象 SVG是W3C 推出一种开放标准文本式矢量图形描述语言,他是基于XML、专门为网络而设计图像格式。...Android矢量图,便是Vector,在Android中也被称为Vector Drawable。

1.3K40
  • 了解 Android 矢量图片格式:`VectorDrawable`

    位图 vs 矢量图 大多数图像格式(png、jpeg、bmp、gif 和 webp 等等)都是位图格式,这意味着它们将图像绘制为一个固定像素网格。...例如, Google I/O app 在 这次提交 中通过将一些 PNG 图标从位图转换成矢量图,节约了 482 KB。尽管听上去不是很多,但这仅仅是对小图像而言;更大图片(如插图)会节省更多。...矢量会保持图像结构,所以里面的单个元素属性可以发生改变被用来制作主题或动画。...因此我认为所有 APP 都应当使用矢量资源。 适应性 ? 由于格式性质,矢量在在描述一些矢量资源(如简单图标等) 非常有用。...Android 在受限制移动设备上运行,因此支持整个 SVG 规范并不是一个现实目标。 然而,SVG 包含一个 路径规范,它定义了如何描述和绘制形状。使用此 API,您可以表达大多数矢量形状。

    2.5K30

    Android系统性能优化

    4、压缩PNG和JPEG文件 您可以减少PNG文件大小,不会丢失使用工具如图像质量 pngcrush,pngquant,或zopflipng。...所有这些工具都可以减少PNG文件大小,同时保持感知图像质量。 5、使用WebP文件格式 可以使用图像WebP文件格式,不是使用PNG或JPEG文件。...可以使用Android Studio将现有的BMP,JPG,PNG或静态GIF图像转换为WebP格式。 6、使用矢量图形 可以使用矢量图形来创建与分辨率无关图标和其他可伸缩Image。...但是,系统渲染每个VectorDrawable对象需要花费大量时间 ,较大图像需要更长时间才能显示在屏幕上。因此,请考虑仅在显示小图像使用这些矢量图形。...编写高效代码有两个基本规则: 1、不要做你不需要做工作 2、如果可以避免,请不要分配内存 1、避免创建不必要对象 对象创建永远不是免费,虽然每一个代价不是很大,但是总归是代价不是吗?

    59420

    深入探索 Android 包瘦身(中)

    此外,当我们通过 shrinkResources true 来 开启资源压缩,资源压缩工具只会把无用资源替换成预定义版本不是移除。那么,如何高效地对无用资源自动进行去除呢?...使用矢量图片之后,它能够有效减少应用中图片所占用大小,矢量图形在 Android 中表示为 VectorDrawable 对象。...它 仅仅需100字节文件即可以生成屏幕大小清晰图像,但是,Android 系统渲染每个 VectorDrawable 对象需要大量时间,较大图像需要更长时间。...因此,建议 只有在显示纯色小 icon 才考虑使用矢量图形。(我们可以利用这个 在线工具 将矢量图转换成 VectorDrawable)。...2)、基于读取时间和内存考虑:针对于 没有进行压缩文件,系统可以使用 mmap 方式直接读取,不需要一次性解压并放在内存中。

    1.7K20

    Android性能优化(十)之App瘦身攻略

    可以考虑使用TinyPng、pngquant、ImageOptim等工具对图片进行压缩,这些工具可以减少PNG文件大小,同时保持图像质量。...可以使用矢量图形来创建独立于分辨率图标和其他可伸缩图片。使用矢量图片能够有效减少App中图片所占用大小,矢量图形在Android中表示为VectorDrawable对象。...CPU周期,但是两者之间内存消耗和性能接近; 矢量图主要用在色调单一icon。...Android 4.2.1+才支持显示含透明度WebP,因此最低版本小于4.2.1App也不是想用就能用。可以将不显示透明度图片转换为WebP。...; 对图片进行压缩; PNG转换JPG; 使用矢量图; 使用WebP; 资源混淆; 资源在线化; 7.3 So瘦身 在允许情况下,针对用户机型分布保留特定架构So; 7.4 7Zip压缩 使用7Zip

    1.7K30

    Android高级开发-APK极致优化

    SVG(Scalable Vector Graphics)可缩放矢量使用矢量图代替位图可以减小 APK 尺寸,因为可以针对不同屏幕密度调整同一文件大小,不会降低图像质量。...矢量图首次加载可能消耗更多 CPU 资源。之后,二者内存使用率和性能则不相上下。我们建议您将矢量图像限制为最大 200 x 200 dp;否则,绘制它可能需要耗费很长时间。...版本差异(具体参考官方文档) Android 5.0(API 级别 21)及更高版本会提供矢量图支持。...如果应用最低 API 级别低于以上版本,Vector Asset Studio 会将矢量图文件添加到项目中;另外,在构建,Gradle 会创建不同分辨率 PNG 光栅图像。...资源打包配置 Android Gradle还为我们 提供了一个resConfigs,它属于ProductFlavor一个方法,可以让我们配置哪些类型资源才被打包到Apk中,比如只有中文,只有hdpi

    1.2K40

    Android App包瘦身优化实践

    针对每种图片格式也有各类优化手段和优化工具。 使用矢量图片 可以使用矢量图形来创建独立于分辨率图标和其他可伸缩图片。...使用矢量图片能够有效减少App中图片所占用大小,矢量图形在Android中表示为VectorDrawable对象。...因此只有在显示小图像才考虑使用矢量图形。有关使用VectorDrawable更多信息,请参阅 Working with Drawables。...可以使用pngcrush、pngquant或zopflipng等压缩工具来减少PNG文件大小,不会丢失图像质量。...所有这些工具都可以减少PNG文件大小,同时保持图像质量。 pngcrush工具特别有效:此工具在PNG过滤器和zlib(Deflate)参数上迭代,使用过滤器和参数每个组合来压缩图像

    1.6K30

    如何评价性能优化?涵盖知识面太广?

    是因为需要接触知识实在是太多了, Android 是一个整体,牵一发动全身,不是说只懂一个模块就可以做好 下面这份资料是技术前辈们分享Android 性能优化所必须掌握知识,涵盖性能优化相关方方面面包含项目实战...image.png 三、内存优化 由于Android应用沙箱机制,每个应用所分配内存大小是有限度内存太低就会触发LMK(Low Memory Killer)机制,进而会出现闪退现象。...如果要对内存进行优化,就需要先搞懂java内存是如何分配和回收,关于这方面,可以重点参考下面的内容: Android应用内存泄漏定位、分析与解决策略 主要包含 内存抖动和内存泄漏 内存大户,Bitmap...内存优化 Profile内存监测工具 Mat大对象与泄漏检测 image.png 四、耗电优化 如果一个app使用很少,但是app耗电量却很高,这时候用户肯定想直接卸载这个app。...(1)Alarm Manager wakeup 唤醒过多 (2)频繁使用局部唤醒锁 (3)后台网络使用量过高 (4)后台 WiFi scans 过多 详细内容包含 Doze&Standby Battery

    88340

    常见图片格式了解 前言概念了解图片类型图片比较与场景应用一图胜前言总结引用 & 参考

    索引色 & 直接色 索引色: 索引颜色是一种以有限方式管理数字图像颜色技术,以节省计算机内存和文件存储,同时加速显示刷新和文件传输。...矢量图是通过多个对象组合生成,对其中每一个对象纪录方式,都是以数学函数来实现,也就是说,矢量图实际上并不是象位图那样记录画面上每一点信息,而是纪录了元素形状及颜色算法,当你打开一幅矢量时候...PNG是一种比较新图片格式,PNG-8是非常好GIF格式替代者,在可能情况下,应该尽可能使用PNG-8不是GIF,因为在相同图片效果下,PNG-8具有更小文件体积。...除此之外,PNG-8还支持透明度调节,GIF并不支持。 现在,除非需要动画支持,否则我们没有理由使用GIF不是PNG-8。...所以,只有在你不在乎图片文件体积,想要最好显示效果,才应该使用PNG-24格式。另外,PNG-24跟PNG-8一样,是支持图片透明度PNG-32 PNG32也是PNG直接色版本。

    1.1K20

    高性能图片优化方案

    例如:一张宽高为2048x1536图片,设置inSampleSize为4之后,实际加载到内存图片宽高是512x384。占有的内存就是0.75M不是12M,足足节省了15倍。...注意这个地方是核心,这个解析图片并没有生成bitmap对象(也就是说没有为它分配内存控件),仅仅是拿到它宽高等属性。...Android 8.0(Android O)及之后版本中Bitmap 像素数据内存分配又回到了 Native 层,它是在 Native 堆空间进行分配。...但是,内存依然不是无限,应用还是要受到手机内存限制,所以一定要注意这一点。...对于色彩简单,例如,一些背景之类图片,可以选择使用布局文件来定义(矢量图),这样就会非常节省内存了。如果包含透明度,优先使用 WebP 等格式图像

    84330

    Android – Drawable 详解

    - 具有可伸缩区域PNG图片,以允许适当调整大小 ⑤ Vector Drawables - 定义复杂基于XML矢量图像 下面让我们一一介绍它们使用方法 Shape Shape Drawable...可伸缩 Nine-Patch Image NinePatch是一个PNG图像,你可以在该图像中定义当View内容超出正常图像边界定义拉伸可伸展区域。...你PNG文件只需保存在drawable文件夹中以.9.png为扩展名,即可显示9-patch编辑器,不是普通图像编辑器。...这意味着使用基于矢量图像,在位图图像情况下,你只需要一个drawable file,不是每个屏幕密度drawable file。...运行时Vector Drawables 如果你在运行时使用 vector drawables或animated vector drawables,请确保使用AppCompatResource类不是普通

    5.4K50

    前端性能优化篇二:图片合理使用

    缺点 1 矢量图形和 Logo 等线条感较强、颜色对比强烈图像,人为压缩导致图片模糊会相当明显 2 不支持透明度处理,透明需要png处理 3 PNG-8 和 PNG-24 关键字:无损压缩,质量高...但实践当中,为了规避体积问题,我们一般不用PNG去处理较复杂图像。当我们遇到适合 PNG 场景,也会优先选择更为小巧 PNG-8。...它和本文提及其它图片种类有着本质不同:SVG 对图像处理不是基于像素点,而是是基于对图像形状描述。...svg特性 和性能关系最密切一点就是:SVG 与 PNG 和 JPG 相比,文件体积更小,可压缩性更强。 当然,作为矢量图,它最显著优势还是在于图片可无限放大不失真这一点上。...很多情况下设计师会给到我们 SVG 文件,就算没有设计师,我们还有非常好用 在线矢量图形库。对于矢量图,我们无须深究过多,只需要对其核心特性有所掌握、日后在应用时做到有迹可循即可。

    1.3K30

    实战PerfDog优化小游戏性能

    ) PSS - Proportional Set Size 实际使用物理内存(比例分配共享库占用内存) USS - Unique Set Size 进程独自占用物理内存(不包含共享库占用内存)...1.Android系统 会定时执行一次检查,内存达到某个值后,就会杀死相应进程,释放掉内存。...3.Allocation sampling - 内存信息采样,使用采样方法记录内存分配。此配置文件类型具有最小性能开销,可用于长时间运行操作。...由于篇幅原因,这里不过多介绍这些工具使用,网上有很多相关教程; 卡顿优化 我们通过PerfDog数据发现GPU压力很大,游戏来说,渲染画面久一般是drawcall过多,或者每次draw时间较长。...bones帧动画不是spine 动画 5.使用cacheAsBitmap,把矢量图在运行时以位图形式进行计算 降低帧事件开销: 1.不要DisplayObject,直接removeChild 不是设置他

    91320

    移动端 Web 渲染解决方案

    与保留模式相反,不保存呈现图形;要在每次需要新框架描述整个场景,开发人员需要重新调用所有必需绘图命令,不考虑实际更改(SVG 已知拥有“场景图”)。...与以前一样,因为 SVG 作为图像格式是可缩放,所以如果开发人员想要以更大比例使用图像,或者用户使用高 DPI屏幕,则可移植网络图形 (PNG) 要么会变得异常,要么需要更大形式文件来实现保真...根据 MSDN 以及 OpenVis会议 相关介绍,Canvas 对于小范围、位图、表现力强图形支持要好很多,并且在动态图像渲染上有更大优势 SVG 则对于大范围、静态矢量图形支持更好 WebGl...分析 目前来说,优先考虑使用矢量图形替换 png 位图,降低渲染成本 其次在矢量基础上尝试比较 Canvas 和 SVG 渲染效率。...在 AI 和 AE 合作上矢量图形很难对接。使用 png 导入 AE 进行制作。 这样直接导致之前 所说“假”矢量图,动画通过 SVG 实现,实际渲染元素还是位图。

    3.5K40

    Android App瘦身实战

    ,aapt在资源处理对上述文件后缀类型资源是不做压缩,那是不是可以修改它们压缩方式从而达到瘦身效果呢?...矢量图片 使用矢量图片能够有效减少App中图片所占用大小,矢量图形在Android中表示为VectorDrawable对象。...因此只有在显示小图像才考虑使用矢量图形。 WebP 如果AppminSdkVersion>=14(Android 4.0+)的话,可以选用WebP格式,因为WebP在同画质下体积更小。...可以使用pngcrush、pngquant或zopflipng等压缩工具来减少PNG文件大小,不会丢失图像质量。...true来开启资源压缩,资源压缩工具会把无用资源替换成预定义版本不是移除,如果采用人工移除方式会带来后期维护成本,这里笔者采用了一种比较取巧方式,在Android构建工具执行package

    1.7K80

    关于Android开发你必须要懂APK瘦身知识

    使用WebP文件格式 定位Android 3.2(API级别13)或更高级别 ,您也可以使用WebP文件格式来制作图像不是使用PNG或JPEG文件。...Android 4.0 (API level 14) 支持有损压缩WebP格式,Android 4.3 (API level 18) 开始支持无损透明WebP图像。...看下图: 压缩效率极高,仅为PNG格式12%。惊喜不惊喜。。。 使用矢量图形 您可以使用矢量图形来创建与分辨率无关图标和其他可伸缩媒体。使用这些图形可以大大减少您APK足迹。...矢量图像Android中表示为VectorDrawable对象。通过一个VectorDrawable对象,一个100字节文件可以生成一个与屏幕尺寸一致清晰图像。...但是,系统渲染每个 VectorDrawable对象需要很长时间,较大图像需要更长时间才能显示在屏幕上。因此,只有在显示小图像才考虑使用这些矢量图形。

    1.1K40

    Android Vector曲折兼容之路

    用Vector来实现,可能只有PNG几十分之一 使用简单,很多设计工具,都可以直接导出SVG图像,从而转换成Vector图像 功能强大,不用写很多代码就可以实现非常复杂动画 成熟、稳定,前端已经非常广泛进行使用了...从PNG到SVG 设计师 要从一般使用PNG图像转换到SVG图像,对于设计师来说,并不是一件难事,因为大部分设计工具(PS、Illustrator等等)都支持导出各种格式图像,如PNG、JPG,当然...6.png 使用Android Studio 利用Android StudioVector Asset,可以非常方便创建Vector图像,甚至可以直接通过本地SVG图像来生成Vector图像,如图所示...不是普通Activity。...这样做有一个非常好作用,就是将图像大小与图像分离,后面可以随意修改图像大小,不需要修改PathData中坐标。

    1.8K30
    领券