Почему не меняется текст кнопки при анимации

267
17 декабря 2017, 10:07

Когда я нажимаю первый раз, кнопки идут и возвращаются с другими буквами, но когда я нажимаю снова, ничего не происходит:

int d = -1; Строка btnanim = "0";

Как сделать его анимированным, когда я снова нажимаю на кнопку?

public void b_b1(View v) {
    if (this.btnanim == "AB") {
        btn("CD");
        return;
    }
    if (this.btnanim == "CD") {
            btn("EF");
            return;
        }
        if (this.btnanim == "EF") {
            btn("GH");
            return;
        }
    btn("AB");
}

Без анимации текст изменяется при каждом клике

void btn(String str) {
    this.btnanim = str;
    this.timer.schedule(new TimerTask() {
        ObjectAnimator anim;
        LinearLayout bgroup = (LinearLayout) MainActivity.this.findViewById(R.id.bg);
        Button b1 = (Button) MainActivity.this.findViewById(R.id.b1);
        Button b2 = (Button) MainActivity.this.findViewById(R.id.b2);
        public void run() {
            MainActivity.this.runOnUiThread(new Runnable() {
                public void run() {
                    MainActivity.this.d += 1;
                        switch (MainActivity.this.d) {
                            case 0:
                                anim = ObjectAnimator.ofFloat(bgroup, "translationX", bgroup.getWidth() * 2);
                                anim.setDuration(500L).start();
                                break;
                            case 5:
                                anim = ObjectAnimator.ofFloat(bgroup, "translationX", -bgroup.getWidth() * 2);
                                anim.setDuration(0L).start();
                                anim = ObjectAnimator.ofFloat(bgroup, "translationX", 0);
                                anim.setDuration(500L).start();
                                switch (MainActivity.this.btnanim) {
                                    case "AB":
                                        b1.setText("A");
                                        b2.setText("B");
                                        break;
                                    case "CD":
                                        b1.setText("C");
                                        b2.setText("D");
                                        break;
                                    case "EF":
                                        b1.setText("E");
                                        b2.setText("F");
                                        break;
                                }
                        }
                    }
                });
            }
        }, 0L, 100L);
    }
    protected void onResume() {
        super.onResume();
        MainActivity.this.btnanim = "AB";
    }
}
Answer 1

У вас в

switch (MainActivity.this.d) {
case 0:
...
case 5:

срабатывает при 0 и 5

Здесь

MainActivity.this.d += 1;

вы прибавляете к

int d = -1;

то есть меняете значение переменной. Было -1, стало 0 сработало case 0:. потом стало 1 - case обрабатывающего это значение уже нет

Может здесь проблема?

Answer 2

Грубо говоря здесь она работает как секунда. При 5сработало case 5: анимация возвращается и стоит на месте. Но надо чтоб она вернулась начала цикла опять при повторном нажатии кнопки я так думаю.

Все получилась. Нужно было задать самом методе this.d=-1;. В чем-то TimurVI был прав.

READ ALSO
Рисование android

Рисование android

Добрый вечер, подскажите пожалуйста, каким образом можно нарисовать прямоугольник, чтобы он сам подстраивался под размеры экрана, гугл не помогаетНашел...

279
Как изменить цвет иконок в toolbar?

Как изменить цвет иконок в toolbar?

У меня есть тулбар к которому я добавил список с меню

322
Как сделать URL ссылки не нажимаемыми?

Как сделать URL ссылки не нажимаемыми?

Есть TextView в котором имеются несколько ссылокПри нажатии на TextView появляется PopupMenu

286
Создание многофункциональной и правильной навигации в приложении

Создание многофункциональной и правильной навигации в приложении

Я создал в приложении простой Navigation Drawer со всеми фрагментами(шторка слева) и Bottom Navigation View, в который помещаются пять наиболее используемых...

291