Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中编辑文本的振动_Android_Android Edittext - Fatal编程技术网

android中编辑文本的振动

android中编辑文本的振动,android,android-edittext,Android,Android Edittext,我想创建一个编辑文本,如果给定的输入无效,该文本将振动。 例如,编辑数字文本,如果数字是错误的,比如它包含9位数字,编辑文本将变得清晰,并会振动一段时间 如何创造? 提前感谢使用以下代码进行振动 Vibrator vibe = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); vibe.vibrate(50); // 50 is time in ms <?xml version="1.0" encoding="

我想创建一个编辑文本,如果给定的输入无效,该文本将振动。 例如,编辑数字文本,如果数字是错误的,比如它包含9位数字,编辑文本将变得清晰,并会振动一段时间 如何创造?
提前感谢使用以下代码进行振动

Vibrator vibe = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(50); // 50 is time in ms
<?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" />
然后,在ContextChanged侦听器方法中使用以下代码

Vibrator vibe = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(50); // 50 is time in ms
<?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" />
不要忘记,您需要将权限添加到清单中(在
标记之后):

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

在参考资料中创建动画文件夹,然后创建名为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" />

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

<?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" />
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);
        }

如果有人正在寻找一种方法来实现@programmatical所建议的,那么您可以试试这个

<?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" />
public TranslateAnimation shakeError() {
        TranslateAnimation shake = new TranslateAnimation(0, 10, 0, 0);
        shake.setDuration(500);
        shake.setInterpolator(new CycleInterpolator(7));
        return shake;
}
然后:

<?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" />
myEditText.startAnimation(shakeError());

在anim文件夹下创建
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" />
<?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>

可控震源vibe=(可控震源)context.getSystemService(context.可控震源\u服务);我用了这个bt,它不工作了。这个感觉比XML的更干净。