Android 图片失真的原因

这是我写的第一篇博客,希望能帮助一些刚入门的朋友,也是对自己的知识点的梳理和强化,一起进步!

在Android开发的过程中,很多人都会遇到应用图片失帧的情况,我们就来谈谈图片为什么会失帧?以及如何去避免?

原因就是当我们的手机的分辨率大于我们图片的分辨率的时候,这个时候图片就会被伸展(插入像素)造成图片失帧。其实事实上不仅仅是手机的分辨率大于图片的分辨率这种情况,当手机分辨率小于图片分辨率的时候也会出现图片压缩(释放像素)而造成的模糊。
要了解为什么显示器和图片的分辨率不一致时,就会造成图片的伸缩(还有到底是什么原因导致它的伸缩下面会讲到),进而导致图片变模糊。那么我们就先来看看什么是分辨率。大家去买相机的时候可能更多的提到的是图片的像素,说这个相机拍出来的像素高,这个相机好。其实更准确的来说像素不是唯一决定我们图片清晰度的因素,而是受像素和图片的大小这两个因素所影响,说到底就是分辨率在影响一张图片的清晰度。它们三者的关系就是:像素px/图片的大小(英寸)=分辨率,分辨率越高,图片就越清晰,而并不是我们常说的像素越高图片就越清晰,试想当一张图片的像素很大的时候,而图片的size也很大的时候,它未必就比一张像素低的图片清晰。经过科学研究,一般分辨率达到72(每英寸72px)我们的眼睛就能够看到一张比较清晰的图片。我们可以将图片理解成由一个个相同大小的网格(一英寸大小)所组成,每个网格中都存放着相同数量的像素(分辨率)。目前市场上主流的手机屏幕分辨率有:640*360px,800*480px,960*640px(宽和高方向上的像素数一般是以4/3的比例),我们再根据各个手机的大小就可以很清楚的算出某种型号手机的分辨率。
在了解了分辨率这个概念后我们就很容易理解了,当图片的分辨率高于手机的分辨率时,图片的每一个网格就会释放一些像素,因为固定单位(英寸)大小的手机存放不了这么多的像素,只能释放,那么图片自然会模糊,我们会看到一张锥齿状的图片。而当图片的分辨率小于手机的分辨率的时候,图片就会自动插入补全像素,这个时候图片往往看起来很大,模糊不清。
了解了手机分辨率与图片分辨率的关系后我们再来聊聊我们程序员在开发的过程中如何去避免由于分辨率问题而造成给客户视觉上的影响。
大家都知道android应用开发的图片存放的位置有这么几个文件夹,ldpi,mdpi,hdpi,xhdpi,xxhdpi...那么我们就会思考为什么android给了我们这么多文件夹去存放图片,它们的区别又是什么。原来android本身有它的内部选择机制,简单来说,系统会根据手机密度(分辨率)去到不同的文件夹选择不同分辨率的图片,可以看出,这些文件夹分别存放了不同分辨率的图片,以供我们手机到最适配自己分辨率的文件夹中挑选图片,这样才不会造成图片的模糊不清。从字面上就可以看出ldpi指低分辨率的图片:一般为120,mdpi为中等分辨率的图片:160,hdpi高分辨率图片:240,xhdpi:320,xxhdpi:480;所以如果你单单将所有图片存放在同一个文件夹中,那么自然不能适配所有的手机,如果屏幕的密度大于你存放图片文件夹的密度,那么手机会先去最适配自己的文件夹中寻找,寻找不到再考虑其他文件夹。所以为了能够适配我们所有的手机,最好的办法就是在所有的文件夹中都存放不同分辨率的图片,这样系统就会对应地去寻找最适配自己的图片,当然,这也会造成一个很大的麻烦,就是如果一个应用中的图片很多,而图片本来就很占内存,那么就会大大增大一个应用的大小。那么我们该怎么办了,我们通常会根据目前主流屏幕的密度去选择最适合的文件夹存放图片,现在一般都存放到hdpi里面,这样即使与手机分辨率不一致,但由于误差较小,所以也不会太明显。下一章我将为大家详细讲述一下具体该如何去适配不同分辨率的手机。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值