1

私のアクティビティには、imageView(上部)とtextView(下部)があります。両方のビューを使用して、画像とそれに対応する説明を表示します。「SimpleOnGestureListener」を使用してフリングを実装しました..ユーザーがさまざまな画像とそれに対応する説明をフリングできるようにします(フリングごとに、異なる画像をロードしてユーザーに表示します)。

ImageViewにonClickListenerを追加したときに問題が発生しました(画像の説明付きのトーストを表示できるように、onClickを検出する必要があります)。しかし、onClick が fling イベントをブロックしているようです。フリングを検出するにはどうすればよいですか。

このフォーラムで、次の質問 (およびその他のいくつかの質問) を既に行っています。

Android - onClick よりも onTouch を優先する

Android onClick ブロック onFling

それでも解決策を特定できませんでした。

以下にコードを示します

public class MainActivity extends Activity{
    ImageView m_imageView;
    String[] m_imageNames = { "img1__", "img2__", "img2__"};
    int m_index = 0;
    Resources m_res;
    Drawable m_drawable;

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       Log.v("INFO", "Inside oncreate");

       m_imageView = (ImageView)findViewById(R.id.imageView1);
       m_res = getResources();
       int imageId = m_res.getIdentifier(m_imageNames[m_index], "drawable", getPackageName());
       Drawable drawable = m_res.getDrawable(imageId);
       m_imageView.setImageDrawable(drawable);

       m_imageView.setOnClickListener(new View.OnClickListener() {

       @Override
       public void onClick(View v) {
          Log.v("INFO", "Inside onClick");
       }
       });
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
     Log.v("INFO", "onTouchEvent detected");
     return gestureDetector.onTouchEvent(event);
  }

  SimpleOnGestureListener simpleOnGestureListener
   = new SimpleOnGestureListener(){

    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
        float velocityY) {
                //Fling code goes here
        }
   };

   GestureDetector gestureDetector = new GestureDetector(null, SimpleOnGestureListener);

}

4

1 に答える 1

0

通常、これらのメソッドにはboolean戻り値があり、これは、このイベントが消費され、それ以上伝播しないことを示します。戻り値を変更してみてください。

于 2012-10-29T03:43:23.613 に答える