Я разрабатываю приложение для Android, и мне удалось разместить некоторые изображения на Activity
и оживить их. Но затем, когда я пытаюсь активировать анимацию, я обнаружил, что onClickListener
не отключен. Я попытался сделать некоторые исследования и попытался добавить адаптер прослушивателя анимации и переопределить методы onAnimationStart()/onAnimationEnd()
, чтобы попытаться отключить onClickLister
, установив его null, за исключением того, что он не работал, и после некоторой отладки я обнаружил, что это похоже на два метода не называются.Отключение onClickListener во время анимации продолжается
Вот некоторые из моих кодов:
public class MainActivity extends AppCompatActivity {
//Skipped some of the variables declarations
private class AnimListAdapt extends AnimatorListenerAdapter{
@Override
public void onAnimationStart(Animator animation) {
onClickPointer = null;
Log.i("Animation","Animation starts");
super.onAnimationStart(animation);
}
@Override
public void onAnimationEnd(Animator animation) {
Log.i("Animation","Animation ends");
super.onAnimationEnd(animation);
onClickPointer = onClickObject;
}
};
private AnimListAdapt animListAdapt;
private View.OnClickListener onClickPointer;
private View.OnClickListener onClickObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Skipped some of the variable assignments
onClickObject = new View.OnClickListener() {
public void onClick(View view) {
check((ImageView) view);
}
};
onClickPointer = onClickObject;
animListAdapt = new AnimListAdapt();
img1View = (ImageView) findViewById (R.id.img1View);
grids[4] = img1View;
img1View.setOnClickListener(onClickPointer);
img2View = (ImageView) findViewById (R.id.img2View);
grids[4] = img2View;
img2View.setOnClickListener(onClickPointer);
}
public void check (ImageView view) {
int move;
if ((previous == null) || ((move = move(findGridNum(previous), findGridNum(view))) == NONE)) {
if (previous == view) {
view.setImageResource(android.R.color.transparent);
previous = null;
} else {
if (previous !=null) {
previous.setImageResource(android.R.color.transparent);
}
previous = view;
view.setImageResource(R.drawable.crush_frame_tran);
}
} else {
previous.setImageResource(android.R.color.transparent);
switch (move) {
case UP: {
Log.i("moveCheck", "Up");
animListAdapt.setUpAdapter(view);
view.animate()
.setListener(animListAdapt);
go_up(previous);
go_down(view);
break;
}
case DOWN: {
Log.i("moveCheck", "Down");
animListAdapt.setUpAdapter(view);
view.animate()
.setListener(animListAdapt);
go_down(previous);
go_up(view);
break;
}
case LEFT: {
go_left(previous);
animListAdapt.setUpAdapter(view);
view.animate()
.setListener(animListAdapt);
go_right(view);
break;
}
case RIGHT: {
go_right(previous);
animListAdapt.setUpAdapter(view);
view.animate()
.setListener(animListAdapt);
go_left(view);
}
}
previous = null;
}
}
public void go_right (View view) {
view.startAnimation(to_right);
}
public void go_left (View view) {
view.startAnimation(to_left);
}
public void go_up (View view) {
view.startAnimation(to_up);
}
public void go_down (View view) {
view.startAnimation(to_down);
}
}
Как вы можете видеть, что я пытался взывать журналы в обоих onAnimationStart()
и onAnimationEnd()
метод, я понял, что эти журналы не появляются. Я не уверен, что случилось, что мои коды не работают.
Помогите? Заранее спасибо.
Спасибо! Я изменил код и создал «AnimationListener» вместо «AnimatiorListenerAdapter». Хотя я могу спросить, что такое «AnimatorListenerAdapter»? Я видел некоторых людей, использующих 'View.animator(). SetListener (AnimatorListenerAdapter a)', чтобы помещать 'AnimatorListenerAdapter' в экземпляр анимации (?) Представления и реализует там' onAnimationStart' и 'onAnimationEnd'. –