首页
学习
活动
专区
工具
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、避免创建不必要的对象 对象创建永远不是免费的,虽然每一个的代价不是很大,但是总归是代价的不是吗?

    61820

    深入探索 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.1的App也不是想用就能用的。可以将不显示透明度的图片转换为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

    89040

    高性能图片优化方案

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

    91230

    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

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

    索引色 & 直接色 索引色: 索引颜色是一种以有限的方式管理数字图像颜色的技术,以节省计算机内存和文件存储,同时加速显示刷新和文件传输。...矢量图是通过多个对象的组合生成的,对其中的每一个对象的纪录方式,都是以数学函数来实现的,也就是说,矢量图实际上并不是象位图那样记录画面上每一点的信息,而是纪录了元素形状及颜色的算法,当你打开一幅矢量图的时候...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.2K20

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

    缺点 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 而不是设置他的

    93620

    Android App瘦身实战

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

    1.7K80

    移动端 Web 渲染解决方案

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

    3.6K40

    你必须要懂的APK瘦身知识

    Guetzli的使用可以参见我之前写的博文https://www.jianshu.com/p/565e944bb594 使用WebP文件格式 定位Android 3.2(API级别13)或更高级别时 ,...您也可以使用WebP文件格式来制作图像,而不是使用PNG或JPEG文件。...压缩效率极高,仅为PNG格式的12%。惊喜不惊喜。。。 使用矢量图形 您可以使用矢量图形来创建与分辨率无关的图标和其他可伸缩媒体。使用这些图形可以大大减少您的APK足迹。...矢量图像在Android中表示为VectorDrawable对象。通过一个VectorDrawable对象,一个100字节的文件可以生成一个与屏幕尺寸一致的清晰图像。...但是,系统渲染每个 VectorDrawable对象需要很长时间,而较大的图像需要更长的时间才能显示在屏幕上。因此,只有在显示小图像时才考虑使用这些矢量图形。

    76230

    关于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
    领券