Android画面を固定したい
Androidアプリで画面を自動で回転する様に設定していると回転した時にデータが初期化されてしまい困る事が有ります。
java側で画面を固定出来るようにする方法をメモしておきます。
onCreate 内で画面固定
onCreate 内でsetRequestedOrientationを呼び出します。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /////////////////////////////////////////////////////////////// int orient = this.getResources().getConfiguration().orientation; if(orient == 1){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }else{ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } /////////////////////////////////////////////////////////////// }
this.getResources().getConfiguration().orientation;
を呼び出します。
返値(orient)は、ActivityInfoの定数値で
「1」:ActivityInfo.SCREEN_ORIENTATION_PORTRAIT(縦画面)
「2」:ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE(横画面)
setRequestedOrientationを呼び出す事で、縦画面で立ち上がった時は縦画面で固定出来ます。
ボタンクリック等で画面固定
関数を作ってボタンの「onClick属性」等で呼び出します。
public void orientChenge(View view){ int orient = this.getResources().getConfiguration().orientation; if(orient != 1){ orient = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; }else{ orient = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; } this.setRequestedOrientation(orient); }
if文の条件がonCreate内とは違うのがポイント!
*両方実装する事でアプリを立ち上げた状態で画面固定とボタンを押すたびに切り替え固定が出来ます。
まとめ
画面が切り替わると、onCreateが呼ばれて初期化されてしまうので固定化が一番簡単な対処法だと思います。