java - 让 Imageview 区分单击和滚动

标签 java android

我正在尝试在同一个 Imageview 上实现单击和滚动,我成功实现了单击,但现在我不知道如何实现滚动。我需要在单击和滚动上实现不同的操作,对于单击,我想启动一个我已经完成的 Activity ,现在在滚动上,我需要调用一个方法“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);
            }

        });

最佳答案

一个简单的方法是扩展 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 + "]");

    }

}

关于java - 让 Imageview 区分单击和滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243088/

相关文章:

java - hibernate中过滤器和标准之间的区别

android - ListView 中的位图 : Loading slowly

android - Mobilefirst 7.1 中带有状态栏的推送通知

android - 哪些服务可用于为应用程序存储和流式传输 VR 内容?

java - 禁用并替换默认 DataSourceHealthIndicator

java - CDI 不工作

java - 整数超出 2147447602 值

java - 二进制 XML 文件行 #0 : Error inflating class ImageView

android - Android 上的 RSA 加密和解密字符串

android - 如何在android中动态启动和完成progressBar