2012-05-08 16 views
2

大型または大画面のいずれの向きでも見栄えが良いアプリがありますが、携帯電話のポートレートに制限する必要があります。マニフェスト内のアクティビティの向きを制限することはできますが、条件付きで行う方法はありますか?または、どの方向性がサポートされているかを選択するために、アクティビティ自体に設定できるプロパティがありますか?Android:画面サイズに基づいてアクティビティの方向を制限する

答えて

9

これは私が私のアプリケーションで使用ソリューションです:

public void onCreate(Bundle savedState) { 
    //... 

    if(isScreenLarge()) { 
     // width > height, better to use Landscape 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } else { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 
} 

public boolean isScreenLarge() { 
    final int screenSize = getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK; 
    return screenSize == Configuration.SCREENLAYOUT_SIZE_LARGE 
      || screenSize == Configuration.SCREENLAYOUT_SIZE_XLARGE; 
} 
+0

大感謝。私が作った唯一の変更は、 'SCREEN_ORIENTATION_PORTRAIT'の代わりに' SCREEN_ORIENTATION_UNSPECIFIED'を使うことでした。なぜなら、タブレットが風景と肖像の両方をサポートしたかったからです。 – mtmurdock

+1

レイアウトやマニフェストでこれを行う方法はありますか? – mtmurdock

+0

'setRequestedOrientation()'の後のアクティビティローテーションの場合、 'onCreate()'が2回呼び出されるように注意してください。 –

関連する問題