私のタイルの寸法は、画面の幅と高さによって異なります。
いつ彼らに彼らの寸法を与えるべきですか?
OnSizeChangedでそれらを初期化する場合、onSizeChangedが初めて発生したかどうかを知るためにブール値が必要になります。
タイルの寸法を相対値で保存する方が適切でしょうか?
これを行うための適切な方法は何でしょうか?
ありがとう
これを行うときはGlobalLayoutListener
、次のようなものを使用します。
final ViewGroup myViewGroup = (ViewGroup) findViewById(R.id.my_viewgroup);
ViewTreeObserver vto = myViewGroup.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//myViewGroup should now have dimensions, but sometimes
//it takes two passes, so...
if(myViewGroup.getWidth() == 0) return;
//Set whatever stuff here
myTileSizes = whateverSize;
//Remove this listener -- no longer needed
myViewGroup.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
個人的には、測定を行ったかどうかにかかわらず、ブール値を保持するというあなたのアイデアが好きです。同様に効果的である必要があります。