回答:
はい、実装可能です!
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActivityInfo
http://developer.android.com/reference/android/content/pm/ActivityInfo.html
リンクを参照してください:
Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait);
Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape);
buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
});
http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatically.html
はい、いつでも使用したいときにプログラムで画面の向きを設定できます。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
それぞれ横長モードと縦長モード用。setRequestedOrientation()メソッドはActivityクラスで使用できるため、アクティビティ内で使用できます。
これは、現在の画面の向きを取得し、現在の状態に応じて適切に設定する方法です。
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
final int orientation = display.getOrientation();
// OR: orientation = getRequestedOrientation(); // inside an Activity
// set the screen orientation on button click
Button btn = (Button) findViewById(R.id.yourbutton);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
switch(orientation) {
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Configuration.ORIENTATION_LANDSCAPE:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
}
}
});
ここから取得:http : //techblogon.com/android-screen-orientation-change-rotation-example/
編集
また、次を使用して画面の向きを取得できますConfiguration
。
Activity.getResources().getConfiguration().orientation
getRequestedOrientation()
、現在の画面の向きを取得する:stackoverflow.com/a/21909327/1037294を
getRequestedOrientation()
UNSPECIFIED
アプリを起動すると表示されます。したがって、上記のリスナーでは画面は変更されません。それに追加UNSPECIFIED
する場合は、最初にswitch
画面を縦/横のいずれかの位置に配置する必要があります。
可能な限り、SCREEN_ORIENTATION_LANDSCAPEまたはSCREEN_ORIENTATION_PORTRAITを使用しないでください。代わりに以下を使用してください:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
これらにより、ユーザーはデバイスを横向きまたは縦向きにそれぞれ向けることができます。充電ケーブルを胃の中に差し込んでゲームをプレイしなければならなかったことがあれば、両方の向きを利用できることがユーザーにとって重要である理由を正確に理解できます。
注:私が確認した少なくともいくつかの電話では、「縦向き」のポートレートモードしか使用できませんが、SENSOR_PORTRAITはタブレットで正常に動作します。
注:この機能はAPIレベル9で導入されたため、8以下をサポートする必要がある場合(現時点ではそうではない)、代わりに次を使用します。
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
これを使用して、画面の向きを設定します。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
または
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
これをマニフェストに追加することを忘れないでください:
android:configChanges = "orientation"
"orientation|screenSize"
、ここを見て:developer.android.com/guide/topics/resources/...
実用的なコード:
private void changeScreenOrientation() {
int orientation = yourActivityName.this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
showMediaDescription();
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
hideMediaDescription();
}
if (Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}, 4000);
}
}
ボタンクリックでこのメソッドを呼び出す