View单击双击长按事件

public class ImageActivity extends Activity implements GestureDetector.OnGestureListener{
    private ImageView mImage;
    private ImageLoader mImageLoader;
    private boolean change;
    private GestureDetector detector;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image);
        mImage = (ImageView) findViewById(R.id.imageview);
        Bitmap bmp = null;
//        try {
//            bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse("http://img.mp.itc.cn/upload/20160816/e24c8031a95649778ecaa111b3f5cf76_th.jpg"));
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        mImage.setImageBitmap(bmp);
//        mImage.setImageURI(Uri.parse("http://img.mp.itc.cn/upload/20160816/e24c8031a95649778ecaa111b3f5cf76_th.jpg"));
        RequestQueue queue = Volley.newRequestQueue(ImageActivity.this);

//        ImageRequest request = new ImageRequest("http://img.mp.itc.cn/upload/20160816/e24c8031a95649778ecaa111b3f5cf76_th.jpg", new Response.Listener<Bitmap>() {
//            @Override
//            public void onResponse(Bitmap response) {
//               mImage.setImageBitmap(response);
//            }
//        },200,200, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {
//            @Override
//            public void onErrorResponse(VolleyError error) {
//
//            }
//        });
        //图片的长按事件
        mImageLoader = new ImageLoader(queue, new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String url) {
                return null;
            }

            @Override
            public void putBitmap(String url, Bitmap bitmap) {


            }
        });
        ImageLoader.ImageListener listener = ImageLoader.getImageListener(mImage, R.mipmap.ic_launcher, R.mipmap.ic_launcher);
        mImageLoader.get("http://img.mp.itc.cn/upload/20160816/e24c8031a95649778ecaa111b3f5cf76_th.jpg", listener);
//        queue.add(request);
        mImage.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if (change) {
                    Toast.makeText(ImageActivity.this, "长按事件", Toast.LENGTH_LONG).show();
                }
                return false;
            }
        });
        mImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mImage.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
                change = true;
            }
        });
        mImage.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                /**
                 * 将手势的点击事件和图片联系到一起
                 *
                 */
                MotionEvent obtain = MotionEvent.obtain(event);
                obtain.setLocation(event.getRawX(),event.getRawX());
                return detector.onTouchEvent(obtain);
//                return false;

            }

        });
        detector = new GestureDetector(ImageActivity.this,this);
        detector.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
                Toast.makeText(ImageActivity.this, "单击事件", Toast.LENGTH_LONG).show();
                return false;
            }
            //双击事件调一次次

            @Override
            public boolean onDoubleTap(MotionEvent e) {
                Toast.makeText(ImageActivity.this, "双击事件", Toast.LENGTH_LONG).show();
                return false;
            }
            //双击事件调两次

            @Override
            public boolean onDoubleTapEvent(MotionEvent e) {
//                Toast.makeText(ImageActivity.this, "双击事件", Toast.LENGTH_LONG).show();
                return false;
            }
        });

    }



    @Override
    public boolean onDown(MotionEvent e) {
        return true;
    }

    @Override
    public void onShowPress(MotionEvent e) {

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return false;
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        Toast.makeText(ImageActivity.this, "长按事件", Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        return false;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中,可以通过实现 `View.OnTouchListener` 接口来监听按钮的各种触摸事件,然后根据触摸事件的类型来判断按钮是单击双击还是按。 下面是一个示例代码,演示如何检测一个按钮的单击双击事件: ```java button.setOnTouchListener(new View.OnTouchListener() { private long lastClickTime = 0; private boolean isLongClick = false; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // 按下时记录当前时间 long currentTime = System.currentTimeMillis(); if (currentTime - lastClickTime <= 500) { // 如果距离上次点击时间不超过 500ms,则认为是双击 isLongClick = false; onDoubleClick(); } else { // 否则认为是单击按 isLongClick = true; onSingleClick(); } lastClickTime = currentTime; break; case MotionEvent.ACTION_UP: if (isLongClick) { // 如果是按,则抬起手指后触发事件 onLongClick(); } break; } return true; } }); private void onSingleClick() { // 处理单击事件 } private void onDoubleClick() { // 处理双击事件 } private void onLongClick() { // 处理事件 } ``` 在上面的代码中,我们通过记录上次点击的时间和当前点击的时间来判断按钮是否是双击事件。如果距离上次点击时间不超过 500 毫秒,则认为是双击事件;否则认为是单击事件。 在 `MotionEvent.ACTION_DOWN` 事件中处理单击事件,在 `MotionEvent.ACTION_UP` 事件中处理事件。如果在 `ACTION_DOWN` 事件中判断是事件,则在 `ACTION_UP` 事件中触发事件处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值