安卓-螢幕適配方式

來源:互聯網
上載者:User

安卓-螢幕適配方式
適配:即當前應用在相同的手機上面顯示相同的效果。適配前需要首先確定當前手機所屬像素密度類型(如:xhdpi、hdpi、mdpi等)像素密度:每英寸上分布的像素點個數,單位(dpi,ppi),利用勾股定理可算出。
vc7EtbWjrM/xy9jD3LbI1vfSqrfWzqo2uPa1yLy2oaM8YnI+CjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20150304/20150304093721102.png" alt="\">

暫時不考慮xxxhdpi的情況,翻譯成中文,大概就是這個意思:
ldpi:120dpi,dp與像素轉換關係為:1dp = 0.75pxmdpi:160dpi,dp與像素轉換關係為:1dp = 1pxhdpi:240dpi,dp與像素轉換關係為:1dp = 1.5pxxhdpi:320dpi,dp與像素轉換關係為:1dp = 2pxxxhdpi: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*0.5+0.5),(int)(srceenHeight*0.5+0.5));tv.setLayoutParams(layoutParams);

適配方式五:權重適配

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

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

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




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.