您的位置:首页 > 其它

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

2016-05-12 17:18 169 查看
下面是我自定义的一个控件

以下是自定义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();

}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: