我知道您可以限制Android應用程序的清單文件中的定位更改,但我想知道是否有一種方法可以根據設備類型/大小進行更改。防止某些設備上的Android定位更改
我想阻止它在中小型手機上,但允許在大型手機/平板電腦上使用。
實現該目標的最佳方法是什麼?任何幫助將非常感激。
我知道您可以限制Android應用程序的清單文件中的定位更改,但我想知道是否有一種方法可以根據設備類型/大小進行更改。防止某些設備上的Android定位更改
我想阻止它在中小型手機上,但允許在大型手機/平板電腦上使用。
實現該目標的最佳方法是什麼?任何幫助將非常感激。
爲此,我認爲您需要將兩件事合二爲一。
對於第一部分:
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
switch(screenSize) {
case Configuration.SCREENLAYOUT_SIZE_LARGE:
Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
Toast.makeText(this, "Normal screen",Toast.LENGTH_LONG).show();
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
}
信用:https://stackoverflow.com/a/11252278/450534(溶液容易得到關於SO)
最後,基於上述碼的結果,無論是其中:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
或
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
嗯,我可能是錯的,但據我所知,沒有直接的方法做到這一點。
您需要以編程方式檢查屏幕尺寸,並在此基礎上允許或禁止方向更改。
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE)
{
// screen is large.. allow orientation changes
}
else
{
//restrict orientation
}
你可以在活動onCreate
檢查您的設備尺寸過程中使用和調用方法setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
(您想針對大小或任何方向)。
請注意,如果活動不在請求的方向上,那麼這個活動將被銷燬並創建一個新活動。
檢查您的代碼的屏幕大小,並決定
setRequestedOrientation();
或不是
你需要覆蓋公共無效onConfigurationChanged(Configuration newConfig)
並創建自己的邏輯檢查密度和屏幕尺寸。
但要小心..這不是好的做法。
+1對於「解決方案已在SO上很容易獲得」 – Pragnani 2013-02-24 14:27:37
@Pragnani:應得的信用,它是由於呃。不能聲稱不是我的東西;-) – 2013-02-24 14:29:00
我很欣賞這個解決方案很容易在SO中找到,但我不能通過問題標題找到它,因爲在那個階段我不知道以編程方式執行它是唯一的方法。我希望能有一些配置。不管怎麼說,還是要謝謝你。 – Zyga 2013-02-25 09:37:05