1. 程式人生 > >解決Android中TranslateAnimation後出現殘影的問題

解決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不移動的問題,這樣問題得到順利的解決