Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何在布局更新前后获得视图位置?_Android - Fatal编程技术网

Android:如何在布局更新前后获得视图位置?

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(

我正在尝试创建一个动画来链接视图的两个位置。视图的位置由替代的方法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方法添加事件系统,但我想先测试cleaner方法。。。 我也可以自己调用onLayout方法,但我不知道如何精确计算它的参数


欢迎任何意见

我误解了TranslateImation参数。要使视图从起始位置移动到结束位置,它应该是这样的:动画动画动画=新的TranslateAnimation(结束位置[0]-起始位置[0],0,结束位置[1]-起始位置[1],0);2年后-有任何关于wind的建议吗?我误解了TranslateImation参数。要使视图从起始位置移动到结束位置,它应该是这样的:动画动画动画=新的TranslateAnimation(结束位置[0]-起始位置[0],0,结束位置[1]-起始位置[1],0);2年后-风有什么建议吗?