標籤:
今天嘗試了一下文字框的震動效果。一般我們會在輸入的時候,要是輸入的內容不符合我們的要求的時候,我們可以做一個反饋。很多程式上會有這一個文本輸入框的左右反覆運動的效果來提示我們輸入不符合要求。這個效果其實API Demo裡面也有所以我就直接根據裡面的使用方法來實現。
1.首先先findViewById到EditText
EditText etNumber = (EditText) findViewById(R.id.et_number);
2.然後在res檔案夾裡面建立一個anim檔案夾(裡面主要放我們的動畫描述檔案)
GoogleAPI demo實現這個效果主要用到了兩個檔案一個叫cycle_7.xml和shake.xml
shake.xml主要實現的是一個 translate 位置轉移動畫效果
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromXDelta="0" android:interpolator="@anim/cycle_7" android:toXDelta="10" />
fromXDelta 屬性為動畫起始時 X座標上的位置
toXDelta 屬性為動畫結束時 X座標上的位置
duration 屬性為動畫期間(以毫秒為單位)
在這些屬性裡面還可以加上%和p,例如:
Android:toXDelta="100%",表示自身的100%,也就是從View自己的位置開始。
android:toXDelta="80%p",表示父層View的80%,是以它父層View為參照的。
然後cycle_7.xml檔案是一個Interpolator
Interpolator 被用來修飾動畫效果,定義動畫的變動率,可以使存在的動畫效果accelerated(加速),decelerated(減速),repeated(重複),bounced(彈跳)等。
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="7" />
而 CycleInterpolator 動畫迴圈播放特定的次數,速率改變沿著正弦曲線,這裡是說迴圈了7次
最後我們將兩個動畫檔案通過loadAnimation設給我們的文字框
Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); etNumberAddress.startAnimation(shake);
這樣就可以實現文字框的左右移動效果啦.。
Android文字框震動效果的實現