Android編程實現屏幕自適應方向尺寸與分辨率的方法
本文實例講述了Android編程實現屏幕自適應方向尺寸與分辨率的方法。分享給大家供大家參考,具體如下:
Android 屏幕自適應方向尺寸與分辨率,包括屏幕界面布局、多分辨率支持、獲取屏幕尺寸、屏幕橫屏與豎屏等,android 模擬器橫屏,android 虛擬機橫屏,android 判斷橫屏,android 禁止橫屏,android 強制橫屏,android 橫屏事件,android 自適應分辨率,android 屏幕自適應,android 圖片自適應,android 橫屏布局。
屏幕界面布局
Android 手機屏幕大小有 480x320 、640x360, 、800x480 ,怎樣讓 App 自動適應不同的屏幕呢?
我們可以在 res 目錄下創(chuàng)建不同的 layout 文件夾,比如 layout-640x360 、layout-800x480 ,所有的 layout 文件在編譯之后都會寫入 R.java 里,而系統(tǒng)將根據屏幕的大小自己選擇合適的 layout 進行使用。
多分辨率支持
支持多分辨率有 mdpi、ldpi、hdpi 3個文件。
① hdpi 里面存放高分辨率的圖片,如 WVGA (480x800),FWVGA (480x854) ;
② mdpi 里面存放中等分辨率的圖片,如 HVGA (320x480) ;
③ ldpi 里面存放低分辨率的圖片,如 QVGA (240x320) 。
系統(tǒng)將根據機器的分辨率來分別到這幾個文件夾里面去找對應的圖片,在程序開發(fā)中,為了兼容不同平臺不同屏幕,建議將不同版本圖片根據需求存放在各自對應的文件夾中。
獲取屏幕尺寸
Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; float density = dm.density; float xdpi = dm.xdpi; float ydpi = dm.ydpi;
屏幕橫屏與豎屏
1、橫屏豎屏自動切換
首先在 res 目錄下建立 layout-port-800x600和layout-land 兩個目錄,里面分別放置豎屏和橫屏兩種布局文件,這樣在手機屏幕方向變化的時候系統(tǒng)會自動調用相應的布局文件,避免一種布局文件無法滿足兩種屏幕顯示的問題。
有的程序適合從豎屏切換到橫屏,或者反過來,這個時候怎么辦呢?可以在配置 Activity 的地方進行如下的配置:
這樣就可以保證是豎屏總是豎屏了,或者 landscape 橫向。
而有的程序是適合橫豎屏切換的。如何處理呢?首先要在配置 Activity 的時候進行如下的配置:
另外需要重寫 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 } }
2、不同分辨率橫屏豎屏自動切換
以800x600 為例,可以在res目錄下建立 layout-port-800x600 和 layout-land-800x600 兩個目錄
說明:每個 activity 都有這個屬性 screenOrientation ,每個 activity 都需要設置,可以設置為豎屏(portrait),也可以設置為無重力感應(nosensor)。
3、屏幕固定,不隨手機方向轉動而變化
可以在 AndroidManifest.xml 中配置,加入:
例如(landscape 是橫向,portrait 是縱向):
<?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銷毀前保存當前活動的狀態(tài),在Activity再次Create的時候載入配置,那樣進行中的游戲就不再自動重啟。
希望本文所述對大家Android程序設計有所幫助。
相關文章
Android中ToggleButton開關狀態(tài)按鈕控件使用方法詳解
這篇文章主要為大家詳細介紹了Android中ToggleButton開關狀態(tài)按鈕控件的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08基于android中的各種顏色在drawable.xml中的值詳解
本篇文章是對在android中的各種顏色在drawable.xml中的值進行了詳細的介紹。需要的朋友參考下2013-05-05Android開發(fā)筆記XML數據解析方法及優(yōu)缺點
XML數據是一種常見的數據格式,Android開發(fā)中需要對其進行解析。常用的XML解析方式有DOM、SAX、Pull和Json等,每種方式都有其優(yōu)缺點。開發(fā)者可以根據具體需求選擇合適的解析方式,提高數據解析效率和性能2023-05-05Android編程實現ViewPager多頁面滑動切換及動畫效果的方法
這篇文章主要介紹了Android編程實現ViewPager多頁面滑動切換及動畫效果的方法,以完整實例形式分析了ViewPager多頁面滑動切換效果的布局及功能實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11Android中TextView自動適配文本大小的幾種解決方案
在布局中使用的話,注意按照你最大的設備來設置字體大小,這樣在小設備上回自動縮放,下面這篇文章主要給大家介紹了關于Android中TextView自動適配文本大小的幾種解決方案,需要的朋友可以參考下2022-06-06