Android自适应不同屏幕几种方法

    由于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
 
 
 
      
          
2.res/layout/weight_layout.xml
        style="@style/layout_full"
        android:orientation="vertical">
       
                style="@style/layout_vertical"
                android:layout_weight="1"
                android:orientation="horizontal">
                 
                         style="@style/layout_horizontal"
                         android:background="#aa0000"
                         android:layout_weight="1"/>
                 
                         style="@style/layout_horizontal"
                         android:background="#00aa00"
                         android:layout_weight="4"/>
                 
                         style="@style/layout_horizontal"
                         android:background="#0000aa"
                         android:layout_weight="3"/>
                 
                         style="@style/layout_horizontal"
                         android:background="#aaaaaa"
                         android:layout_weight="2"/>                
       
       
                style="@style/layout_vertical"
                android:layout_weight="2"
                android:orientation="vertical">
               
                         style="@style/layout_vertical"
                         android:background="#ffffff"
                         android:layout_weight="4"/>        
                 
                         style="@style/layout_vertical"
                         android:background="#aa0000"
                         android:layout_weight="3"/>
                 
                         style="@style/layout_vertical"
                         android:background="#00aa00"
                         android:layout_weight="2"/>
                 
                         style="@style/layout_vertical"
                         android:background="#0000aa"
                         android:layout_weight="1"/>
       
3.效果演示
    如图所示,分别为480*800界面和320*480界面。
Android自适应不同屏幕几种方法_第1张图片
二、自定义尺寸法
    所谓自定义尺寸法,即为每一种屏幕界面定义一套界面尺寸大小。
Android自适应不同屏幕几种方法_第2张图片
1.res/values-480x320/dimen_height.xml
功能:定义两套应用于不同界面的尺寸
dimen name="height_1_80">6dp     
18dp   
30dp 
42dp 
54dp 
66dp 
78px
90px 
102px
     ...........
2.dimen_layout.xml
功能:根据不同分辨率屏幕,使用不同的尺寸
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
                 
                         android:layout_width="@dimen/width_76_80"
                         android:layout_height="@dimen/height_10_80"
                         android:background="#ffcccc"
                         android:layout_margin="@dimen/width_2_80"/>        
       
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
                 
                         android:layout_width="@dimen/width_30_80"
                         android:layout_height="@dimen/height_50_80"
                         android:background="#ccccff"
                         android:layout_margin="@dimen/height_5_80"/>
                 
                         android:layout_width="fill_parent"
                         android:layout_height="fill_parent"
                         android:orientation="vertical">        
                         

你可能感兴趣的:(Android开发进阶)