簡體   English   中英

如何在Android上針對不同設備修復屏幕方向

[英]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.xmlres/layout-port/main.xml闡明方向。

我想我需要在res/layout/main.xml聲明layout,並在res/layout-land/main.xmlres/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM