Android Stduio的按键响应就是当用户点击了该按键后,要进行怎样的处理。可以通过两种方法设置按键响应:一种是通过setOnClickListener()方法设置,另一种是通过通过视图属性进行设置。
1 通过setOnClickListener()方法设置
1.1 setOnClickListener()介绍
setOnClickListener()方法的作用是注册一个回调函数,当视图被点击后,就会调用该函数。
相关链接1 回调函数,由别人的函数在运行期间调用你实现的函数,那么你实现的这个函数就是回调函数。回调函数地址一般作为参数传入到别人的函数中。
setOnClickListener()方法的参数是View.onClickListener。View.onClickListener是一个接口(interface),该接口定义了一个回调函数onClick(),当视图被点击后,就会调用onClick()。
相关链接2 接口(interface),定义了抽象方法和常量值,可以看成是一种特殊的抽象类,该抽象类中只包含了常量和方法的定义,但是没有常量和方法的实现。
onClick()方法是一个抽象的方法,该方法的参数是View的对象。
1.2 通过匿名内部类的方式设置响应
可以使用创建匿名内部类的方法,通过setOnClickListener()方法实现响应,如图1所示。
图1 匿名内部类
其中,在setOnClickListener()函数的参数中,使用new关键字创建了继承View.OnClickListener接口的匿名内部类(图1①),在类内部重写(override)抽象方法onClick()(图1②),使用Toast类显示信息(图1③)。
1.3 通过实现View.onClickListener接口的类设置响应
1.3.1 实现View.onClickListener接口
可以将MainActivity类设置为实现View.onClickListener接口,如图2所示。
图2 实现View.onClickListener接口
1.3.2 通过setOnClickListener()设置响应
假设在布局中有两个按键视图,其ID分别是“btn1”和“btn2”,通过findViewById()获取这两个按键,并且调用setOnClickListener()设置这两个按键的响应,如图3所示。
图3 通过setOnClickListener()设置响应
在“1.1 setOnClickListener()介绍”中提到,setOnClickListener()方法的参数是View.onClickListener接口类型的对象,而MainActivity类实现了View.onClickListener接口,因此图3中的this表示的MainActivity类满足setOnClickListener()方法的参数类型。
1.3.3 重写onClick()方法
因为MainActivity类实现了View.onClickListener接口,所以需要在MainActivity类中重写View.onClickListener接口的抽象方法onClick,如图4所示。
图4 重写onClick()方法
其中,v是View类的对象,通过v调用getId()方法获取v的ID(图4①),ID是一个正整数。通过switch...case语句判断用户点击的哪个视图,进行后续处理。