我想创建一个编辑文本,如果给定的输入无效,它将振动。例如,如果数字错误,例如包含 9 位数字,则编辑数字文本,而不是编辑文本将变得清晰并会振动一段时间如何创建?提前致谢
问问题
11428 次
5 回答
52
在资源中创建动画文件夹,然后创建名为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);
}
于 2013-03-14T05:16:31.147 回答
25
如果有人正在寻找一种方法来以编程方式执行@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());
于 2017-07-17T10:26:13.053 回答
5
对于振动,请使用以下代码。
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" />
于 2013-03-14T05:16:15.410 回答
4
shake.xml
在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>
在此之后为按钮添加动画。为了简单起见,我用 Kotlin 编写了这段代码。
button.setOnClickListener {
button.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake)
}
于 2018-01-25T05:15:25.543 回答
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);
}
于 2013-03-14T05:35:21.093 回答