关于Android屏幕适配中使用多个dimens的遇到的问题

我相信大家在android开发中,肯定会遇到一个问题,那就是屏幕适配问题,通常我们做app只需要适配各种类型的手机就OK了,最近公司要求把pad上的app适配到手机上,这个有点麻烦,所以着重研究了一下。

基本概念:dp、sp、px、dpi、density

  • dp:最常用的长、宽、margin、padding等的单位
  • sp:字体的单位,和dp差不多,区别是如果字体使用的sp为单位,那如果你手机字体调大了,那你app的字体会随之变大,如果用dp则不会变化。
  • px:像素
  • dpi:dots per inch,即每英寸上有多少个像素,也就是屏幕密度,具体计算下面写说
  • density:density=dpi/160

dp和px转换

px=dp*(dpi/160)

计算dpi、density

以5.5寸1920 * 1080的手机为例:

5.5寸是指手机对角线的长度,分辨率是1920 * 1080,也就是知道长像素是1920,宽像素是1080,那么对角线多长呢,其实就是求斜边的长度: 1920^2+1080^2=2202^2

所以 dpi=2202/5.5=400

(哎呀,有点啰嗦了)

需要注意的 dp是不管你手机密度有多大,它的物理尺寸是不变的,就是说,比如一个图片设置大小100dp*100dp,那它在dpi为320的手机上就占 200px * 200px,如果是dpi=400的手机上,那就占250px * 250px,那么你在屏幕上看到图片的大小是没有变化的

(我相信做android开发,大家对这些应该就很熟悉了,就不详细写了,有不清楚的请自行学习,哈哈)

说说适配的事


1.使用相对布局

我这相对布局的意思,不只是使用RelativeLayout,还有使用LinearLayout中的weight。(插一句,在相同层级的情况下,推荐使用LinearLayout,如果可以减少层级,则使用RelativeLayout,但是如果使用了weight,LinearLayout也就失去了它的优势,和相对布局一样需要二次计算了)。

杜绝使用绝对布局! 我相信现在应该没有人用绝对布局了吧

在写布局的时候,就应该考虑到屏幕大或者小,显示会不会有问题。多想一下,很重要

我觉得只要布局写的好,基本可以解决90%的适配问题,当然这也是要修炼内功,才能运用顺畅的。(写的多就有经验啦)

2.生成各种尺寸的dimens

具体如何在values生成各种尺寸的dimens.xml,请参考下面链接
http://blog.csdn.net/hnzcdy/article/details/50628993

运行结果下图:

dimens.png

因为手机尺寸太多,所以有时候,我们不得不在不同屏幕大小,使用一些不同的值,这个时候用dimens就很方便了。

不过在这里,我主要是说,sw240dp是啥意思,以及不同的手机具体使用哪个dimens。具体怎么使用、生成,看上面那篇文章就可以啦。

sw:small width,最小宽度,即不管手机是横屏还是竖屏,屏幕可展示的最小边,比如1920*1080,那最小就是1080px。

那么怎么什么手机用什么dimen呢?怎么算呢?

举例说明:

  • 还是以1920*1080 5.5寸的手机举例(这种手机目前比较多)
  • 这种手机呢,dpi是400,denity是2.5,就是1dp=2.5px,(前面算的)
  • dimens是按着最小边大于哪个值就找哪个值
  • 那它应该用哪个dimens呢?1080/2.5=432,按着上图我们配置的,432>360,432<480,所以,最终使用的是sw360dp的dimens.xml
  • 在320dp和480dp之间,有很多手机,所以我们可以把这个区间分的细一点,比如320、340、360、380、400,这样适配会更好点

有人可能会疑惑,为啥要算的这么麻烦呢,因为sw360dp,说的是最小边大于360dp就用这个dimens,但是我们知道手机分辨率是像素,是px,所以要换算一下

备注一下,使用dimens相当于是等比缩放,自己可以在DimenTool中配置缩放比例

3.关于适配的感受

其实我觉得,要是想有好的用户体验,pad和手机最好还是两套设计,毕竟两者交互方式是有很大区别的,单纯移植肯定体验比较差。简单一点呢,就把一些比较明显不合适的地方,写两套布局,不同尺寸使用不同的布局。

写的有点乱,先这样记录一下。

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

推荐阅读更多精彩内容