安卓图片适配

接着上一篇安卓适配详解之后,本篇文章介绍一下图片的适配,大致分为两个部分:

  1. deawable 文件适配
  2. .9图片的使用

drawable

首先根据设备的dpi建立相应的文件夹,放置不同大小的图片,如下图:
安卓图片适配_第1张图片

这里可以看出随着手机dpi的升高,根dpi可大致分为mdpi,hdpi,xhdpi,xxhdpi,xxxdpi文件夹,按照安卓官方的适配建议需要每个文件夹中都放置相对应的图片,这牙膏一个图片就会有多个,有的人可能认为这样会增大工作量,只使用一套图放置一个文件夹,这样减轻UI人员和开发人员的工作,但是这样会造成另一个问题,就是会造成内存问题,接下来我们就看看每个文件夹对内存的改变:首先我们准备一张图片,另外一台设备这里使用模拟器来实验,本次模拟器设置的是xxhdpi,运行结果如下:
安卓图片适配_第2张图片

下面开始将图片分别放入不同的文件夹运行,并检测此时的内存使用情况:

  • drawable 对用的内存 70.77 M
    这里写图片描述
  • drawable-mdpi 对用的内存 70.9 M
    这里写图片描述
  • drawable-hdpi 对应的内存 48.4 M
    这里写图片描述
  • drawable-xhdpi 对用的内存 39.52 M
    这里写图片描述
  • drawable-xxhdpi 对用的内存 27.76 M
    这里写图片描述
    从上面的每个文件夹中所使用的内存可以看出,只有所放的位置dpi与设备相同使用的内存是最小的,为什么会这样呢?因为安卓设备在查找图片时,会首先检查与设备相同的文件夹,如果没有会向下寻找,当找到时系统会认为这个图片是小的,而所需的图片会比这个大,就会自动放大这个图片,从而使用更多的内存,那么有的同学会问,小的不行大的行不行呢?这样的同学呢,只要再想一下就会发现系统会自动放大那就一定会自动缩小喽,按这个道理当系统在xxxhdpi中发现后,会 缩小图片从而内存会大雨27.76M,那事实呢,我们来验证一下吧:
    -drawable-xxxhdpi 对用的内存 34.17 M
    这里写图片描述
    这里可以看出内存确实会比xxhdpi的内存多,从而验证了我们的结论,所以那些一套图解决所有问题的开发者注意了,这样系统运行时会占更多的内存。

.9图片的使用

工具

首先来看看.9图片的制作,在之前或是一些使用Eclipse的开发者,需要进入安卓SDK下的tools文件夹下的制作.9的工具,而现在Android Studio 中已经植入了.9的制作,选中图片右击选择“create 9-Patch file”,这时会生成.9图片。
安卓图片适配_第3张图片
这里有两点需要注意的

  • 生成.9图片后要删除原有的图片
  • png的图片可以生成,如果是jgep格式的图片不可以

    制作

    了解.9图片的区域功能,.9图片可控制图片的拉伸区域,在自动缩放时会防止图片变形,.9图片另一方向控制内容显示区域,可以控制缩放或内容增多时也不会变形会改变布局,如下图:
    安卓图片适配_第4张图片
    具体控制范围如上图所示,下面通过一张图片具体说明,首先看看拉伸区域,我们在横向拉伸区域选中一点,图中紫色的线
    安卓图片适配_第5张图片
    这时如果图片出现横向拉伸,这时结果
    安卓图片适配_第6张图片
    这时看中间的云彩,左边被拉伸很长而右边没有变化,这是因为我们的设置让只能在左边我们选中的地方,那如果想让图片对称拉伸呢?就是在有面设置想用大小的拉伸区域:
    安卓图片适配_第7张图片
    此时的结果:
    安卓图片适配_第8张图片
    这时图片就是对称拉伸了,在开发过程中基本使用都是对称或中间区域,左边为纵向拉伸控制区域,具体的使用方法和横向拉伸区域一样,这里不再演示。
    有的同学可能会问为什么每张图片上都有颜色覆盖,因为我打开了显示内容区域,这里可以看出内容显示区域为所有区域,因为默认右边是全部选中的,仔细的同学会发现右边有一个登高的黑线。下面我们来具体看看内容显示区域,向左边和上边一样,底部时控制横向显示区域,右边是控制纵向内容显示区域,具体的内容区域为二者的交集。
    首先我们将纵向控制区域向下调整,如图:
    安卓图片适配_第9张图片
    此时的内容显示区域
    安卓图片适配_第10张图片
    下面我们将图片调成如下,此时底部和右边显示区域均为中间部分,那此时的内容显示为交集部分,即图中的红色方框:
    安卓图片适配_第11张图片
    到这里图片适配的两个方法就介绍完了,比较简单,估计每个从事开发的都已经很熟悉这些了,在此只是做一个整理!

你可能感兴趣的:(安卓图片适配)