博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android - 多屏幕适配相关
阅读量:4625 次
发布时间:2019-06-09

本文共 1621 字,大约阅读时间需要 5 分钟。

 

1、基本概念

屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸)。android把屏幕分为以下4种:small,normal,large,extra large。

怎么判断?

屏幕密度(Screen Density) - 一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点)。相比起medium、high屏幕密度的设备,在一块确定大小的屏幕区域l密度为low的屏幕拥有的像素更少。android把屏幕密度分为4种:low,medium,high,extra high。

如何判断是ldpi,mdpi,hdpi?

方向(orientation) - 屏幕方向分为landscape(横屏)和portrait(竖屏)。

分辨率(Resolution) -  屏幕上的总实际像素数。对屏幕进行适配时,一般不关注它的分辨率,只关注它的屏幕大小和密度。

与密度无关的像素(Density-independent pixel,dp或dip) -  为了保证你的UI适合不同的屏幕密度,建议你采用dp来定义程序UI。

它的计算方法为:px = dp * (dpi / 160)

sp(scale-independent pixel)

如何分辨一个屏幕是ldpi、mdpi、hdpi的方法,见下图

2、怎样适配多种屏幕

a.在manifest里定义你的程序支持的屏幕类型,相应代码如下:

 

b.对不同大小的屏幕提供不同的layout。

      比如,如果需要对大小为large的屏幕提供支持,需要在res目录下新建一个文件夹layout-large/并提供layout。当然,也可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。

c.对不同密度的屏幕提供不同的图片。

  应尽量使用点9格式的图片,如需对密度为low的屏幕提供合适的图片,需新建文件夹drawable-ldpi/,并放入合适大小的图片。相应的,medium对应drawable-mdpi /,high对应drawable-hdpi/,extra high对应drawable-xhdpi/。
图片大小的确定:low:medium:high:extra high比例为3:4:6:8。举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra high为96×96。

3、多屏幕适配的4条黄金原则

a.在layout文件中设置控件尺寸时应采用wrap_content,fill_parent和dp。

       具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,fill_parent或dp比pix更好。相应地,为了使文字大小更好的适应屏幕应该使用sp来定义文字大小。

b.在程序的代码中不要出现具体的像素值。

为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。

c.不要使用AbsoluteLayout(android1.5已废弃) 。相应地,应使用RelativeLayout。

d.对不同的屏幕提供合适大小的图片。见上面第2部分。

4、需要注意的地方

以上设置适用于android3.2以下的版本。

5、怎样测试你的程序是否支持多屏幕适配

一般使用AVD Manager创建多个不同大小的模拟器,如下图

 更多参考资料:

 

转载于:https://www.cnblogs.com/laxlerbo/p/3872479.html

你可能感兴趣的文章
eclipse快捷键
查看>>
ubuntu 14.04加入五笔输入法
查看>>
神器与经典--sp_helpIndex
查看>>
VC用Beep整几首歌听听~~~
查看>>
Mvc Swagger报错的解决办法。
查看>>
[Cocos2d-x For WP8]Transition 场景切换
查看>>
hibernate中配置单向多对一关联,和双向一对多,双向多对多
查看>>
leetcode--js--Median of Two Sorted Arrays
查看>>
leetcode—js—Add Two Numbers
查看>>
一道概率算法
查看>>
好玩的vbs
查看>>
Python基础-简介二
查看>>
python提取mysql中指定列参数,并循环打印
查看>>
学习和面试,这两件事儿 怎么去学习呀 百度、阿里面试(电面居多)都问些什么问题? 底层再底层思考,打破砂锅问到底,这是我的学习方法...
查看>>
c# label的内容显示不全
查看>>
JQuery日记6.9 Promise/A之Callbacks
查看>>
续x奇数倍(n+2*x)暴力算法是冠军的算法结合数量
查看>>
Javascript入门
查看>>
MATLAB中导入数据:importdata函数
查看>>
C++ 虚函数表决心
查看>>