Android自适应不同屏幕几种方法
16lz
2022-04-27
由于Android设备的屏幕尺寸、分辨率差别非常大,如果希望我们的应用能够在不同屏幕尺寸或分辨率的Android设备上运行,即更换Android设备后界面和字体不会因此变得混乱,则需要考虑屏幕的自适应性问题。相关概念: (1)屏幕尺寸(Screen size):即指屏幕的对角线长度,屏幕尺寸可分为small(小屏幕)、normal(中等屏幕)、large(大屏幕)、xlarge(超大屏幕); (2)分辨率(dp):即整个屏幕有多少个像素点组成,可分为ldpi(低分辨率)、mdpi(中等分辨率)、hdpi(高分辨率)、xhdpi(超高分辨率); >xlarge屏幕尺寸分辨率至少需要960dp*720dp >large屏幕尺寸分辨率至少需要640dp*480dp >normal屏幕尺寸分辨率至少需要470dp*320dp >small屏幕尺寸分辨率至少需要426dp*320dp (3)像素密度(dpi):每英寸屏幕含有的像素点个数 (android 也按照像素密度分了四个等级,分别是low, medium, high, 和 extra high); (4)方 向(Orientation) :分水平和垂直,如果应用做的好的话,这两个方向都要考虑; android 对不同尺寸不同像素密度等级划分: 一、使用layout_weight属性方法 目前最为推荐的Android多屏幕自适应解决方案。 该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。layout_weight属性值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级;纵向布局中,决定的是layout_height的优先级。目前有两种方法:(1) 传统使用方法 :将layout_width和layout_height设置为fill_parent,通过 layout_weight属性控制控件的显示比例,当layout_weight越小,控件显示比例就越大。但是,如果布局中控件较多且显示比例不相同时,传统使用layout_weight属性的方法将比较麻烦。(2) 0px设值法:即使layout_width="0dp" 或layout_height="0dp",再结合layout_weight属性正比例控制控件的显示,该方法有效解决了当前Android开发中碎片化问题之一。 源码举例: 1.res/values/style_layout.xml 功能:将控件的layout_width和layout_height两个属性封装成4个style <?xml version="1.0" encoding="utf-8"?> 2.res/layout/weight_layout.xml <?xml version="1.0" encoding="utf-8"?> 3.效果演示 如图所示,分别为480*800界面和320*480界面。
二、自定义尺寸法 所谓自定义尺寸法,即为每一种屏幕界面定义一套界面尺寸大小。
1.res/values-480x320/dimen_height.xml 功能:定义两套应用于不同界面的尺寸 dimen name="height_1_80">6dp18dp 30dp 42dp 54dp 66dp 78px 90px 102px ........... 2.dimen_layout.xml 功能:根据不同分辨率屏幕,使用不同的尺寸 <?xml version="1.0" encoding="utf-8"?> 3.效果演示
三、多布局 所谓多布局,即为不同尺寸屏幕设计单独的布局文件。为了提供自适应不同屏幕的资源,我们可以为不同屏幕尺寸、不同屏幕分辨率提供相应的布局资源、Drawable资源。需要注意的是,使用多布局方法,须在清单文件中添加如下代码,否则,会出现异常。
1.如何支持多个屏幕 (1)在程序中显示声明你的应用程序支持屏幕尺寸的清单(AndroidMnifest.xml)dp,即屏幕尺寸至少宽N个dp才能使用该资源。 (2)提供不同的屏幕密度和不同的位图drawables 默认情况下面系统会自动调整和缩放位图,但是难免拉伸位图,为了保证你的位图是最好看的,根据广义密度,低,中型, 高,特高去添加不同的位图资源。比如,如需对密度为low的屏幕提供合适的图片,需新建文件夹drawable-ldpi/。应尽量使用点9格式的图片,图片大小的确定:low:medium:high:xhigh比例为3:4:6:8。举例来说, 对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra high为96×96。 Android系统支持多配置资源文件,我们可以追加新的资源目录到你的Android项目中。 drawable-hdpi、drawable-mdpi、drawable-ldpi的区别: >drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854) >drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) >drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
参考: http://www.eoeandroid.com/thread-173973-1-1.html http://blog.csdn.net/lonely_fireworks/article/details/7233575 http://blog.csdn.net/kangyaping/article/details/7400280
二、自定义尺寸法 所谓自定义尺寸法,即为每一种屏幕界面定义一套界面尺寸大小。
1.res/values-480x320/dimen_height.xml 功能:定义两套应用于不同界面的尺寸 dimen name="height_1_80">6dp
三、多布局 所谓多布局,即为不同尺寸屏幕设计单独的布局文件。为了提供自适应不同屏幕的资源,我们可以为不同屏幕尺寸、不同屏幕分辨率提供相应的布局资源、Drawable资源。需要注意的是,使用多布局方法,须在清单文件中添加如下代码,否则,会出现异常。
1.如何支持多个屏幕 (1)在程序中显示声明你的应用程序支持屏幕尺寸的清单(AndroidMnifest.xml)
- <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”]/>
参考: http://www.eoeandroid.com/thread-173973-1-1.html http://blog.csdn.net/lonely_fireworks/article/details/7233575 http://blog.csdn.net/kangyaping/article/details/7400280
更多相关文章
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)
- Android开发屏幕适配全攻略
- 说说在 Android(安卓)中如何压缩图片
- Android获取屏幕分辨率及DisplayMetrics简介
- Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解
- Android获取屏幕分辨率及DisplayMetrics简介
- android 传感器获取方向总结
- 安卓热点话题总结性剖析:《Android在多屏幕、多设备上的适配》 |
- Android(安卓)超简单的录制屏幕视频及生成GIF文件的方法