Как настроить вибрацию анимации и вибрации устройства для редактирования текста? - PullRequest
0 голосов
/ 13 ноября 2018

Что я хочу: Я хочу создать текст для редактирования, который будет вибрировать, если данный ввод пуст или недействителен.

Пример: В окне входа в систему текст редактирования пароля является пустым или недействительным, тогда текст редактирования будет вибрировать в то же время, когда моему устройству Android нужно некоторое время вибрировать, как его создать?
заранее спасибо

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Компоненты

 EditText mPassword = findViewById(R.id.edtPassword);
 Button mLogin = findViewById(R.id.btnLogin);

Вибрация устройства Android

 private void AndroidDeviceVibrate() { // Android Device Vibration
    Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); // Vibrate for 500 milliseconds only
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        v.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
    } else {
        v.vibrate(500); // deprecated in API 26
    }
}

Редактирование текста вибрации Анимация

 public TranslateAnimation VibrateError() { // Edit text vibrate Animation
    TranslateAnimation vibrate = new TranslateAnimation(0, 10, 0, 0);
    vibrate.setDuration(600);
    vibrate.setInterpolator(new CycleInterpolator(8));
    return vibrate;
}

Наконец,

mLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String strPass = mPassword.getText().toString();
            if (TextUtils.isEmpty(strPass)) {
                AndroidDeviceVibrate();  // Android Device Vibrate
                mPassword.startAnimation(VibrateError()); // Edit text vibrate Animation
            }
        }
    });
0 голосов
/ 13 ноября 2018

Хорошо, вот что вам нужно ..

Анимация вибрации

поместите эти два XML-файла в папку res/anim

vibrate.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_5" />

cycle_5.xml

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

Вибрирующий телефон

используйте этот метод для вибрации вашего телефона в течение 500 миллисекунд

public void shakeItBaby() {
    int DURATION = 500; // you can change this according to your need 
    if (Build.VERSION.SDK_INT >= 26) {
        ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(DURATION, VibrationEffect.DEFAULT_AMPLITUDE));
    } else {
        ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(DURATION);
    }
}

и не забудьте поставить разрешение в манифесте

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

Собираем все вместе

теперь используйте их оба, пока вы проверяете ваш EditText

Animation vibrate = AnimationUtils.loadAnimation(this, R.anim.vibrate);

if (paytm_amt.getText().toString().trim().isEmpty()) {
    paytm_num.setError("Please Enter PayTM Number");
    paytm_num.startAnimation(vibrate);
    shakeItBaby();
}  else {
    // do something
}

Happy Coding ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...