Android 适配不同的屏幕
从小屏手机到大屏电视机,android拥有数百种不同屏幕尺寸的设备。所以,兼容不同屏幕尺寸的应用程序,满足不同用户体验就变得非常重要, 因此,只是单纯的兼容不同的设备类型是远远不够的。不同的屏幕尺寸都给开发者带来不同的可能性和挑战,所以就来说说适应不同的屏幕。
可以看到这张图也说明当今android系统碎片化的严重性。
一,android的度量单位
单位:
pt: 点
px: 表示屏幕实际的像素
sp: 字体单位大小
dp: 为了支持WVGA、HVGA和QVGA推荐使用这个,机遇屏幕密度的抽象单位。
重要概念:
-
什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?
-
什么是dp、dip、dpi、sp、px?他们之间的关系是什么?
-
什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分?
单位为英寸,1英寸 = 2.54厘米、常见屏幕有2.4、2.8、3.5、3.7、4.2、5.0、6.0 等。
屏幕分辨率:
单位是px,1px = 1个像素点,一般以纵向像素*横向像素,例如 720 * 1280 、1200 * 1290。
屏幕像素密度:
单位是dpi,即 " dot per inch "的缩写,屏幕像素密度与屏幕尺寸和分辨率有关,屏幕尺寸越小,
分辨率越高,像素密度越大,反之越小。
1,其实 dip和dp一个意思,都是Density Independent Pixels(独立像素密度)的缩写,那么问题来了,dp和px如何转换呢?其实在android 中,规定以160dpi 为基准,1dip = 1 px,如果密度是320dip,则 1 dip = 2px , 以此类推。我们来看看Goolge官方进行标准区分:
图标的各个屏幕密度对应尺寸:
2,为了确保布局适应各种尺寸的屏幕,应该使用"wrap_content"和"match_parent",要是使用了wrap_content,
那么view的宽和高会被设置为该view所包含的内容的大小值,因为他们不是固定的值,所以组件尺寸是自适应宽和高,
最好使用 RelativeLayout 来构建你复杂的视图,为什么呢,因为 LinearLayout 不允许你精准控制它子View 的关系,
子View在LinearLayout中只能一个接一个得排成行,假如你的子View不只是简简单单的排成行,那么使用RelativeLay
out ,它可以指定布局中控件与控件之间的关系,这里来看看横屏和竖屏的模式效果图。
二,不同屏幕提供布局
1,通常来讲,通过缩放使得应用适应屏幕大小,比如出现其他情况,我们可以使用其他方式让体验更好。比如,在大屏幕情况下,通过调整UI组件位置和大小使屏幕的空间可以得到充分利用,对于小设备,就只需要调整UI组件的大小就行,布局常用有: small:小 normal:普通 large:大 xlarge:超大
2,系统会根据app所运行的设备屏幕尺寸,找到与之对应的layout目录中加载layout,创建不同的layout配置如下:
- res/layout/layout.xml
- res/layout-small/layout.xml
- res/layout-large/layout.xml
- res/layout-large-land/layout.xml
更多相关文章
- 【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi
- 关于Android屏幕刷新机制的一些总结
- 关于Android WebView内容不同屏幕兼容处理
- Android屏幕适配(个人的一点点总结及经验)
- 【Android 内存优化】Bitmap 内存占用计算 ( Bitmap 图片内存占
- Android 滑动切换页面 以及屏幕手势
- 屏幕适配技术查阅资料汇总