屏幕的适配-新建相应分辨率文件夹
来源:互联网 发布:2016nba西决数据统计 编辑:程序博客网 时间:2024/06/06 04:55
今天刚好有做到屏幕的适配,就想到对我自己所了解到一些知识做一些简单的总结。
一、概念
1.屏幕尺寸
屏幕尺寸:既屏幕对角线的长度,单位是英寸。例如手机屏幕是5.5英寸,指的就是屏幕对角线是5.5英寸。1英寸≈2.54
厘米,那么 5.5英寸≈13.97厘米。
Android:主流机型主要为 240x320,320x480(HVGA),480x800(WVGA), 480x854(WVGA), 540x960(qHD),
640x960(DVGA),720x1280(HD), 800x1280(WXGA)。
iOS: 主流机型主要为 320x480, 640x960, 640x1136, 1024x768, 2048x1536, 这五种。
2.屏幕像素密度
像素密度:既每英寸屏幕所拥有的像素数,像素密度越大,显示画面细节就越丰富。,单位是dpi。像素密度与屏幕尺寸
和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。
3.屏幕分辨率
分辨率:既屏幕上显示的像素个数,单位是px,1px就是1个像素点数。分辨率160×128的意思是水平方向含有像素数为
160个,垂直方向像素数128个。屏幕尺寸一样的情况下,分辨率越高,显示效果就越精细和细腻。
二、dp、dip、dpi、sp、px
1.dp
dp: 和dip是一样的
2.dip
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为
了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
3.dpi
dpi: 是dot per inch的缩写,就是每英寸的像素数,也叫做屏幕密度。这个值越大,屏幕就越清晰。Android 主流设备的 dpi 归成了四个档次,120 dpi、160 dpi、
240dpi、320 dpi
4.sp
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
5.px
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
6.其他
三、适配
1.根据屏幕的尺寸新建文件夹
在/res目录下新建适配不同手机屏幕的分辨率的文件夹
屏幕尺寸分类:: small(小尺寸), normal(正常尺寸), large(大尺寸), xlarge(超大尺寸)
密度分类: ldpi (低密度), mdpi (中密度), hdpi (高密度), xhdpi (超高密度)
drawable-ldpi values-ldpi drawable-large-hdpi
drawable-mdpi values-mdpi drawable-large-mdpi
drawable-hdpi values-hdpi drawable-large-xhdpi
drawable-xhdpi values-xhdpi
方向分类:land(横向屏幕), port(纵向屏幕)
layout-port layout-land
values-fi-land values-fi-port
drawable-hdpi该图片即适用于横屏,也适用于竖屏;
drawable-hdpi该图片即适用于横屏,也适用于竖屏;
drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。
分辨率分类:
(1)以分辨率来新建文件夹
(2)以宽度来新建文件夹
这是以最小宽度来限制,既适配该宽度以上的手机(但是适用于平板和电视)
宽度文件夹其他300values-sw300dpvalues-small(可以当做sw=300计算)320values-sw320dpvalues-normal(可以当做sw=320计算)340values-sw340dp 360values-sw360dp 400values-sw400dp 480values-sw480dpvalues-large(可以当做sw=480计算)520values-sw520dp 600values-sw600dp 720values-sw720dpvalues-xlarge(可以当做sw=720计算)
2.自动生成工具
当然,这些适配的文件夹也可以使用代码自动生成,在这里我就不作解释了,可以参考网址 http://blog.csdn.net/lmj623565791/article/details/45460089
参考http://blog.csdn.net/lmj623565791/article/details/45460089
3.在manifest里定义你的程序支持的屏幕类型
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"] //是否支持小屏
android:normalScreens=["true" | "false"] //是否支持中屏
android:largeScreens=["true" | "false"] //是否支持大屏
android:xlargeScreens=["true" | "false"] //是否支持超大屏
android:anyDensity=["true" | "false"] //是否支持多种不同密度的屏幕
android:requiresSmallestWidthDp=”integer”
android:compatibleWidthLimitDp=”integer”
android:largestWidthLimitDp=”integer”/>
4.屏幕适配的原则
1) 在layout文件中设置控件尺寸时应采用fill_parent、wrap_content、match_parent,如果屏幕放不下了,可以使用 ScrollView(可
以上下拖动);但是现在要尽量使用match_parent而不是fill_parent。当然在布局中遇到设置具体的数值宽度、高度和距离时,要
用单位dp;当遇到给字体设置大小时要用单位sp。
具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,match_parent或dp比px更
好,文字大小应该使用sp来定义。
2) 在程序的代码中不要出现具体的像素值,应该先在dimens.xml中定义,然后再代码中引用;
为了使代码简单,android内部使用px为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议
开发者不要使用具体的像素来表示控件尺寸。
3) 在XML布局中,应尽量使用LinearLayout、RelativeLayout和FrameLayout;
4) 使用 weight 权重适配
只能用在线性控件中,比如LinearLayout。
竖直方向上使用权重的控件高度必须为0dp(Google官方的推荐用法)
水平方向上使用权重的控件宽度必须为0dp(Google官方的推荐用法
5)尽量使用9-patch图,可以自动的依据图片上面显示的内容被拉伸和收缩。其中在编辑的时候,灰色区域是被拉伸的,上下两个点
控制水平方向的拉伸,左右两点控制垂直方向的拉伸
6) 横竖屏幕的切换
1、Android 应用程序支持横竖屏幕的切换,Android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁(执行onPause()方
法和 onDestroy()方法)前保存当前活动的状态;在Activity 再次创建的时候载入配置,那样,进行中的游戏就不会自动重启了!
有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity 的地方进行如下的配置:
android:screenOrientation="portrait"(landscape是横向,portrait是纵向)。这样就可以保证是竖屏总是竖屏了。
2、而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置 Activity的时候进行如下的配置:
android:configChanges="keyboardHidden|orientation" , 另 外 需 要 重 写 Activity 的onConfigurationChanged方法。
参考:
http://blog.csdn.net/lmj623565791/article/details/45460089
http://blog.csdn.net/jdsjlzx/article/details/45891551
- 屏幕的适配-新建相应分辨率文件夹
- 屏幕的分辨率适配问题
- android屏幕的多分辨率适配
- Android常见分辨率的屏幕适配
- 多分辨率屏幕适配
- android分辨率屏幕适配
- 适配不同分辨率屏幕
- android 游戏 不同分辨率 屏幕适配的方法
- android 游戏 不同分辨率 屏幕适配的方法
- Android:对于多分辨率屏幕的适配
- android 对于多分辨率屏幕的适配
- Android 屏幕尺寸和分辨率的适配
- 调整屏幕的分辨率
- 获取屏幕的分辨率
- 获取屏幕的分辨率
- 获取屏幕的分辨率
- 屏幕适配,彻底理解dp,dpi,屏幕密度,分辨率之间的爱恨纠葛
- Android屏幕适配(分辨率适配)
- service list命令的实现
- 如何设定jbutton的大小(使其大小固定,不因布局方式改变而改变???)
- 17. 试用vSphere 6(四):配置数据中心(添加ESXi主机、新建数据中心\集群等)
- WSDL WebService的创建和使用实例
- 常用的正则表达式来验证信息.如:网址 邮箱 手机号等
- 屏幕的适配-新建相应分辨率文件夹
- 项目中出现java.lang.NoSuchMethodException 继续整理
- 防xss攻击总结
- 获取form表单所有输入内容
- Jetty简介
- Pow(x, n)
- Android中ListView实现多级分组显示的高效实现
- 交叉编译器制作
- php 根据某数组key计算和