[英]How to fix screen orientation on android for different devices
我想在我的Android應用程序中禁用更改方向,但我想允許用戶使用其本機方向:平板電腦為橫向,手機為縱向。
我嘗試將“ android:screenOrientation”設置為不同的值,但找不到合適的值。
這樣的任務是否需要編寫Java代碼(以及我需要編寫哪些代碼),或者可以使用清單來解決?
UPD正如@Pierrew的提示一樣,我需要為默認布局創建res/layout/main.xml
,為景觀布局創建res/layout/main.xml
res/layout-land/main.xml
,為肖像布局創建res/layout-port/main.xml
。 因此,我需要知道如何在res/layout/main.xml
定義所有布局,並且僅在res/layout-land/main.xml
和res/layout-port/main.xml
闡明方向。
我想我需要在res/layout/main.xml
聲明layout,並在res/layout-land/main.xml
和res/layout-port/main.xml
派生所有布局屬性,並在派生中僅覆蓋android:screenOrientation
值布局。
我該怎么辦?
在布局xml中設置android:screenOrientation="landscape"
是實現此目的的方法。 要支持其他設備(平板電腦和手機),您需要使用大小限定符。 在您的res文件夾中,您將必須創建res / layout-large / main.xml以支持平板電腦。 因此,如果您想要平板電腦的風景。 在res / layout-large / main.xml中,放置android:screenOrientation="landscape"
。 在常規的res / layout / main.xml中,您可以放置android:screenOrientation="portrait"
。 Android將自動檢測用戶使用的設備並加載適當的xml。 有關更多信息,請查看http://developer.android.com/training/multiscreen/screensizes.html#TaskUseSizeQuali中的大小限定符部分
您可以使用這些方法使用一些邏輯。
Boolean isTablet = (ctx.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
以編程方式更改屏幕方向。
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActivityInfo:
http://developer.android.com/reference/android/content/pm/ActivityInfo.html
這應該為您解決問題:
import android.provider.Settings;
public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled){
Settings.System.putInt( context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}
向AndroidManifest.xml添加權限
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.