天天看點

安卓-螢幕适配方式安卓-螢幕适配方式

安卓-螢幕适配方式

@(Blog)[馬克飛象|Markdown|Android]

  • 安卓-螢幕适配方式
    • 适配方式一圖檔适配
    • 适配方式二dimensxml檔案适配
    • 适配方式三布局檔案适配
    • 适配方式四java代碼适配
    • 适配方式五權重适配
轉自http://www.bkjia.com/Androidjc/963563.html#comment

适配:即目前應用在相同的手機上面顯示相同的效果。适配前需要首先确定目前手機所屬像素密度類型(如:xhdpi、hdpi、mdpi等) 像素密度:每英寸上分布的像素點個數,機關(dpi,ppi),利用勾股定理可算出。

安卓-螢幕适配方式安卓-螢幕适配方式

暫時不考慮xxxhdpi的情況,上圖翻譯成中文,大概就是這個意思:

ldpi:120dpi,dp與像素轉換關系為:1dp = 0.75px mdpi:160dpi,dp與像素轉換關系為:1dp = 1px hdpi:240dpi,dp與像素轉換關系為:1dp = 1.5px xhdpi:320dpi,dp與像素轉換關系為:1dp = 2px xxhdpi:480dpi,dp與像素轉換關系為:1dp = 3px

接下來,簡單介紹下現在市面上常用的五種适配方式

1、圖檔适配

2、dimens适配

3、布局檔案适配

4、java代碼适配

5、權重适配

适配方式一:圖檔适配

不同像素密度的手機加載工程資源檔案(res)中不同的資源圖檔

安卓-螢幕适配方式安卓-螢幕适配方式

例如:mi3手機,主屏尺寸是5英寸,主屏分辨率:1920x1080像素。

根據勾股定理可算出其像素密度:Sqrt(1920^2+ 1080^2)/5 ≈ 441dpi,即mi3的螢幕像素密度約等于441dpi。

根據google官方文檔中對像素密度的劃分,mi3的像素密度最接近xxhdpi,是以,對mi3這款手機做圖檔适配的話需要按照xxhdpi單獨切圖。

适配方式二:dimens.xml檔案适配

dimens.xml存在于工程資源(res)檔案夾中不同values(如:value-1280x720、value-800x480、values-xhdpi)檔案夾下,可用于指定控件大小,不同像素密度手機加載不同values檔案夾下的dimens.xml檔案,通常用dimens适配,需要寫多個檔案,去适配市面上主流的機型。

例如:360手機助手使用dimens适配

安卓-螢幕适配方式安卓-螢幕适配方式

适配方式三:布局檔案适配

不同分辨率的手機,加載不同的布局檔案以達到适配效果。

建立多個layout(如:layout-1280x720、layout-800x480)檔案夾用于存放不同像素密度手機所需布局檔案。

适配方式四:java代碼适配

通過android相應api擷取目前手機的寬高像素值,按比例配置設定螢幕中控件的寬高以達到适配效果。

核心代碼(将這個文本框的寬高設定為螢幕寬高的一半):

TextView tv = (TextView) findViewById(R.id.tv); 
//擷取封裝目前手機螢幕資訊對象,用于存放寬高值
DisplayMetrics metrics = new DisplayMetrics(); 
//給目前螢幕設定寬高 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
//擷取螢幕高度 
int srceenHeight = metrics.heightPixels; 
//擷取螢幕寬度 
int srceenWidth = metrics.widthPixels; 

//寬高各占50%
RelativeLayout.LayoutParamslayoutParams = new RelativeLayout.LayoutParams( (int)(srceenWidth*+),(int)(srceenHeight*+));
tv.setLayoutParams(layoutParams);
           

适配方式五:權重适配

通過android中線性布局中的屬性(layout_weight權重) 按比例來配置設定,已達到适配效果。

例如:兩個按鈕平分螢幕的寬度

<Button
    android:layout_width="0dp" 
    android:layout_weight="1" 
    android:layout_height="wrap_content"/>