android中怎样给两个按钮添加事件

android中怎样给两个按钮添加事件,第1张

楼主应该把问题描述的清楚些的,要不我们也只能猜测楼主的意思.

我先来猜一把...

楼主应该是说在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则不拦截,继续往下传。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11873722.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存