为了账号安全,请及时绑定邮箱和手机立即绑定

android ListView 滑动事件 长按事件 点击事件 需不同的操作 实现方法

标签:
Android

使用手势可以很好解决这个问题

package com.kohler.launcher.view;
import com.kohler.launcher.R;
import com.library.util.LogUtil;
import android.content.Context;
import android.gesture.GestureOverlayView;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.widget.ListView;
public class CalendarListView extends ListView implements OnGestureListener
{
    public interface LongOnClickCallback
    {
        public void onLongOnClick();
        
        public void onClick();
    }
    
    private LongOnClickCallback callback;
    
    public void setCallback(LongOnClickCallback callback)
    {
        this.callback = callback;
    }
    
    public CalendarListView(Context context)
    {
        super(context);
        init();
    }
    
    public CalendarListView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        init();
    }
    
    public CalendarListView(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
        init();
    }
    
    private void init()
    {
        detector = new GestureDetector(getContext(), this);
    }
    
    private GestureDetector detector;
    
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev)
    {
        detector.onTouchEvent(ev);
        
        return super.dispatchTouchEvent(ev);
    }
    
    @Override
    public boolean onDown(MotionEvent e)
    {
        return false;
    }
    
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
    {
        return false;
    }
    
    @Override
    public void onLongPress(MotionEvent e)
    {
        //        LogUtil.e(" CalendarListView 长按事件");
        //长按模式
        if (callback != null)
        {
            callback.onLongOnClick();
        }
    }
    
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
    {
        //        LogUtil.e(" CalendarListView onScroll");
        return false;
    }
    
    @Override
    public void onShowPress(MotionEvent e)
    {
    }
    
    @Override
    public boolean onSingleTapUp(MotionEvent e)
    {
        LogUtil.e(" CalendarListView 点击事件");
        if (callback != null)
        {
            callback.onClick();
        }O
        return false;
    }
}

原文链接:http://www.apkbus.com/blog-30156-58797.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消