- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,请允许我道歉,但我不知道还能问哪里。
我想理解下面的代码可以是found here.
除了 getViewTreeObserver
位之外,我了解所有内容:
movingView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
yAnimation = createSpringAnimation(movingView,SpringAnimation.Y, movingView.getY(), STIFFNESS, DAMPING_RATIO);
xAnimation = createSpringAnimation(movingView,SpringAnimation.X, movingView.getX(), STIFFNESS, DAMPING_RATIO);
movingView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
为什么我们需要这个位?最后一行,从 movingView
中删除了 OnGlobalLayoutListener
,所以我不明白为什么我们设置它然后删除它。如果我从这个监听器中取出 yAnimation 和 xAmination 行,然后单独运行它们,代码仍然可以正常工作,但不会返回到原来的 X但我不明白为什么上面的代码允许 createSpringAnimation 函数接收正确的 X 和 Y。
请问有人可以帮我理解吗?
最佳答案
Android 需要时间在布局中布置 View
。如果您尝试立即读取 View 的任何参数,您通常会得到 0 或框架在计算正确值之前使用的任何默认值。由于此操作是异步的,因此您需要注册一个监听器,以便在布局准备就绪时收到通知。然后,当然,您可以读取这些值并删除监听器,因为不再需要它了。但要小心,因为有时监听器会被多次调用,因此在使用值之前和取消注册监听器之前,请检查您是否确实设法读取了有意义的值。
关于java - 了解 getViewTreeObserver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52494270/
首先,请允许我道歉,但我不知道还能问哪里。 我想理解下面的代码可以是found here. 除了 getViewTreeObserver 位之外,我了解所有内容: movingView.getView
当我使用 GlobalLayoutListener 查看 softKeyboard 是否打开时,该 fragment 在被销毁后不再被垃圾回收。 我的工作: 我在 fragment 的 onDestr
我是一名优秀的程序员,十分优秀!