0

次のようなアイテムを含むグリッドがあります。

http://petromi.com/get/ba4a24f852.png

また、ユーザーがアルバム カバーに触れたときに、アルバム カバーのアニメーションを再生したいと考えています。この目的のためにクラスを作成しました:

class TouchAnimationHelper {
    ...

    public void setItemTouchAnimation(final View view) {
        view.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                Log.d("Touch action: [%s]", action);

                if (action == MotionEvent.ACTION_DOWN) {
                    view.startAnimation(sDecAnimation);
                    return true;

                } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
                    if (action == MotionEvent.ACTION_UP) {
                        sIncAnimation.setAnimationListener(new Animation.AnimationListener() {
                            @Override
                            public void onAnimationStart(Animation animation) {
                            }

                            @Override
                            public void onAnimationEnd(Animation animation) {
                                sIncAnimation.setAnimationListener(null);
                                view.performClick();
                            }

                            @Override
                            public void onAnimationRepeat(Animation animation) {
                            }
                        });
                    }
                    view.startAnimation(sIncAnimation);
                    return true;
                }

                return false;
            }
        });
    }
}

アダプターのgetViewメソッドでは、次を呼び出します。

mTouchAnimationHelper.setItemTouchAnimation(view.findViewById(R.id.album_cover));

しかし、結果は完全に私が望むものではありません。タッチするとアニメーションが動作します。しかし、Grid'sonItemClickは呼び出されません。画像の下のテキストをタップしたときにのみ呼び出されます。どうすれば呼び出せますか?

いくつかの解決策を試しましたが、成功しませんでした:

  1. では常に false を返しますonTouch。しかしその場合、他のタッチ操作が進行せず、アウトアニメーションは再生されません。

  2. 追加のパラメータを に渡し、の代わりに setItemTouchAnimation呼び出し ます。しかし、この場合、奇妙な混乱が発生しました。発生したイベントのアイテム ID が、クリックされたアイテム ID と一致しませんでした。私はまだ理解していませんでした。adapterView.performItemClick(view, position, id)view.performClick()

他のアイデアはありますか?

4

1 に答える 1