その4 onWindowFocusChanged
自分へのメモも兼ねて、記事に残しておこうと思います。
アプリを作成する上で、Viewのサブクラスのコンストラクタなどで、getWidth()やgetHeight()をしても、
正しくViewのサイズが取ってこれず、Viewに描画した画像の初期位置が正しくないことがありました。
この原因として、Viewが表示されていない為、Viewのサイズを取ろうとしても、
正しい大きさが設定されておらず、マイナスの値が入っていたり、
デフォルトの値が入っていたりしています。
・・・さて、どうしたものかと悩んだ時に、解決への糸口となったのが、
onWindowFocusChangedメソッドです。
このメソッドは、、Activityのメソッドで、
Activityから、フォーカスが移った直後か失った直後に発生します。
今回の場合だと、Activity表示後に、Viewが表示されることで、
Viewにフォーカス移り、その時点で呼び出されます。
実際に使用するときは、Activityクラスに以下のメソッド追加します。
@Override public void onWindowFocusChanged(boolean hasFocus) { // フォーカス変更後の処理 }
Activityで、呼び出される為、Viewのインスタンスをメンバで持っておくことになるでしょう。
この後、描画画像の初期化を設定することで解決しました。