Android:有没有办法在TranslateAnimation之后获得View的最新位置?

前端之家收集整理的这篇文章主要介绍了Android:有没有办法在TranslateAnimation之后获得View的最新位置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我知道多种方法获取View的位置值.

  1. getLocationOnScreen()
  2. getLocationInWindow()
  3. getLeft()

但是,它们都没有实际返回由startAnimation()方法移动的View I的当前位置,而只返回原始位置.

所以,现在让我们在每个Click上创建一个向右移动10个像素的视图(我省略了布局,因为您可以在主XML中放置任何视图并将其赋予onClickListener).

  1. public class AndroidTestActivity extends Activity implements OnClickListener {
  2. LinearLayout testView;
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. testView = (LinearLayout) this.findViewById(R.id.test);
  8. testView.setOnClickListener(this);
  9. }
  10. public void onClick(View v) {
  11. int[] pLoS = new int[2];
  12. testView.getLocationOnScreen(pLoS);
  13. TranslateAnimation move = new TranslateAnimation(pLoS[0],pLoS[0] + 10,0f,0f);
  14. move.setFillAfter(true);
  15. move.setFillEnabled(true);
  16. testView.startAnimation(move);
  17. }
  18. }

如你所见,这不能按我的意思工作,因为getLocationOnScreen()总是返回相同的值(在我的情况下为0),并且不反映我在TranslateAnimation中使用的值…

任何的想法?

最佳答案
假设您正在使用Android< 3.0然后你的问题可能与我的问题类似于我问here.基本上动画与视图本身是分开的,即Android动画制作视图的副本.这就是getLocationOnScreen()始终返回0的原因.不是移动(动画)的视图是移动(动画)的副本.如果您看到我的问题的答案,则此问题已在Android的更高版本中得到解决.

猜你在找的Android相关文章