Android 位移动画移动后 子元素未移动问题

问题描述:

移动一个Linerlayout 包含子元素多个button ,使用位移动画后,发现button的点击区域还在位移前的位置,并没有跟随移动,百思不得解,最后在CSDN发现了解决了方法,感觉这个api 有点不太友好,不知道这样设计的目的是出于什么考虑,但对于使用者来说,确实带来不少麻烦。解决参考 http://bbs.csdn.net/topics/360035885 很久之前的帖子了。


筛选的解决方法:


例如初始位置是0,你要运动到 300

那么你可以new TranslateAnimation(0, 300, 0, 0);来获得位移动画,但是移动后,它会闪回0位置,因为控件实际坐标还是0 (你可以用getX()来测试一下),而如果你用setFillAfter(true)来填充位置,它看起来停留在300了,可是你getX(),它还是0,这种情况就好像控件被拉伸了,但是实际坐标没有变,最要命的是,点击热区不会随控件移动(让人无法接受...)

然后这里提出了先移位,再做位置变换,你先visibility-gone,移动好控件位置,再visibility-visible,然后这时候你控件的位置已经在300了,如果这时候你用new TranslateAnimation(0, 300, 0, 0),就会从300移动到600再弹回来,于是做个反向offset,new TranslateAnimation(-300, 0, 0, 0),那么就从0,运动到300,而且不回弹了

转载于:https://my.oschina.net/u/578888/blog/650827

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值