適配不同解析度的Android手機的簡單處理方法

2021-06-13 07:38:38 字數 2813 閱讀 5714

一:不同的layout

二:hdpi、mdpi、ldpi

在之前的版本中,只有乙個drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三個,這三個主要是為了支援多解析度。

drawable- hdpi、drawable- mdpi、drawable-ldpi的區別:

(1)drawable-hdpi裡面存放高解析度的,如wvga (480x800),fwvga (480x854)

(2)drawable-mdpi裡面存放中等解析度的,如hvga (320x480)

(3)drawable-ldpi裡面存放低解析度的,如qvga (240x320)

系統會根據機器的解析度來分別到這幾個資料夾裡面去找對應的。

在開發程式時為了相容不同平台不同螢幕,建議各自資料夾根據需求均存放不同版本。

三:橫屏豎屏

以下步驟是網上流傳的,不過我自己之前是通過圖形化介面實現這個配置,算是殊途同歸,有空我會把貼上來。

還要說明一點:每個activity都有這個屬性screenorientation,每個activity都需要設定,可以設定為豎屏(portrait),也可以設定為無重力感應(nosensor)。

要讓程式

介面保持乙個方向,不隨手機方向轉動而變化的處理辦法: 

在androidmanifest.xml裡面配置一下就可以了。加入這一行android:screenorientation="landscape"。

例如(landscape是橫向,portrait是縱向):

view plain

copy to clipboard

print?

<?

xmlversion

="1.0"

encoding

="utf-8"

?>

<

manifest

xmlns:android

=""package

="com.ray.linkit"

android:versioncode

="1"

android:versionname

="1.0"

>

<

android:icon

="@drawable/icon"

android:label

=>

<

activity

android:name

=".main"

android:label

=android:screenorientation

="portrait"

>

<

intent-filter

>

<

action

android:name

="android.intent.action.main"

/>

<

category

android:name

="android.intent.category.launcher"

/>

intent-filter

>

activity

>

<

activity

android:name

=".gameplay"

android:screenorientation

="portrait"

>

activity

>

<

activity

android:name

=".optionview"

android:screenorientation

="portrait"

>

activity

>

>

<

uses-sdk

android:minsdkversion

="3"

/>

manifest

>

另外,android中每次

螢幕的切換動會重啟activity,所以應該在activity銷毀前儲存當前活動的狀態,在activity再次create的時候載入配置,那樣,進行中的

遊戲就不會

自動重啟了!

有的程式適合從豎屏切換到橫屏,或者反過來,這個時候怎麼辦呢?可以在配置activity的地方進行如下的配置android:screenorientation="portrait"。這樣就可以保證是豎屏總是豎屏了,或者landscape橫向。

而有的程式是適合橫豎屏切換的。如何處理呢?首先要在配置activity的時候進行如下的配置:android:configchanges="keyboardhidden|orientation",另外需要重寫activity的onconfigurationchanged方法。實現方式如下,不需要做太多的內容:

view plain

copy to clipboard

print?

@override

public

void

onconfigurationchanged(configuration newconfig)  elseif(

this

.getresources().getconfiguration().orientation == configuration.orientation_portrait)   

}  

需要注意到是,在命名layout資料夾時,必須遵守這樣的規則. layout-640x360 大數放在小數的前面,否則會報錯!

Android不同解析度適配

適配可以分為 layout land 橫屏布局 layout port 豎屏布局 layout 1920x1080 或者layout land 1920x1080 layout port 1920x1080 注 如果適配的布局檔案中,沒有當前機型,當前機型會選擇相差最小的解析度的配置檔案進行適配 l...

Android 適配不同 解析度和尺寸

如題,最近做乙個裝置介面,為了能夠適應不同的解析度 下面分享實現方法 首先 你需要在 androidmanifest.xml 檔案的元素如下新增子元素 supports screens android largescreens true android normalscreens true andr...

android 不同手機解析度適配問題

在使用單位時,如果沒有特殊情況,一律採用dip和sp 字型大小單位 這兩個單位。因為這兩個單位是與裝置解析度無關的,能夠解決在不同解析度的裝置上顯示效果不同的問題。另外,在編碼中定義控制項的margin或padding屬性時,sdk裡面並沒有提供dip單位的api設定介面,而是提供了預設的px設定。...