2013-03-14 18 views
16

Chcę utworzyć tekst edycji, który będzie wibrował, jeśli podane dane wejściowe są nieprawidłowe. na przykład edytuj tekst pod numerem, jeśli numer jest nieprawidłowy, ponieważ zawiera 9 cyfr, a tekst edycji stanie się wyraźny i będzie wibrował przez jakiś czas. jak to zrobić? z góry z góryWibracja Edittext w Androidzie

+0

Wibrator vibe = (Wibrator) context.getSystemService (Context.VIBRATOR_SERVICE); użyłem tego bt to nie działa –

Odpowiedz

30

Tworzenie anim folder zasobów, a następnie utworzyć plik nmaed shake.xml i wklej poniższy kod

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="0" android:toXDelta="10" android:duration="1000" 
    android:interpolator="@anim/cycle_7" /> 

i innego pliku cycle_7.xml

<?xml version="1.0" encoding="utf-8"?> 
<cycleInterpolator xmlns:android="schemas.android.com/apk/res/android" android:cycles="7" /> 

a następnie w pliku java

if(invalid)//check your input 
{ 
    Animation shake = AnimationUtils.loadAnimation(Login.this, R.anim.shake); 
    editText.startAnimation(shake); 
} 
+0

co to jest cycle_7 ?? –

+0

utwórz cycle_7.xml w folderze anim i wklej ten kod Priya

+0

czy działa teraz? – Priya

4

Do wibracji użyj następującego kodu.

Vibrator vibe = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 

Następnie w metodzie OnTextChanged Listener użyj następującego kodu.

vibe.vibrate(50); // 50 is time in ms 

I nie zapomnij trzeba dodać gość manifeście (po znaczniku </application>):

<uses-permission android:name="android.permission.VIBRATE" /> 
0

Należy dodać słuchacza EditText dla pożądanej walidacji

editText.addTextChangedListener(new TextWatcher() { 

      public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // Write your logic here 
        if(condition satisfy) 
        // call vibrate(); 
      } 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
      } 
      public void afterTextChanged(Editable s) { 

      } 
     }); 



     public void vibrate() 
     { 
       Vibrator vibrate= (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE) ; 
          vibrate.vibrate(50); 
     } 
8

Jeśli ktoś szuka sposobu, aby robić to, co @Priya zasugerował programowo, możesz spróbować.

public TranslateAnimation shakeError() { 
     TranslateAnimation shake = new TranslateAnimation(0, 10, 0, 0); 
     shake.setDuration(500); 
     shake.setInterpolator(new CycleInterpolator(7)); 
     return shake; 
} 

A potem:

myEditText.startAnimation(shakeError()); 
+2

To wydaje się bardziej czyste w porównaniu z XML. – kanudo

0

Tworzenie shake.xml w folderze anim

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromXDelta="-10" 
     android:toXDelta="10" 
     android:repeatCount="5" 
     android:repeatMode="reverse" 
     android:interpolator="@android:anim/linear_interpolator" 
     android:duration="70" /> 
</set> 

Następnie dodać animację do przycisku. Napisałem ten kod w Kotlin dla uproszczenia.

button.setOnClickListener { 
     button.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake) 
} 
Powiązane problemy