Android开发基础—通过匿名内部类实现按钮点击事件

  在上一篇中为大家展示了如何使用内部类实现按钮点击事件 

内部类实现的按钮点击事件
这次我们说下通过匿名内部类实现按钮点击事件,其实大家可以发现内部类主要的作用就是创建一个类去实现OnClickListener接口,那么我们就可以在setOnClickListener方法中直接new出来一个接口,当然这样肯定是可以 的,这就是今天我们的通过匿名内部类去实现按钮点击事件的方法。
老规矩,首先给大家奉上JAVA代码~

public class ButtonActivity extends AppCompatActivity  {         @Override    protected void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);        setContentView(R.layout.activity_button);        // 绑定Button 对象        Button button = findViewById(R.id.btn3);        // 使用匿名内部类创建点击事件        button.setOnClickListener(new View.OnClickListener() {                 @Override            public void onClick(View v) {                     Log.e("TAG","匿名内部类实现的点击事件");            }        });    }}

这里进行代码详解:

=========================================================================================================

动动你聪明的脑袋瓜,要想实现按钮的点击效果是不是首先得让activity知道你点的是哪个按钮?这个按钮就是我们在XML中定义的按钮,所以我们使用 findViewById找出来这个id。并把它与Button的对象 button所绑定,那么这样我们就可以通过点击样式界面中的按钮去操作button。

//这里的参数就是我们要点击按钮的idButton button = findViewById(R.id.btn3);

我们为这个button去添加一个监听器,时时刻刻的监听着button的状态,如果有点击则实现onClick()方法里面的代码,这里我们在控制台输出一句 “匿名内部类实现的点击事件”,并把它设置成错误日志,别问~问就是因为错误日志是红色的醒目!

  // 使用匿名内部类创建点击事件        button.setOnClickListener(new View.OnClickListener() {                 @Override            public void onClick(View v) {                     Log.e("TAG","匿名内部类实现的点击事件");            }        });       

在这里说下本身setOnClickListener 需要传入一个参数,这个参数是什么呢?对啦~就是一个实现了onClickListener接口的类的对象,说白了不就是一个实现接口的对象么,那好,既然这样我们就直接在参数里面给它new一个不就行了嘛! 然后我们监听器监听到这个按钮有点击动作就会实现里面的重写方法onClick(View v)对吧?
是不是很简单?

老样子贴出XML代码:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".ButtonActivity">    <Button        android:id="@+id/btn1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="自定义内部类的方法实现的点击事件"/>    <Button        android:id="@+id/btn2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="自定义内部类的方法实现的点击事件2"/>    <Button        android:id="@+id/btn3"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="匿名内部类的方法实现的点击事件"/>    <Button        android:id="@+id/btn4"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="当前Activity实现的点击事件的接口"/>    <Button        android:id="@+id/btn5"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="myClick"        android:text="在xml文件中绑定实现点击事件"/>    <Button        android:id="@+id/btn6"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="myClick"        android:text="在xml文件绑定实现点击事件2"        />LinearLayout>

=========================================================================================================

效果展示:


我们点击划了红线线的按钮

如我们所愿,在控制台输出了我们要输出的文字

这里说下通常有四种方式实现按钮点击事件:
1.通过内部类实现
2.通过匿名内部类实现
3.通过Activity实现
4.在xml中绑定

我们已经学会了两种,剩下两种我会在剩下两篇博客中给大家展示,最后我会做一篇关于这四种内部类的总结以及各种方式的使用场景。
预告:下一篇:通过Activity实现和通过xml中绑定
客官,今天脱发了吗?——今天完结撒发

更多相关文章

  1. Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡
  2. Android(安卓)—— Handler进阶(未完持续)
  3. Android内存泄漏原因及解决办法
  4. [图解]Android(安卓)View的事件分发机制
  5. 【Android】Handler 中 Looper 死循环为什么不会导致应用卡死的
  6. 在 Android(安卓)4.4.4 上,分析 input -- android framework 部分
  7. Android(安卓)Things:用户驱动-输入驱动
  8. Android嵌套滑动-Behavior方案实战及细节注意
  9. 一个简单的Android破解WIFI密码的方法(实用)

随机推荐

  1. android studio ndk 开发以及问题
  2. Your CPU does not support required fea
  3. Android ProgressBar 各种样式大全
  4. android 中xml文件中出现 Attr.value mis
  5. android 自定义控件属性
  6. 对android的android:taskAffinity初识
  7. gihub上不错的几个Android Project
  8. android:configChanges 屏幕横竖屏切换
  9. Android(安卓)使用Parcelable序列化对象
  10. Android开发资料推荐之安卓巴士Android开