画面サイズによってAndroidマニフェストを変える方法はありますか?デバイスがタブレット(つまり、xlarge画面サイズ)の場合、android:configChangesに「orientation」を含めないようにします
さらに、使用するデバイスによってandroid:screenOrientationを変えたいと思います。何かアドバイス?
画面サイズによってAndroidマニフェストを変える方法はありますか?デバイスがタブレット(つまり、xlarge画面サイズ)の場合、android:configChangesに「orientation」を含めないようにします
さらに、使用するデバイスによってandroid:screenOrientationを変えたいと思います。何かアドバイス?
AndroidManifest.xmlでこれほど複雑なことを行う方法はわかりませんが、Activity.setRequestedOrientation()
メソッドを介してプログラムで行うことができます。これをユーティリティクラスでラップし、それに応じて環境にクエリを実行するのは簡単です。ただし、警告の一言です。このメソッドを呼び出すと実際に向きが変わる場合は、アクティビティonCreate()
が2回目に呼び出されます。次のことが真であると評価された場合に、このルートを選択した場合に役立つ可能性のあるもう1つのこと:
if((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {...}
次に、タブレットデバイスを使用しているか、少なくともレイアウトがlayout-large(ある場合)からロードされています。すべてをまとめると、次のようにすると、タブレットが横向きモードにロックされ、電話が縦向きモードにロックされます。
if ((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
return true;
} else if ((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
return false;
} else if ((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
return false;
} else {
// Assume that all other ratings are tablets or possibly even larger devices; there is an
// extra large spec however it is only available OS versions 3.x and above so there is no clean way to query for this state.
return true;
}
これを見てください.........supports-screensandroid:resizeable = ["true" | "false"] android:smallScreens = ["true" | "false"] android:normalScreens = ["true" | "false"] android:largeScreens = ["true" | "false"] android:xlargeScreens = ["true" | "false"] android:anyDensity = ["true" | "false"] android:requiresSmallestWidthDp = "integer" android:compatibleWidthLimitDp = "integer" android:largestWidthLimitDp ="integer...............画面を処理します