你可以得到一些查看属性,如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