一,简单形式的
/*模拟Android中的view 点击和滑动监听
* */
public class View {
private OnClickListener onClickListener;
private OnTouchListener onTouchListener;
public void setOnClickListener(OnClickListener onClickListener) {
this.onClickListener=onClickListener;
}
public void setOnTouchListener(OnTouchListener onTouchListener) {
this.onTouchListener=onTouchListener;
}
//模拟view被点击后会调用此方法,通知click listener
public void clickView() {
onClickListener.OnClick(this);
}
//模拟view被滑动后会调用此方法,通知touch listener
public void touchView() {
onTouchListener.onTouch(this);
}
public interface OnClickListener{
void OnClick(View v);
/*参数里传入View的原因:
* 在Android中,不同view有不同的id
* 所以事件分发机制要通过这个ID来通知哪个view被点中了
* 如果你用"implements+接口"就能体会到传view参数进来的意义了
*
* */
}
public interface OnTouchListener{
void onTouch(View v);
}
}
import final学习.View.OnClickListener;
import final学习.View.OnTouchListener;
public class Client {
public static void main(String[] args) {
View view=new View();
view.setOnClickListener((OnClickListener) new OnClickListener() {
@Override
public void OnClick(View v) {
// TODO Auto-generated method stub
System.out.println("click the view");
}
});
view.setOnTouchListener((OnTouchListener)new OnTouchListener() {
@Override
public void onTouch(View v) {
// TODO Auto-generated method stub
System.out.println("touch the view");
}
});
//假装这里用户触发view的点击
view.clickView();
//假装这里用户触发view的滑动
view.touchView();
}
}
二,客户端调用的另一种方式
import final学习.View.OnClickListener;
import final学习.View.OnTouchListener;
public class Client implements View.OnClickListener,View.OnTouchListener{
private static View view;
public void init() {
view=new View();
view.setOnClickListener(this);
view.setOnTouchListener(this);
}
public static void main(String[] args) {
init();//虽然这里必须要init()是static,这个应该是ide问题,不妨碍写法是对的
//假装这里用户出发view的点击
view.clickView();
//假装这里用户触发view的滑动
view.touchView();
}
@Override
public void onTouch(View v) {
// TODO Auto-generated method stub
System.out.println("touch the view");
}
@Override
public void OnClick(View v) {
// TODO Auto-generated method stub
System.out.println("click the view");
}
}