Android 画面サイズの取得 onWindowFocusCanged
■画面サイズの取得 ~
画面全体の <LinearLayout>を作る
■ activity_main.xml
<LinearLayout
android:id="@+id/layout_all"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
~
■ 画面サイズの取得は onWindowFocusCanged(boolean hasFocus) 内で
public boolean init_flag = false;
~
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), "onCreate init_flag = " + String.valueOf(init_flag), Toast.LENGTH_SHORT).show();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(init_flag == false) {
init_flag = true;
init_process();
}
}
init_process();は初回だけにしたいので、init_flag を使って、ワンショットにする。
■ バックボタンの処理
バックボタンで戻ってしまうと、次に、onCreate, onWindowFocusChanged を呼び出してしまうので、バックボタン操作時の動作を指定しておく。
import android.view.KeyEvent;
~
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode != KeyEvent.KEYCODE_BACK){
return super.onKeyDown(keyCode, event);
}else{
confirm_exit();
return false;
}
}