解决Android中TranslateAnimation后出现残影的问题

最近在做一个需求,是一个注册页面,要求输入完11位的手机号后让这个EditText做一个左移的动画,很自然的,我想到了用TranslateAnimation,当输入11位的时候,这个EditText顺利的左移了,但是当删除一位号码的时候,出现了号码的残影,这样的效果可不能达标啊。所以我的做法是:


1)调用EditText的clearAnimation()函数,阴影是消失了,但是动画也消失了,EditText会回到原来的位置,所以这种方案不可行

2)获取包裹EditText的父layout,通过对父layout执行invalidate()函数,这个函数会对View进行刷新,这样,问题看似解决了


但是问题又来了,这种解决方案只是在一部分机型上可行,在一些机型上甚至会出现两个光标的情况,通过仔细观察,发现其中一个光标是在闪动的,一个是不变的,突然恍然大悟,原来TranslateAnimation只是对当前的View进行截图,然后以图像的形式进行移动,EditText本质上是没有任何移动的,所以会出现两个光标的情况


最后,我用了属性动画,但是这只能在Android3.0以上使用,3.0以下版本想要使用属性动画要有NineoldAndroids动画库的支持,它的原理是通过不断改变View的属性值进行动画,所以不会出现EditText不移动的问题,这样问题得到顺利的解决



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值