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

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

概述我知道多种方法来获取View的位置值.getLocationOnScreen() getLocationInWindow() getLeft() 但是,它们都没有实际返回由startAnimation()方法移动的View I的当前位置,而只返回原始位置.所以,现在让我们在每个Click上创建一个向右移动10个像素的视图(我省略了布局,因为您可以在主XML中

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

getLocationOnScreen()getLocationInWindow()getleft()

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

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

public class AndroIDTestActivity extends Activity implements OnClickListener {  linearLayout testVIEw;@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);    testVIEw = (linearLayout) this.findVIEwByID(R.ID.test);    testVIEw.setonClickListener(this);}public voID onClick(VIEw v) {    int[] pLoS = new int[2];    testVIEw.getLocationOnScreen(pLoS);    TranslateAnimation move = new TranslateAnimation(pLoS[0],pLoS[0] + 10,0f,0f);    move.setFillAfter(true);    move.setFillEnabled(true);    testVIEw.startAnimation(move);}}

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

任何的想法?

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

以上是内存溢出为你收集整理的Android:有没有办法在TranslateAnimation之后获得View的最新位置?全部内容,希望文章能够帮你解决Android:有没有办法在TranslateAnimation之后获得View的最新位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存