Android:如何在布局更新前后获得视图位置?
我正在尝试创建一个动画来链接视图的两个位置。视图的位置由替代的方法onLayout定义。我正在使用getLocationOnScreen方法获取职位更新前后的职位 以下是我的简化代码:Android:如何在布局更新前后获得视图位置?,android,Android,我正在尝试创建一个动画来链接视图的两个位置。视图的位置由替代的方法onLayout定义。我正在使用getLocationOnScreen方法获取职位更新前后的职位 以下是我的简化代码: int[] startPosition = new int[2]; view.getLocationOnScreen(startPosition); // do some layout update that changed the view position on screen requestLayout(
int[] startPosition = new int[2];
view.getLocationOnScreen(startPosition);
// do some layout update that changed the view position on screen
requestLayout();
invalidate();
int[] endPosition = new int[2];
view.getLocationOnScreen(endPosition);
Animation anim = new TranslateAnimation(startPosition[0], endPosition[0], startPosition[1], endPosition[1]);
anim.setDuration(100);
view.startAnimation(anim);
问题是,在布局更新和对requestLayout的调用之后,不会调用onLayout方法。。。我发现调用requestLayout只会安排视图树的布局过程。所以我的问题是:如何同步进行布局计算?还是等待它的结束?
我可以使用postDelayed或向onLayout方法添加事件系统,但我想先测试cleaner方法。。。
我也可以自己调用onLayout方法,但我不知道如何精确计算它的参数
欢迎任何意见 我误解了TranslateImation参数。要使视图从起始位置移动到结束位置,它应该是这样的:动画动画动画=新的TranslateAnimation(结束位置[0]-起始位置[0],0,结束位置[1]-起始位置[1],0);2年后-有任何关于wind的建议吗?我误解了TranslateImation参数。要使视图从起始位置移动到结束位置,它应该是这样的:动画动画动画=新的TranslateAnimation(结束位置[0]-起始位置[0],0,结束位置[1]-起始位置[1],0);2年后-风有什么建议吗?