android——屏幕适配大全(转载)

摘要:
Android在资源文件values用文件名的方式提供了限定符可以帮助我们判断上述情况,限定符可以帮助我们判断屏幕密度,限定符可以帮助我们区分屏幕横竖屏状态,而限定符可以适配计算虚拟键或者不计算虚拟键的屏幕,限定符的详细说明请参见AndroidSDK文档中开发者指南的SupportingMultipleScreens话题。

http://my.oschina.net/u/2008084/blog/496161

一、适配可行性

  早在Android设计之初就考虑到了这一点,为了让app适应标准or山寨屏幕,google已经有一套成熟的解决方案。其中,有这么几个指标需要注意:

  (1)屏幕尺寸:单位inch,指的是屏幕对角线长度。

  (2)屏幕密度:单位dpi,指的是每inch上可以显示多少像素点即px。

  (3)屏幕分辨率:单位px * px,指的是一屏显示多少像素点。

  (4)屏幕无关像素:单位dp/dip,指的是自适应屏幕密度的像素,用于指定控件宽高。

  (5)刻度无关像素:单位sp,指的是自适应字体的像素,用于指定文字大小。

  以我自己的Haier W910超级战舰(宽高比16:9)为例,上述单位的换算如下:

  已知数据:屏幕尺寸4.5, 分辨率1280 * 720, 屏幕密度320

  (1)16:9的4.5寸屏幕由勾股定理计算其高约为3.9寸,宽约为2.2寸

  (2)则竖向dpi为1280 / 3.9 ≈ 328, 横向dpi为720 / 2.2 ≈ 327

  (3)工业上切割液晶板时取整为320

  那么既然dpi是自适应屏幕密度的,与px之间又是如何换算呢:

  120dpi(ldpi低密度屏)   1dp = 0.75px (由于像素点是物理点,所以用2个像素点来显示3个dp的内容)

  160dpi(mdpi中密度屏)   1dp = 1px

  213dpi(tvdpi电视密度屏)  1dp = 1.33px

  240dpi(hdpi高密度屏)   1dp = 1.5px

  320dpi(xhdpi极高密度屏)  1dp = 2px

  由上述分析结果可知,控件使用dp,文字使用sp即可满足自适应的需求。

二、适配方案

   根据目前的调查,在市面上的平板,基本上属于mdpi和hdpi的,少数属于tvdpi(如google出的nexus7),所以我们选择这三种密度考 虑适配;此外手机应用大多数都是竖屏使用,但平板作为娱乐性的一款产品,横竖屏均有使用的时候,所以我们还需要考虑到屏幕状态进行适配;最后考虑到有的 rom会将虚拟键计算到屏幕尺寸里,还要考虑到虚拟键所占用的长宽。

   那么如何根据这三个属性来进行适配呢?Android在资源文件values用文件名的方式提供了限定符可以帮助我们判断上述情况,限定符 (mdpi,tvdpi,hdpi)可以帮助我们判断屏幕密度,限定符(land,port)可以帮助我们区分屏幕横竖屏状态,而限定符 (1024x600...)可以适配计算虚拟键或者不计算虚拟键的屏幕,限定符的详细说明请参见Android SDK文档中开发者指南的Supporting Multiple Screens话题。

 最终适配文件夹如下图所示:

android——屏幕适配大全(转载)第1张

注 1:分辨率限定符的匹配是向下匹配,如果没有values-land-mdpi-1024x552,比如,分辨率values-land-mdpi- 1024x600的屏幕,当rom不把虚拟键计算到屏幕尺寸时,实际显示的屏幕应该是values-land-mdpi-1024x552,无法适配到 values-land-mdpi-1024x600,那这样就可能适配到下一级,比如values-land-mdpi-800x480,但是现在的平 板已经没有这么低的分辨率了,所以是配到无限定符的values-mdpi里,造成界面显示上的瑕疵。

  注2:由于分辨率限定符的匹配是向下匹配,所以如果有非主流mdpi屏幕不能精确适配到上述指定值时,values-mdpi至少可以保证app运行时不至于崩溃,同理values可以保证ldpi屏幕的平板不会因生成view而又取不到相应值而崩溃。

免责声明:文章转载自《android——屏幕适配大全(转载)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Socket聊天逻辑android textView 替文字添加下划线 删除线下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OpenCV学习(13) 细化算法(1)

程序编码参考经典的细化或者骨架算法文章: T. Y. Zhang and C. Y. Suen, “A fast parallel algorithm for thinning digital patterns,” Comm. ACM, vol. 27, no. 3, pp. 236-239, 1984. 它的原理也很简单:       我们对一副二值图像...

gdal_merge.py

1 gdal_merge.py: 合并(Merge)/镶嵌(Mosaic)工具。要求图像必须是相同坐标系统、具有相同的波段数;可以不同分辨率,可以有重叠区域(后加入图像覆盖先加入的图像)。注意:只能使用nearest重采样方法。 gdal_merge.py [-o out_filename] [-of out_format] [-co NAME=VALU...

iOS7适配之设计篇

(注:文章简要翻译自 Apple 《iOS 7 UI Transition Guide》,由于该文档为开发者预览版,并非最终文档,所以 iOS7 正式上线可能有部分不同) 准备工作 iOS7 带来了很多界面上的改变,如:没有边框(圆角)的按钮,半透明的工具条(UINavigationBar, UIToolBar 等),视图控制器的全屏布局等。使用 Xcod...

opencv学习心得第二章

opencv操作核心 1:图像的基础操作 获取像素值并且修改 改变像素之前: import cv2#导入cv2模块 img = cv2.imread("a.jpg")#读取图片 cv2.imshow("image", img)#展示图片 k = cv2.waitKey(0)&0xFF#等待键盘输入 for i in range(625):#通过f...

移动开发屏幕适配分析

我在开发前端的时候曾经会有几个疑惑: 1)拿到的设计搞的宽度是640px或750px的,在页面不同尺寸屏幕布局的时候怎么换算。 2)移动端布局是用%、px、rem、伸缩盒 Flexible Box Layout还是多列Multi-column。 3)用px设置了字体大小,但是在ipad上面显示的却很小,字体大小是用rem比较好还是px+媒体查询比较好。 4...

触屏手机3G网站设计

随着智能手机iphone和Android的热潮,衍生出基于Safari和Chrome浏览器的触屏手机网站Touch Screen Mobile Website。 触屏手机网站在中国还属于起步阶段,从行业的现状来看,其体验参差不齐,笔者将从设备、系统、浏览器、网络、四个维度来与大家共同探讨触屏手机的网站设计: 一、设备 ·分辨率与屏幕尺寸 ·触屏机的交互特点...