Android应用如何匹配不同的手机分辨率

从android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小:QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。
然而,由于分辨率的不同,可能会导致同一布局对应不同分辨率的手机显示出不同的效果,如布局错位、图片虚化等,那么,如何解决这一问题呢? 
一、对于界面布局方面
1、根据物理尺寸的大小准备5套布局layout:
(1)layout(放一些通用布局xml文件)  从android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小:QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。
然而,由于分辨率的不同,可能会导致同一布局对应不同分辨率的手机显示出不同的效果,如布局错位、图片虚化等,那么,如何解决这一问题呢? 
    一、对于界面布局方面
     1、根据物理尺寸的大小准备5套布局layout:
     (1)layout(放一些通用布局xml文件)
     (2)layout-small(屏幕尺寸小于3英寸左右的布局)
     (3)layout-normal(屏幕尺寸小于4.5英寸左右)
     (4)layout-large(4英寸-7英寸之间)
     (5)layout-xlarge(7-10英寸之间)
     2、根据需求配置不同的布局layout。
       如:240x320,则建立layout-320x240;400x800,则建立layout-800x400。需要注意的是:大的写在前面,例如320,小的写在后面,例如240;还有乘号要写成小写的x,不能写成*。
       另外,如果是通用的布局文件,则放在layout下。
 
     最后需注意:对于界面布局方面的分辨率的匹配需要在AndroidManifest.xml里面添加下面一段,没有这一段自适应就不能实现:
                         </application>
                               <supports-screens
                                    android:largeScreens="true"
                                    android:normalScreens="true"
                                    android:smallScreens="true"
                                    android:xlargeScreens="true"
                                    android:anyDensity="true"/>
                </manifest>
       在</application>标签和</manifest> 标签之间添加上面那段代码即可。注意:由于android版本的不同,有些版本不支持xlargeScreens,可以直接将android:xlargeScreens="true"去掉。
     注释:android:anyDensity=["true" | "false"]
     如果android:anyDensity="true",指应用程序支持不同密度,会根据屏幕的分辨率自动去匹配。
     如果android:anyDensity="false",应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。例如我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机,如果设置android:anyDensity="false",Android系统会将240 x 320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。
 
    二、图片资源方面
     1、需要根据dpi值准备5套图片资源:
      (1)drawable:主要放置xml配置文件或者对分辨率要求较低的图片
      (2)drawalbe-ldpi:低分辨率的图片,如QVGA (240x320)
      (3)drawable-mdpi:中等分辨率的图片,如HVGA (320x480)
      (4)drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
      (5)drawable-xhdpi:至少960dp x 720dp(一般比较少用)
       Android会有自动匹配机制去选择对应的布局和图片资源,系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
    三、动态实现的界面,样式的设定(values方面)
        不同分辨率,界面的字体大小,字体等需要不同的样式,且需要动态生成的情况下,需要把不同分辨率的配置信息保存到应用中。
      举例:在RES里创建 values-480x320 values-800x400
           并在创建的文件夹中分别创建string.xml
           <dimen name="Text_size">30px</dimen>
           在程序中直接调用R.dimen.Text_size
 
    最后,做一下总结:
    (1)不要使用AbsoluteLayout布局,尽量使用RelativeLayout和LinearLayout;   
    (2)在使用布局的时候尽量使用权重,可以有效减少死数据的使用,降低适配的工作量。
(2)layout-small(屏幕尺寸小于3英寸左右的布局)
(3)layout-normal(屏幕尺寸小于4.5英寸左右)
(4)layout-large(4英寸-7英寸之间)
(5)layout-xlarge(7-10英寸之间)
2、根据需求配置不同的布局layout。
如:240x320,则建立layout-320x240;400x800,则建立layout-800x400。需要注意的是:大的写在前面,例如320,小的写在后面,例如240;还有乘号要写成小写的x,不能写成*。
另外,如果是通用的布局文件,则放在layout下。

最后需注意:对于界面布局方面的分辨率的匹配需要在AndroidManifest.xml里面添加下面一段,没有这一段自适应就不能实现:
</application>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
</manifest>
在</application>标签和</manifest> 标签之间添加上面那段代码即可。注意:由于android版本的不同,有些版本不支持xlargeScreens,可以直接将android:xlargeScreens="true"去掉。
注释:android:anyDensity=["true" | "false"]
如果android:anyDensity="true",指应用程序支持不同密度,会根据屏幕的分辨率自动去匹配。
如果android:anyDensity="false",应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。例如我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机,如果设置android:anyDensity="false",Android系统会将240 x 320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。

