Android:如何在布局更新之前和之后获取View位置?

时间:2010-12-21 01:46:06

标签: android

我正在尝试创建一个动画来链接视图的两个位置。 View的位置由重写的onLayout方法定义。我使用getLocationOnScreen方法获取位置更新前后的位置。

这是我的代码简化:

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方法,但我想首先测试更干净的方法... 我也可以自己调用onLayout方法,但我不确切知道如何计算它的参数。

欢迎任何想法!

0 个答案:

没有答案