我有一個專爲平板電腦設計的應用程序。它以縱向模式顯示其數據的一個視圖,以及橫向數據的不同視圖。用戶可以隨意在兩者之間切換。Android:鎖定屏幕方向有時
在較小的「手機」型設備上,橫向太小而無用,但縱向模式仍然可行。我希望在較小的設備上強制使用肖像,並說明7以下的任何內容,同時允許在平板電腦上顯示兩種模式。
我該如何解決這個問題?
我有一個專爲平板電腦設計的應用程序。它以縱向模式顯示其數據的一個視圖,以及橫向數據的不同視圖。用戶可以隨意在兩者之間切換。Android:鎖定屏幕方向有時
在較小的「手機」型設備上,橫向太小而無用,但縱向模式仍然可行。我希望在較小的設備上強制使用肖像,並說明7以下的任何內容,同時允許在平板電腦上顯示兩種模式。
我該如何解決這個問題?
您應該遵循supporting multiple screens的開發者指南。然後,您可以使用sw限定符來切換物理屏幕大小。
也許Krylez是正確的,正確的解決辦法是做別的事情,但如果你想反正鎖定/解除屏幕方向(我一起用它來與短期運行AsyncTasks以避免應對ProgressDialog)
public class Device {
public static void lockOrientation(Activity activity) {
Display display = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
int tempOrientation = activity.getResources().getConfiguration().orientation;
int orientation = 0;
switch(tempOrientation)
{
case Configuration.ORIENTATION_LANDSCAPE:
if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
break;
case Configuration.ORIENTATION_PORTRAIT:
if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270)
orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
}
activity.setRequestedOrientation(orientation);
}
public static void releaseOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
}
這是正確的做法,這比直接回答問題更可取。我相信以正確的方式做事總比一起劈開事情要好。 –
所以我有一個/ layout文件夾和一個/ layout-sw600dp-land。在480x800手機上使用模擬器,應該沒有橫向佈局。然而,當我按Ctrl-F11將手機變爲風景時,它仍會嘗試將顯示切換爲風景。我如何防止這種情況? –
鎖定方向與清單中的活動使用android:screenOrientation =「portrait」一樣簡單,但這不是解決問題的方法。這聽起來像你需要重新考慮小屏幕的佈局。 – Krylez