Androidアプリケーションのマニフェストファイルで向きの変更を制限できることは知っていますが、デバイスの種類/サイズに応じてそれを行う方法があるかどうか疑問に思いました。
小型/中型の携帯電話では防止したいのですが、大型の携帯電話/タブレットでは許可します。
それを達成するための最良の方法は何ですか?どんな助けでも大歓迎です。
Androidアプリケーションのマニフェストファイルで向きの変更を制限できることは知っていますが、デバイスの種類/サイズに応じてそれを行う方法があるかどうか疑問に思いました。
小型/中型の携帯電話では防止したいのですが、大型の携帯電話/タブレットでは許可します。
それを達成するための最良の方法は何ですか?どんな助けでも大歓迎です。
そのためには、2つを1つにまとめる必要があると思います。
最初の部分:
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)
public voidを上書きし、密度と画面サイズをチェックするための独自のロジックを作成する必要があります。
しかし、注意してください..それは良い習慣ではありません。