http://market.android.com/
今回、flickrからCreative Commonsで再利用可能な写真を使ってみました。
なお、エクスペリア等、解像度が高い端末ではパズルが大きく表示されるよう変更しています。
このパズルの画面はCustom Viewでサイズを動的に変えるために少々苦労しました。
画面全体のViewのサイズは以下のコード(LayoutのIDは適当に変えれば)をActivityに追加すると取ることができます。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
int w = findViewById(R.id.mainlayout).getWidth();
int h = findViewById(R.id.mainlayout).getHeight();
}
ところがCustom Viewを呼び出すActivityに上記のコードを埋め込んでも、layoutが確定し, Custom ViewのonMeasureメソッドが呼ばれたあとにActivityのonWindowFocusChangedメソッドが呼び出されてしまい、この後、onMeasureで画面サイズに応じたサイズを返すことができません。
よって、このActivityを呼び出す前の画面で、onWindowFocusChangedで画面サイズを取得し、staticな領域に保存しました。
Custom ViewのonMeasureでは上記で取得したサイズを元に最適サイズを計算しています。
Activityが遷移しても画面サイズは変わらない(はず)ですので、最初に取得しておけば大丈夫
です。
0 件のコメント:
コメントを投稿