二、图片资源方面
1、需要根据dpi值准备5套图片资源:
(1)drawable:主要放置xml配置文件或者对分辨率要求较低的图片
(2)drawalbe-ldpi:低分辨率的图片,如QVGA (240x320)
(3)drawable-mdpi:中等分辨率的图片,如HVGA (320x480)
(4)drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(5)drawable-xhdpi:至少960dp x 720dp(一般比较少用)
Android会有自动匹配机制去选择对应的布局和图片资源,系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
三、动态实现的界面,样式的设定(values方面)
不同分辨率,界面的字体大小,字体等需要不同的样式,且需要动态生成的情况下,需要把不同分辨率的配置信息保存到应用中。
举例:在RES里创建 values-480x320 values-800x400
并在创建的文件夹中分别创建string.xml
<dimen name="Text_size">30px</dimen>
在程序中直接调用R.dimen.Text_size

最后,做一下总结:
(1)不要使用AbsoluteLayout布局,尽量使用RelativeLayout和LinearLayout; 
(2)在使用布局的时候尽量使用权重,可以有效减少死数据的使用,降低适配的工作量。

原文来自http://blog.sina.com.cn/s/blog_8a30865f0101j2wd.html

时间: 2024-10-12 22:18:41

Android应用如何匹配不同的手机分辨率的相关文章

【Android】Android中不同手机分辨率适配问题

在项目开发的过程中,同一个布局对应不同的手机会显示出不同的效果.导致这个现象产生的原因是不同手机的分辨率不同.在android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小.QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854). 目前android手机的分辨率大致就是帮助文档中描述的几种,我们可以用两种方式进行不同手机的适配

主流手机分辨率 尺寸 操作系统

主流手机分辨率 尺寸 操作系统 小米1 :     480 x 854       4.0 英寸 小米2 :     720 x 1280     4.3 英寸小米3 :     1080 x 1920   5.0 英寸小米4 :     1080 x 1920   5.0 英寸小米note: 1080 x 1920   5.7 英寸 华为p7 :    1080 x 1920   5.0 英寸  2G内存   android 4.4华为p8 :    1080 x 1920   5.2 英寸

狂刷Android范例之5:读取手机通讯录

狂刷Android范例之5:读取手机通讯录 说明 狂刷Android范例系列文章开张了.每篇学习一个Android范例,将一个范例单独生成一个可运行的app,并对重点源代码进行简要分析.然后提供打包好的源代码下载. 功能 提供完整代码,通过ContenResolver,读取手机通讯录的内容. 代码包在此,无需下载分: http://download.csdn.net/detail/logicteamleader/8806135 来源 例子来自于Android-20的com.example.and

2015年手机分辨率整理

android系统 宽 长 分辨率比 备注 540 960 9:16 720 1280 9:16 小米2s.红米 1080 1920 9:16 小米4 480 854 9:16 小米1 1200 1920 10 : 16 android pad1(huawei) ios系统 宽 长 分辨率比 备注 640 960 2 :3 iphone4,iphone4s 1080 1920 9:16 ipone6 plus 750 1334 9:16 ipone 6 640 1136 9:16 ipone5,

android视频录制、另一部手机实时观看方案

最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:8080网址观看. 这种方案可以参考 ipcamera-for-android开源项目,网址  http://code.google.com/p/ipcamera-for-android/source/checkout 可以运行的源代码可以在这下载            http://download.

安卓开发技巧四:手机分辨率处理工具类

/** * * @Description:手机分辨率处理工具类 * @author: * @see: * @since: * @copyright © * @Date:2014年8月13日 */ public class DensityUtil { /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.g

主流手机分辨率与尺寸

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47006877 1.小米 小米1 :     480 x 854       4.0 英寸 小米2 :     720 x 1280     4.3 英寸 小米3 :     1080 x 1920   5.0 英寸 小米4 :     1080 x 1920   5.0 英寸 小米note: 1080 x 1920   5.7 英寸 2.华为 华为p7 :    1080 x 1

手机分辨率对应表

mdpi          480*320 hdpi           800*480 xhdpi         1280*720 xxhdpi       1920*1080 1080P      1920*1080 720P        1280*720 手机分辨率对应表

shell-查看手机分辨率

使用如下命令,可以查看手机分辨率 adb shell dumpsys window displays 运行结果如下 Display: mDisplayId=0 init=1080x1920 480dpi cur=1080x1920 app=1080x1920 rng=1080x1005-1920x1845 layoutNeeded=false StackBox #0 mParent=null mBounds=[0,75][1080,1920] mVertical=false layoutNeed