私はAndroidアプリを開発しています。Activity
にいくつかの画像を入れてアニメーション化することに成功しました。しかし、アニメーションをアクティブにしようとすると、onClickListener
が無効になっていないことがわかりました。私はいくつかの研究を行うことを試み、それが動作しませんでし除き、それをヌルを設定することにより、onClickLister
を無効にしようとするアニメーションリスナーアダプタを追加し、onAnimationStart()/onAnimationEnd()
メソッドをオーバーライドしようとしたいくつかのデバッグの後、私はそれはのように思えることがわかりました2つのメソッドは呼び出されません。ここでアニメーションが進行中のときにonClickListenerを設定解除する
は、私のコードの一部です:あなたは、私は両方onAnimationStart()
とonAnimationEnd()
方法でログを呼び出すしようとした見ることができるように
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);
}
}
、私はそれらのログが表示されないことを考え出しました。私のコードがうまくいかず、何が間違っているのか分かりません。
助けてください?前もって感謝します。
おかげにそれを渡すために、何かを動かしたと思います!私はコードを変更し、 'AnimatiorListenerAdapter'の代わりに' AnimationListener'を作成しました。 「AnimatorListenerAdapter」は何ですか?私は、ビューの(?)(AnimatorListenerAdapter a)は 'アニメーションインスタンスに' AnimatorListenerAdapter'を入れてsetListener。 'View.animator()を使用して、何人かの人々を見て、そこに' onAnimationStart'と 'onAnimationEnd'を実装しました。 –