あなたは(... getId()
、getAlpha()
、getHeight()
のような)標準ゲッターを使用してheight
、alpha
、id
、matrix
、drawingTime
またはelevation
のようないくつかのビューのプロパティを取得することができます。なぜAndroidビュークラスには、いくつかのプロパティのための 'outValuesスタイル'ゲッターがありますか?
しかし、その後、あなたは(Point
またはRect
戻り値の型とそれらのほとんどを)ビューのプロパティの一部を持っているlocationInWindow
、globalVisibleRect
、locationInScreen
、drawingRect
、drawingCache
空のコンストラクタを事前にオブジェクトを返す作成することを強制されているゲッター下に隠さのようなこれらのオブジェクトをゲッター・パラメーターとして渡して、データがそれらに保存されるようにします。 globalVisibleRect
のgetterの
例:あなたはこのような何かを行うには
public final boolean getGlobalVisibleRect(Rect r)
力(Kotlin):
val rect = Rect()
getGlobalVisibleRect(rect)
doSomeStuffWithRect(rect)
それは本当に一貫性のない、またそれが表現タブでリアルタイムにデバッグですAndroidスタジオでは本当に面倒です。
なぜこのように行われますか?ビューが表示されていない場合、falseのブール値を返すメソッドの一部が表示されるので、返されたデータが無効であることがわかりますが、メソッドが既に使用できない情報を生成したことを既に知っている場合はnull値を返して解決してはなりません。一方、getLocationOnScreen
はvoidを返し、追加のパラメータを持たないので、なぜあなたはそのように複雑になるのでしょうか、私は本当に理解できません。
これは非常に興味深い点ですが、ビュープールのプロパティをプールするためにオブジェクトプールを使用する開発者は見たことがありません。ヒープの断片化を少し読んでくれます。ありがとう! –
@PrzemyslawJablonski:アプリ開発者は、getGlobalVisibleRect()のようなメソッドの主な消費者ではないことに注意してください。フレームワークは、 'View'、' ViewGroup'、およびkinの形であります。 – CommonsWare