
我先来猜一把...
楼主应该是说在activity内如果只有一个按钮,那么我们可以直接在activity类声明上加上点击事件接口声明:
public class MyActivity extends Activity
implements View.OnClickListener {
......
public void onClick(View v) {
......
}
}
这样此接口就可以直接处理一个按钮的点击事件.
如果有两个按钮,可以用 onClick(View v) 里的那个view参数判断点击的是哪个按钮
比如:
onClick(view v) {
if (v == button1) {
......
else if (v == button2) {
.......
}
}
也可以初始化两个 OnClickListener 类,分别重写其 onClick() 函数.
因为只是猜测楼主问题的意思,具体就不再详述了...
每个view可以添加不同的事件(OnClickListener、OnLongClickListener)每个viewGroup可以包含多个view,本身也是一个view,也可以支持事件处理,当一个viewGroup和其包含的view都有一个事件(例如ONclickListener),看上去就是添加了多个Listener了。Listener是监听的意识,是一个反向处理。
Android中所有能看到的控件,都是View 或者View的子类,只要是view都可以增加各种事件,例如onClick事件等等。
1.关于Android事件构成
在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指 *** 作和多指 *** 作。所有这些都构成了Android中的事件响应。总的来说,所有的事件都由如下三个部分作为基础:
1.按下(ACTION_DOWN)
2.移动(ACTION_MOVE)
3.抬起(ACTION_UP)
所有的 *** 作事件首先必须执行的是按下 *** 作(ACTIONDOWN),之后所有的 *** 作都是以按下 *** 作作为前提,当按下 *** 作完成后,接下来可能是一段移动(ACTIONMOVE)然后抬起(ACTION_UP),或者是按下 *** 作执行完成后没有移动就直接抬起。这一系列的动作在Android中都可以进行控制。
2.事件的处理API
在View和ViewGroup中都存在dispatchTouchEvent和onTouchEvent方法,但是在ViewGroup中还有一个onInterceptTouchEvent方法,在Android中,所有的事件都是从开始经过传递到完成事件的消费,这些方法的返回值就决定了某一事件是否是继续往下传,还是被拦截了,或是被消费了。
public boolean dispatchTouchEvent(MotionEvent event)
public boolean onTouchEvent(MotionEvent event)
public boolean onInterceptTouchEvent(MotionEvent event)
3.事件处理API的说明
dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发,然后决定是自身消费当前事件还是继续往下分发给子控件处理。返回true表示不继续分发,事件没有被消费。返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件。
onTouchEvent方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发。
onInterceptTouchEvent是ViewGroup中才有的方法,View中没有,它的作用是负责事件的拦截,返回true的时候表示拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。返回false则不拦截,继续往下传。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)