使用接口回调实现--自定义控件的点击事件

下面是我自定义的一个控件
以下是自定义view的关键java代码

 //必须重写的方法
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                //Log.d("tag", "ACTION_DOWN");
                y = ev.getY();
                x = ev.getX();
                break;
            case MotionEvent.ACTION_UP:
                //Log.d("tag", "ACTION_UP");
                float yTwo = ev.getY();
                float xTwo = ev.getX();
                //通过判断触摸位置与松开位置一致,则回调
                if ((x == xTwo) && (y == yTwo)){
                   //回掉
                    if (mCallBack!=null){
                        //调用接口中的方法
                        mCallBack.callBack();
                    }
                }
                break;
        }
        return super.dispatchTouchEvent(ev);
    }

    //对外暴露一个参数为接口类型的公有的方法,从而使调用该放法的地方实现接口
    public  void setListener(OnCallBcak callBcak){
        this.mCallBack = callBcak;
    }

    //接口类型的对象
    private OnCallBcak mCallBack;

    //内部接口
    public interface OnCallBcak{
        //必须实现的方法
        public void callBack();
    }

在想要监听该自定义view点击事件的地方实现接口
代码如下:

//通过实现接口中的方法,实现接口回掉
                        itemIvSortDetailTop.setListener(new ItemIvSortDetailTop.OnCallBcak() {
                            @Override
                            public void callBack() {

                //点击事件
                                Toast.makeText(FindSortDetailActivity.this, "我被点击了", Toast.LENGTH_SHORT).show();

                            }
                        });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章