Android 监听按钮点击事件的三种方式(1:匿名内部类;2:外部类;3:接口方式)

Activity.xml 内容如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.prace3.MainActivity">

    <Button
        android:text="@string/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn1" />

    <Button
        android:text="@string/btn"
        android:layout_below="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn2" />

    <ImageButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn2"
        android:id="@+id/ibtn"
        android:src="@mipmap/ic_launcher"/>
</RelativeLayout>
MainActivity.java 内容如下
package com.example.prace3;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends Activity implements View.OnClickListener{

    private Button btn1;
    private Button btn2;
    private ImageButton ibtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn1 = findViewById(R.id.btn1);//以匿名内部类实现监听效果
        btn2 = findViewById(R.id.btn2);//以外部类方式实现监听效果
        ibtn = findViewById(R.id.ibtn);//以接口方式现监听效果

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"btn1内部匿名类实现监听效果",1).show();
            }
        });
        btn2.setOnClickListener(listener);
        ibtn.setOnClickListener(this);

    }

    //独立类实现
    View.OnClickListener listener = new btnOnClickListener(){
        @Override
        public void onClick(View v) {
            //调用父类的onclick
            super.onClick(v);
            Toast.makeText(MainActivity.this,"btn2外部类方式实现监听效果",1).show();
        }
    };

    //接口方法
    @Override
    public void onClick(View v) {
       Toast.makeText(MainActivity.this,"ibtn接口方式现监听效果",1).show();
        v.setAlpha(0.3f);//透明度
    }
}
//外部类
class btnOnClickListener implements View.OnClickListener{

    @Override
    public void onClick(View v) {
        Log.i("tag", "父类的onclick事件: ");
        v.setAlpha(0.5f);//透明度

    }
}


猜你喜欢

转载自blog.csdn.net/csdngaoqingrui/article/details/79213570