使Imageview区分单击和滚动

时间:2016-07-07 10:23:53

标签: java android

我正在尝试在同一个Imageview上实现单击和滚动,我成功实现了单击,但现在我不知道如何实现滚动。我需要在单击和滚动时实现不同的操作,对于单击我想要开始一个活动我已经完成了,现在滚动,我需要调用一个方法说" updateData"。请帮我。以下是我的代码

    public class GestureListener extends
                GestureDetector.SimpleOnGestureListener {

            @Override
            public boolean onDown(MotionEvent e) {

                return true;
            }

            // event when double tap occurs
            @Override
            public boolean onSingleTapUp(MotionEvent e) {

                tapped = !tapped;

                if (tapped) {

                        Intent intent = new Intent(activity, MainActivity.class);

                        activity.startActivity(intent);
                    }




                } else {



                }

                return true;
            }
        }

  image.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                return gestureDetector.onTouchEvent(event);
            }

        });

1 个答案:

答案 0 :(得分:0)

一种简单的方法是扩展GestureDetector.SimpleOnGestureListener,然后为ImageView设置此自定义侦听器。

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_main);
        final GestureDetectorCompat gdt = new GestureDetectorCompat(this, new CustomGestureListener());
        final ImageView imageView = (ImageView) findViewById(R.id.imageView);
        imageView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(final View view, final MotionEvent event) {
                gdt.onTouchEvent(event);
                return true;
            }
        });
    }

    private class CustomGestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            Log.d(TAG, "onSingleTapConfirmed() called with: " + "e = [" + e + "]");
            return super.onSingleTapConfirmed(e);
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

            // do some stuff maybe..
            // do other stuff

            updateData(e1, e2, distanceX, distanceY);

            return super.onScroll(e1, e2, distanceX, distanceY);
        }

    }

    private void updateData(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

        Log.d(TAG, "updateData() called with: " + "e1 = [" + e1 + "], e2 = [" + e2 + "], distanceX = [" + distanceX + "], distanceY = [" + distanceY + "]");

    }

}