使用接口回調實現--自定義控件的點擊事件

下面是我自定義的一個控件
以下是自定義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();

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