安卓开发中的监听器(OnClickListener)

本文详细介绍了Android中六种主要的事件监听器,包括OnClickListener、OnLongClickListener、OnFocusChangeListener、OnKeyListener、OnTouchListener和OnCreateContextMenuListener。同时,探讨了监听器的三种实现方法:内部类、匿名内部类及布局文件onClick属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于监听器:监听器是一个存在于View类下的接口,一般以On******Llistener命名,实现该接口需要复写相应的on****(View v)方法(如onClick(View v))。

Android提供的基于事件监听接口有OnClickListener、OnLongClickListener、OnFocusChangeListener、OnKeyListener、OnTouchListener、OnCreateContextMenuListener等。

1)OnClickListener接口:该接口处理的是点击事件。在触摸模式下,是在某个View上按下并抬起的组合动作,而在键盘模式下,是某个View获得焦点后点击确定键或者按下轨迹球事件。

2)OnLongClickListener接口: OnLongClickListener接口与上述的OnClickListener接口原理基本相同,只是该接口为View长按事件的捕捉接口,即当长时间按下某个View时触发的事件。

3)OnFocusChangeListener接口:OnFocusChangeListener接口用来处理控件焦点发生改变的事件。如果注册了该接口,当某个控件失去焦点或者获得焦点时都会触发该接口中的回调方法。

4)OnKeyListener接口:是对手机键盘进行监听的接口,通过对某个View注册并监听,当View获得焦点并有键盘事件时,便会触发该接口中的回调方法。

5)OnTouchListener接口:是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。

6)OnCreateContextMenuListener接口:是用来处理上下文菜单显示事件的监听接口。该方法是定义和注册上下文菜单的另一种方式。


实现监听的三种方法:

 

 

方法一:在Activity中定义一个内部类继承监听器接口(这里是OnClickListener)。常见的继承方法如下:

复制代码

class MyListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }

方法二:实现匿名内部类。这种方法适合只希望对监听器进行一次性使用的情况,在该代码块运行完毕之后,该监听器也就不复存在了。

复制代码

bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();
            }
        });

复制代码

方法三:利用布局文件中的onClick属性,并在实现文件中实现该方法。注意的是这里的方法名应该和布局文件中onClick属性的方法名相同,该方法必须是public方法。

// 方法三,注意需要public方法
    public void onButtonClick (View view){
        Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();
    }
}

关于setOnClickListener方法:

 

 

btn_0.setOnClickListener(this);

onClicklistener是一个接口,不能实例化,这就是一个匿名内部类,这个类实现onClickListener
 然后被new 了,无形中传了一个对象进去,这个对象给了button/TextView中的mOnClicklistener,就是这个对象调用了onClick方法
当然要是Activity实现了这个接口,就可以setonClickListener(this)
this是当前类的一个对象
传进去一个Activity对象给btn_0,就是一个接口引用指向Activity对象,不过接口引用只能调用自己的方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值