Skip to main content

Shake a view(edit text) on incorrect input at OTP,passwords,etc (Android)

Hello devs!

This is another short tutorial to show how to shake an Edit text view if the input is incorrect.
Note: The tutorial assumes that you have the basic knowledge about android development.



It involves the following steps:

1. Create the Edit text and cast it inside the onCreate.

EditText edittext=findViewById(R.id.edit_text);

Recommended:https://github.com/GoodieBag/Pinview

Optional- Put the edit text inside a dialog to take an input from the dialog.

2. Write an animation XML.
Here is an example: (shake.xml)
Courtesy:https://gist.github.com/simon-heinen/9795036


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

Store this inside the anim folder in res.

3.Write the onClick function for a button and inside that, whenever a condition is true, use the following lines:

Animation example= AnimationUtils.loadAnimation(context, R.anim.shake);
view.startAnimation(example);

In our case the condition would be something like,

if(edittext.getText().toString().equals("password"))
{
//action
}
else{
Animation example= AnimationUtils.loadAnimation(context, R.anim.shake);
edittext.startAnimation(example);

Toast.makeText(context,"Error",Toast.LENGTH_SHORT).show()
}


You can use different animations according to your need.
That's all folks! Hope it helps..


Comments