Когда я нажимаю первый раз, кнопки идут и возвращаются с другими буквами, но когда я нажимаю снова, ничего не происходит:
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";
}
}
У вас в
switch (MainActivity.this.d) {
case 0:
...
case 5:
срабатывает при 0 и 5
Здесь
MainActivity.this.d += 1;
вы прибавляете к
int d = -1;
то есть меняете значение переменной. Было -1, стало 0 сработало case 0:. потом стало 1 - case обрабатывающего это значение уже нет
Может здесь проблема?
Грубо говоря здесь она работает как секунда. При 5сработало case 5: анимация возвращается и стоит на месте. Но надо чтоб она вернулась начала цикла опять при повторном нажатии кнопки я так думаю.
Все получилась. Нужно было задать самом методе this.d=-1;. В чем-то TimurVI был прав.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости