android view getx 0,Android动画:解决通过View.getY()获取初始位置为0的问题

问题描述

View.getY()返回为0

问题背景

用ObjectAnimator进行平移动画的时候需要获取控件的初始位置以及结束位置,比如

ObjectAnimator animY = ObjectAnimator.ofFloat(rankRibbon, "Y", rankRibbon.getY(), rankRibbon.getY() + 30);

是将rankRibbon向下移动30px

也可以通过translationY设置控件的初始位置和平移相对距离

ObjectAnimator animY = ObjectAnimator.ofFloat(rankSlogan, "translationY", rankSlogan.getY(), -30);

是将rankSlogan向上移动30px

在这2个例子中都用到了getY(),通过getY返回该控件相对父控件的距离。

如果getY()返回是0就会出现动画异常。

解决方式

如果一个View初始化的时候设置的是View.Gone,那么该view在getY的时候获取的就是0,所以可以在xml里将View设置为invisiable,这样就不影响正常的获取view的位置。

在动画中经常需要获取View的位置,设置View的偏移,所以这个问题稍不注意就经常发生。

另一个问题

能够通过在获取getY之前setVisibility(View.VISIABLE)解决?

不能。这样设置之后好像是起到了将View显示的效果,但如果View并没有完全显示出来,马上获取getY有时也会是0,这样getY就变成了一个偶现的问题(偶现的问题解决起来更麻烦)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值