在onCreate()中使用getLocationOnScreen()方法只会返回零值

9
在按下按钮响应时,调用ImageView(或其他视图)上的getLocationOnScreen()方法会给出正确的值。但是,在从Activity :: onCreate()中调用getLocationOnScreen()方法时,我只得到[0,0]。如何解决这个问题?onCreate()是否为所有计算提前了?有没有更好的地方来启动动画?

1
你的目标是什么?是为动画创建一个起点吗? - Niko Adrianus Yuwono
以https://dev59.com/_2kv5IYBdhLWcg3w40wY#10542153中的代码为例。它通过按下按钮将视图移动到屏幕中心。如果在onCreate中已经引起了相同的循环,那么它不起作用,因为view.getLocationOnScreen()返回空值。 - Jonny
@NikoAdrianusYuwono 是的,实际上我也有同样的问题。我正在尝试在滚动RecyclerView时对我的ProgressBar进行动画处理。我希望它在开始显示时到屏幕中间时进行动画处理。 - Irfan Yaqub
1个回答

27

onCreate() 中检查 getLocationOnScreen() 还为时过早。更好的地方是在视图级别上(如果您正在使用自定义视图),即在 onLayout() 中。只有在这里,视图的大小和位置才会被计算出来。如果您不创建自定义视图,则可以在活动级别上通过 onWindowFocusChanged()(拥有焦点的活动)获取它。


1
谢谢,我能够在https://dev59.com/Km855IYBdhLWcg3wy3ob#6560726找到相同的答案`onWindowFocusChanged()`。我认为参考文献http://developer.android.com/reference/android/view/View.html#getLocationOnScreen(int[])对于许多人似乎存在的这些常见陷阱有点保密。 - Jonny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接