Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> (Android 基礎(二十一)) Android 屏幕適配

(Android 基礎(二十一)) Android 屏幕適配

編輯:關於Android編程

基本概念

1. 什麼是屏幕尺寸、屏幕分辨率、屏幕像素密度?

屏幕尺寸是指屏幕對角線的長度。單位是英寸,1英寸=2.54厘米

屏幕分辨率是指在橫縱向上的像素點數,單位是px,1px=1像素點,一般是縱向像素橫向像素,如1280×720

屏幕像素密度是指每英寸上的像素點數,單位是dpi,即“dot per inch”的縮寫,像素密度和屏幕尺寸和屏幕分辨率有關

屏幕像素密度計算公式

屏幕像素密度=縱向分辨率2+橫向分辨率2??????????????????√屏幕尺寸

例如:計算Nexus5的屏幕像素密度:

屏幕尺寸:4.95inch、分辨率:1920×1080,屏幕像素密度:445

屏幕像素密度=19202+10802???????????√4.95=445

計算結果可以對應上,證明這個結論是OK的。

 

2. 什麼是dp、dip、dpi、sp、px?

dp/dip—-> dip和dp是一個意思,都是Density Independent Pixels的縮寫,即密度無關像素,上面我們說過,dpi是屏幕像素密度,假如一英寸裡面有160個像素,這個屏幕的像素密度就是160dpi,那麼在這種情況下,dp和px如何換算呢?在Android中,規定以160dpi為基准,1dip=1px,如果密度是320dpi,則1dip=2px,以此類推。

dpi—> 屏幕像素密度的單位,“dot per inch”的縮寫,上面有介紹

sp—> Scale-Independent Pixels的縮寫,可以根據文字大小首選項自動進行縮放。Google推薦我們使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇數和小數。

px—> 像素,物理上的絕對單位

 

3. 什麼是mdpi、hdpi、xdpi、xxdpi、xxxdpi?

名稱 像素密度范圍 圖標尺寸 比例 mdpi 120dpi~160dpi 48x48px 1 hdpi 160dpi~240dpi 72x72px 1.5 xhdpi 240dpi~320dpi 96x96px 2 xxhdpi 320dpi~480dpi 144x144px 3 xxxhdpi 480dpi~640dpi 192x192px 4

 

在處理圖標的時候,通過mdpi的48x48然後按照一定的比例制作對應的圖標放入對應的文件夾下即可。

 

解決方案

1. 使用wrap_content、match_parent、layout_weight

wrap_content——————-> 包裹內容

match_parent/fill_parent —> 填滿父布局

layout_weight——————-> 布局權重

前面兩個不同多講,layout_weight

layout_weight只有在Linearlayout中才有效。之所以android:layout_weight會引起爭議,是因為在設置該屬性的同時,設置android:layout_width為wrap_content和match_parent會造成兩種截然相反的效果。

公式:所占寬度=原來寬度+剩余空間所占百分比的寬度

一般情況,我們都是設置要進行比例分配的方向的寬度為0dp,然後再用權重進行分配

A.width:B.widht = A.layout_weight : B.layout_weight

但是如果設置要進行比例分配的方向的寬度為match_parent,效果就截然相反。

A.width:B.widht = B.layout_weight : A.layout_weight

Google官方推薦,當使用weight屬性時,將width設為0dip即可,效果跟設成wrap_content是一樣的。這樣weight就可以理解為占比了!

2. 使用線性布局和相對布局,盡量減少對絕對布局的使用

線性布局中可以使用layout_weight的方式

相對布局可以保持容器中子View相對位置的穩定

絕對布局太過於死板

3. 使用限定符

尺寸限定符 res/layout-large/main.xml (適用與android 3.2之前)

最小限定符 res/layout-sw600dp/main.xml (Small Width, 適用於android 3.2之後)

4. 使用布局別名

這種方式是通過資源文件使用別名


@layout/main_twopanes

替換後面的main_twopanes的名稱為不同的布局,然後定義在不同的文件夾下,然後使用的過程中使用

setContentView(R.layout.main)

加載的過程中,就可以根據屏幕尺寸和android版本加載不同的布局,但是別名都是main。

5. 使用屏幕方向限定符

橫屏和豎屏的顯示方式往往有一些差異。

橫屏: res/values-sw600dp-land/layouts.xml

豎屏: res/values-sw600dp-port/layouts.xml

6. 使用自動拉伸位圖

自動拉伸位圖,即android下特有的.9.png圖片格式。

工具,draw9patch.bat

特點

左邊和上邊點下一個像素或多個像素點,是選擇了拉伸的像素,即把選擇的像素點進行拉伸。選擇的像素點越多,拉伸的程度也越大。

右邊和下邊是選擇內容區域,在右邊和下邊畫上直線,交叉的區域就是內容區域。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved