Android屏幕适配(三)

在看到本文之前,如果读者没看过笔者的前文Android屏幕适配知识Android屏幕适配(二),请先翻阅。

三、自动拉伸位图详解

.9图的使用注意事项:
1、在图的L边和U边选取伸缩点时,要注意所选择的伸缩点在水平线上(L边的点)和垂直线上(U边的点)不能经过“不想改变的图案”,否则图案将会被伸缩变形。
2、要想图案的垂直位置在伸缩后不发生改变,则需要在L边以图案为中心轴,上下各取一个点。若想水平位置在伸缩后不发生改变,则需在U边进行相同的操作。
3、在L边和T边上选取了点,即会对L边所选取的点的水平线进行伸缩,U边也类似。值得注意的是,选取的点的数量越大,伸缩效果会随数目的增加而翻倍,在做位置对称时尤其要注意。
4、R边和B边的画线,是调整内容区域的padding属性,控制内容区域与各边的距离。值得注意的是,这个调整可能会因padding属性调整过度,导致内容无法显示在窗口中,而在Android Studio中的预览窗口是无法正确显示.9图的实际效果,需要实际运行查看。

支持各种屏幕密度:
1、使用非密度制约像素(dp、sp)
即使使用dp为单位,但由于各种设备的dp总数不一样,在显示上也会造成细微的差别。为了解决以上问题,可自定义资源文件,自定义单位长度,均分设备像素。
以分辨率为480*320的设备为例,把纵向像素划分为480等份:

<?xml version="1.0" encoding="utf-8">
<resources>
<dimen name="y1">1.0px</dimen>
...
</resources>

以分辨率为480*320的设备像素划分为基准,即把横向像素划分为320等份,把纵向像素划分为480等份。
再看看分辨率为1920*1080的设备例子,把横向像素划分为320等份:

<?xml version="1.0" encoding="utf-8">
<resources>
<dimen name="x1">3.37px</dimen>
<dimen name="x2">6.75px</dimen>
...
</resources>

因此,可统一用x1x320,y1y480来代替原来的dp单位,实现全适配。
以Android Studio为例,分辨率为480*320的资源文件应放在res/values-480x320文件夹中,同理分辨率为1920*1080的资源文件应放在res/values-1920x1080文件夹中。其中values-480x320是分辨率限定符。

值得注意的是,为了实现全适配,在values文件夹中,应添加默认的资源文件,否则当设备找不到对应的资源文件时,就会报错。

<?xml version="1.0" encoding="utf-8">
<resources>
<dimen name="x1">1.0dp</dimen>
<dimen name="x2">2.0dp</dimen>
...
</resources>

注意对应单位改为dp,而不同于上面的px。
这种方式的缺点,就是要为尽可能多的设备维护一套资源文件。

2、提供备用位图

把资源图片按照2:3:4:6:8比例进行放缩,分辨放在drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi文件夹中。

为什么要这么做?读者可以做一个测试,如果只用一张资源图片,依次把资源图片放置在以上文件夹中,观察Android Studio中Memory的显示变化。

会发现运行APP所占的内存会产生变化,举个例子:
如果现在运行在xxhdpi的设备上,且资源图片放置在drawable-xxhdpi中,资源图片会占用内存7.8M(视具体图片而定),而把资源图片放置在drawable-mdpi中,资源图片会占用内存71.1M。

前面已经提到,mdpi资源图片:xxhdpi资源图片 = 2:6 = 1:3的关系,而占用的内存比大约为:12:32 = 1:9,由此可知,不提供备用位图,会因为图片的伸缩适配问题,造成占用内存的增大。

因此,笔者建议读者尽可能地按比例进行切图,以减少手机运行APP的压力

实施自适应用户界面流程:
1、确定当前布局(根据resources的bool判断)
2、根据当前布局做出响应
3、重复使用其他活动中的片段(对Fragment进行复用)
4、处理屏幕配置变化(如平板从横向变竖向,其Activity需重新跑一次生命周期,以切换成新的布局)

关于高清设计图尺寸:
优先设计高分辨率的原图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容