继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

繁华开满天机
关注TA
已关注
手记 134
粉丝 15
获赞 68

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

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP