自分のアクティビティをポートレートモード(ポートレートモードとリバースポートレートモード)の両方でのみ使用できるようにしたい。どうすればこれを達成できますか? Android:screenOrientation="portrait"
を設定すると、アクティビティは通常のポートレートのみになります。reversePortraitではその逆になります。
フォース/ロックオリエンテーションへの悪いアプローチだと言わないでください。私はそれについて知っていますが、それでもクライアントはそれを要求しています。理解とアイデアをありがとう。
PDATE: APIレベル11以上
APIレベル9以降を使用している場合は、Android:screenOrientation="sensorPortrait"
を使用してください。
縦向きですが、デバイスセンサーに基づいて通常または逆の縦向きにすることができます。 APIレベル9で追加されました。
後世のために、これを下位互換性のために使用します...
public final class OrientationHelper {
@TargetApi(Build.VERSION_CODES.Gingerbread)
public static void setRequestedOrientationSensorPortrait(Activity activity) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
@TargetApi(Build.VERSION_CODES.Gingerbread)
public static void setRequestedOrientationSensorLandscape(Activity activity) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
}
使用法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OrientationHelper.setRequestedOrientationSensorPortrait(this);
super.setContentView(R.layout.my_layout);
}
AndroidManifest.xml
:
Android:screenOrientation="portrait|reversePortrait"
Android:configuration="keyboardHidden|orientation"
あなたのWhateverActivity.Java
:
protected void onConfigurationChanged(Configuration newConfig) {
int currentOrientation = getResources().getConfiguration().orientation;
if(newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ||
newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT) {
super.onConfigurationChanged(newConfig);
}
}
あなたはこれを試すことができます:)