你可以得到一些查看屬性,如height
,alpha
,id
,matrix
,使用標準的干將drawingTime
或elevation
(如getHeight()
,getAlpha()
,getId()
...)。爲什麼Android View類爲少數屬性提供'outValues style'getter?
但是,你有一些查看的屬性(其中大部分與Point
或Rect
返回類型)像locationInWindow
,globalVisibleRect
,locationInScreen
,drawingRect
,drawingCache
下干將隱藏的是強迫你創建一個空的構造事先返回對象,並將這些對象作爲getter參數傳遞,以便將數據「保存」給它們。爲globalVisibleRect
吸氣的
例子:
public final boolean getGlobalVisibleRect(Rect r)
強迫你做這樣的事情(科特林):
val rect = Rect()
getGlobalVisibleRect(rect)
doSomeStuffWithRect(rect)
這不是真的一致,也不是調試的實時使用表達式標籤在Android Studio中,它真的很麻煩。
爲什麼這樣做?如果View不可見,我會看到一些返回false布爾值的方法,因此您知道返回的數據是無效的,但是如果方法已經知道它產生了不可用的信息,那麼不應該使用返回空值來解決它。另一方面,getLocationOnScreen
返回void並且沒有附加參數,所以我不能真正理解爲什麼你會以這種方式複雜化。
這是一個非常有趣的觀點,儘管我從來沒有見過開發人員使用對象池來合併視圖的屬性。請稍微閱讀一下堆碎片,謝謝! –
@PrzemyslawJablonski:請記住,應用程序開發人員不是像getGlobalVisibleRect()這樣的方法的主要消費者。該框架以'View','ViewGroup'和kin的形式出現。 – CommonsWare