android自適應螢幕方向和大小
螢幕大小:
一:不同的layout
Android手機螢幕大小不一,有480x320, 640x360, 800x480.怎樣才能讓App自動適應不同的螢幕呢?
其實很簡單,只需要在res目錄下建立不同的layout資料夾,比如layout-640x360,layout-800x480,所有的layout檔案在編譯之後都會寫入R.java裡,而系統會根據螢幕的大小自己選擇合適的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)
系統會根據機器的解析度來分別到這幾個資料夾裡面去找對應的圖片。
在開發程式時為了相容不同平臺不同螢幕,建議各自資料夾根據需求均存放不同版本圖片。
螢幕方向:
橫屏豎屏自動切換:
可以在res目錄下建立layout-port和layout-land兩個目錄,裡面分別放置豎屏和橫屏兩種佈局檔案,這樣在手機螢幕方向變化的時候系統會自動呼叫相應的佈局檔案,避免一種佈局檔案無法滿足兩種螢幕顯示的問題。
不切換:
以下步驟是網上流傳的,不過我自己之前是通過圖形化介面實現這個配置,算是殊途同歸,有空我會把圖片貼上來。
還要說明一點:每個activity都有這個屬性screenOrientation,每個activity都需要設定,可以設定為豎屏(portrait),也可以設定為無重力感應(nosensor)。
要讓程式介面保持一個方向,不隨手機方向轉動而變化的處理辦法:
在AndroidManifest.xml裡面配置一下就可以了。加入這一行android:screenOrientation="landscape"。
例如(landscape是橫向,portrait是縱向):
Java程式碼:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ray.linkit"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
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>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
另外,android中每次螢幕的切換動會重啟Activity,所以應該在Activity銷燬前儲存當前活動的狀態,在Activity再次Create的時候載入配置,那樣,進行中的遊戲就不會自動重啟了!
有的程式適合從豎屏切換到橫屏,或者反過來,這個時候怎麼辦呢?可以在配置Activity的地方進行如下的配置android:screenOrientation="portrait"。這樣就可以保證是豎屏總是豎屏了,或者landscape橫向。
而有的程式是適合橫豎屏切換的。如何處理呢?首先要在配置Activity的時候進行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重寫Activity的onConfigurationChanged方法。實現方式如下,不需要做太多的內容:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// port do nothing is ok
}
}
相關文章
- Android 螢幕自適應Android
- android 螢幕適配Android
- Android螢幕適配總結和思考Android
- flutter 螢幕尺寸適配 字型大小適配Flutter
- Android螢幕適配方案Android
- android螢幕適配方法Android
- 網站如何自適應手機螢幕?網站
- Android FixedTextView 字型大小自適應文字框AndroidTextView
- Android 主流螢幕以及適配Android
- Android螢幕適配方案分析Android
- Qt:Qt自適應高解析度螢幕QT
- 學習筆記:自適應佈局,多螢幕適配筆記
- Android 螢幕適配終結者Android
- Android搖一搖、螢幕方向的監聽Android
- Apple裝置螢幕尺寸和方向APP
- JFrame自適應大小
- Android技能樹 — 螢幕適配小結Android
- 怎麼讓body高度自適應螢幕?為什麼?
- Android螢幕適配(理論適配100%機型)Android
- Android螢幕適配前先了解這些Android
- android 今日頭條的螢幕適配理解Android
- 螢幕適配
- android螢幕適配三:通過畫素密度適配Android
- Flutter之支援不同的螢幕尺寸和方向Flutter
- Android 螢幕適配:最全面的解決方案Android
- AutoLayout螢幕適配
- Flutter螢幕適配Flutter
- mui 控制旋轉螢幕方向UI
- Unity3D結合NGUI的螢幕自適應程式碼分享Unity3DNGUI
- Android最全螢幕適配的幾個重要概念(三)Android
- Android dp方式的螢幕適配工具使用(Android Studio外掛方式)Android
- android 喚醒螢幕Android
- 移動APP測試-Android螢幕適配問題(一)APPAndroid
- 移動APP測試:Android螢幕適配問題二APPAndroid
- 【聊技術】在Android中實現自適應文字大小顯示Android
- android 螢幕適配二:手寫百分比佈局適配Android
- android 螢幕適配一:通過自定義View的方式實現適配AndroidView
- Android螢幕適配很難嘛?其實也就那麼回事Android
- [Android]今日頭條的螢幕適配方案,簡單又粗暴!Android