- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android屏幕适配总结
Android 屏幕适配总结
单位概念
屏幕尺寸:是指屏幕对角线的长度。单位是英寸,1英寸=2.54厘米。
屏幕分辨率:是指在横纵向上的像素点数,单位是px,1px=1像素点,一般是纵向像素横向像素,如现在手机的主流屏幕像素:1280*720.
屏幕像素密度:是指每英寸上的像素点数,单位是dpi。
wrap_content:根据控件的内容设置控件的大小。
match_parent:根据父控件的尺寸大小设置控件的尺寸。
weight:权重,在线性布局通过weight属性来设置控件所占的比例。
最小的屏幕宽度:以swDimention valuedp的格式(比如sw600dp,sw320dp…)来指定最小的设备尺寸(宽和高)。
有效的屏幕宽度:以wDimention valuedp 来表示最小的设备屏幕宽度,比如:w600dp,w320dp,w720dp等。
工作中的总结
尽量使用线性布局(LinearLayout)和相对布局(RelativeLayout),不要使用绝对布局。
使用wrap_content、match_parent、weight支持各种适配。能够使用权重的地方尽量使用权重(android:layout_weight),注:使用权重时,宽度最好使用“0dp”,虽然有时使用warp_content的效果跟“0dp”效果一样,但有时也会因为这个原因而导致布局不一样,因此,建议使用“0dp”。若是使用match_parent的效果会跟设置的权重比产生相反的效果。
如果是纯色背景的话,最好尽量使用Android的shape自定义。
尽量使用dip、dp和sp,不要使用px。(其中:dip、dp密度与像素无关,sp:Google推荐使用12sp以上的大小,不够这个有时得跟实际开发来使用,通常使用12sp、14sp,15sp,22sp,最好不要使用小数和奇数)。
图片有时可以使用自动拉伸位图。自动拉伸位图,也就是android下特有的.9.png图片格式。他的修改、创建工具在SDK安装目录下tools下的draw9patch.bat。使用时双击它。
ImageView的ScaleTye属性。通过设置ScaleType的不同属性可以得到不同的效果,但是通过实践,赶脚设置为centerCrop能获取较好的适配效果。
动态获取屏幕分辨率等信息。
DisplayMetrics metric = new DisplayMetrics();? getWindowManager().getDefaultDisplay().getMetrics(metric);? int width = metric.widthPixels; // 屏幕宽度(像素)? int height = metric.heightPixels; // 屏幕高度(像素)? float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)? int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
通常情况下:ldpi:120,mdpi:160,hdpi:240,xhdpi:320,xxhdpi:480
注意:(1)DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 这样获得的参数信息不正确,不要使用这种方式。
(2)不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。这个得到的宽和高是空的。
使用布局别名。不同的分辨率的手机,加载不同的布局文件已到达适配效果。比如:layout-1280x720、layout-800x400。不过此方法,小编一般很少使用它。其他别名还有:res/layout/main.xml: 单面板布局 res/layout-large/main.xml: 多面板布局 res/layout-sw600dp/main.xml: 多面板布局
在AndroidMainfest.xml设置多分辨率支持。
supports-screens? android:largeScreens=true? android:normalScreens=true? android:anyDensity=true? android:smallScreens=true /
其中,android:anyDensity=true,系统会依据屏幕密度,自动去找对应的文件夹。
了解屏幕的级别。
屏幕级别
文档评论(0)