android中Edittext的振动

时间:2013-03-14 05:11:42

标签: android android-edittext

我想创建一个编辑文本,如果给定的输入无效,它将振动。 例如编辑数字的文本如果数字错误,就像它包含9个数字而不是编辑文本将变得清晰并将振动一段时间 如何创造呢?  提前谢谢

5 个答案:

答案 0 :(得分:37)

在资源中创建anim文件夹,然后创建文件nmaed shake.xml 并粘贴以下代码

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

和另一个文件cycle_7.xml

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

然后在你的java文件中

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

答案 1 :(得分:13)

如果有人正在寻找一种方法来执行@ Priya以编程方式建议的方法,那么您可以试试这个。

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

然后:

myEditText.startAnimation(shakeError());

答案 2 :(得分:4)

对于振动,请使用以下代码。

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

然后,在OnTextChanged Listener方法中使用以下代码。

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

并且不要忘记您需要向清单添加权限(在</application>标记之后):

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

答案 3 :(得分:2)

在动画文件夹

下创建componentDidMount() { this.props.getItems() if (this.props.location.state && this.props.location.state.justAddedItem) { this.setState({ showAddedToast: true }) } } componentDidUpdate(prevProps, prevState) { if (prevState.showAddedToast) { toast.success('Item added successfully!', { position: toast.POSITION.TOP_CENTER, }) } }
shake.xml

之后为按钮添加动画。为简单起见,我在Kotlin中编写了这段代码。

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

答案 4 :(得分:0)

您应该将此侦听器添加到EditText以进行所需的验证,

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);
        }