2013-03-14 20 views
16

Ich möchte einen Text bearbeiten, der vibriert, wenn die Eingabe ungültig ist. zum Beispiel bearbeiten Sie Text für die Nummer, wenn Nummer falsch ist, wie es 9 Ziffern als Text bearbeiten wird klar und wird für einige Zeit vibrieren wie das zu erstellen? danke im vorausVibration von Edittext in Android

+0

Vibrator Atmosphäre = (Vibrator) context.getSystemService (Context.VIBRATOR_SERVICE); Ich benutze diese BT es funktioniert nicht –

Antwort

30

erstellen Anim Ordner in Ressourcen und dann Datei nmaed shake.xml erstellen und fügen Sie den Code unten

<?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" /> 

und eine andere Datei cycle_7.xml

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

und dann in Ihrer Java-Datei

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

was ist cycle_7 ?? –

+0

Erstellen Sie cycle_7.xml in Ihrem Anim-Ordner und fügen Sie diesen Code ein Priya

+0

funktioniert es jetzt? – Priya

4

Für vibrieren verwenden Sie den folgenden Code.

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

Dann wird in der OnTextChanged Listener-Methode den folgenden Code verwenden.

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

Und vergessen Sie nicht, dass Sie die Erlaubnis zum Manifest (nach dem </application>-Tag) hinzufügen müssen:

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

Sie diesen Listener für die gewünschte Validierung EditText hinzufügen sollen,

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

Wenn jemand für eine Methode sucht, um zu tun, was @Priya vorgeschlagen programmatisch, dann können Sie das versuchen.

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

Und dann:

myEditText.startAnimation(shakeError()); 
+2

Das fühlt sich sauberer an als XML. – kanudo

0

erstellen shake.xml unter anim Ordner

<?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> 

Danach fügen Sie Animation für Taste. Ich habe diesen Code in Kotlin zur Vereinfachung geschrieben.

button.setOnClickListener { 
     button.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake) 
}