从小屏手机到大屏电视机,android拥有数百种不同屏幕尺寸的设备。所以,兼容不同屏幕尺寸的应用程序,满足不同用户体验就变得非常重要, 因此,只是单纯的兼容不同的设备类型是远远不够的。不同的屏幕尺寸都给开发者带来不同的可能性和挑战,所以就来说说适应不同的屏幕



可以看到这张图也说明当今android系统碎片化的严重性。

                                  Android 适配不同的屏幕_第1张图片


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 等。

屏幕分辨率

      单位是px1px = 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官方进行标准区分:

                        Android 适配不同的屏幕_第2张图片


 图标的各个屏幕密度对应尺寸:

                                                             Android 适配不同的屏幕_第3张图片


2为了确保布局适应各种尺寸的屏幕,应该使用"wrap_content"和"match_parent",要是使用了wrap_content

那么view的宽和高会被设置为该view所包含的内容的大小值,因为他们不是固定的值,所以组件尺寸是自适应宽和高,

最好使用 RelativeLayout 来构建你复杂的视图,为什么呢,因为 LinearLayout 不允许你精准控制它子View 的关

子View在LinearLayout中只能一个接一个得排成行,假如你的子View不只是简简单单的排成行,那么使用RelativeLay

out ,它可以指定布局中控件与控件之间的关系,这里来看看横屏和竖屏的模式效果图。

                          Android 适配不同的屏幕_第4张图片


不同屏幕提供布局

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


更多相关文章

  1. 【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi
  2. 关于Android屏幕刷新机制的一些总结
  3. 关于Android WebView内容不同屏幕兼容处理
  4. Android屏幕适配(个人的一点点总结及经验)
  5. 【Android 内存优化】Bitmap 内存占用计算 ( Bitmap 图片内存占
  6. Android 滑动切换页面 以及屏幕手势
  7. 屏幕适配技术查阅资料汇总

随机推荐

  1. Android学习手记:第一个应用程序!
  2. 详解Android技术的生态系统及其安全机制
  3. Android的Window类
  4. ART:Android(安卓)摆脱卡顿的希望?
  5. Android(安卓)Dialog使用举例
  6. 使用Panel和TextLine模拟Android的Toast
  7. 【Android每周专题】网络编程
  8. [android与open source不得不说的事]Andr
  9. adb通过TCP/IP来调试Android设备
  10. 谷歌 2017 I/O 开发者大会确定,Android(安