Android 监听按钮的点击事件

onClick事件
1.Button和ImageButton都拥有一个onClick事件
 通过自身的.setOnClickListener(OnClickListener)方法添加点击事件
2.所有的控件都有一个onclick事件
 不仅仅Button和ImageButton拥有
3.通过点击事件的监听可以实现点击按钮之后要发生什么动作

监听事件实现的集中写法
1.匿名内部类的实现
2.独立类的实现
3.实现接口的方式来实现

package com.example.buttonimagebutton;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

    private Button button1;
    private ImageButton imageButton1;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // button1 实现 匿名内部类
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                int red = (int) (Math.random() * 255.9);
                int green = (int) (Math.random() * 255.9);
                int blue = (int) (Math.random() * 255.9);
                button1.setBackgroundColor(Color.rgb(red, green, blue));
            }
            
        });
        
        // button2 实现 外部类 MyOnClickListener
        imageButton1 = (ImageButton) findViewById(R.id.imageButton1);
        imageButton1.setOnClickListener(new MyOnClickListener(this));
        
    }
}

class MyOnClickListener implements OnClickListener {
    
    private MainActivity context;
    
    public MyOnClickListener(MainActivity context) {
        this.context = context;
    }

    @Override
    public void onClick(View arg0) {
        Toast.makeText(context, "Image按钮(ImageButton)要执行的逻辑", 1).show();
    }
}
MainActivity.java

其中,button1用于实现匿名内部类,它的作用是每当点击一下button1它的背景颜色就是随机改变;

imageButton1用于实现独立(自定义)的监听事件的类(MyOnClickListener implements OnClickListener),它用于在MainActivity中显示一个提示信息(Toast)。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮1" />
    

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

</LinearLayout>
activity_main.xml

效果:

原文地址:https://www.cnblogs.com/moonlightpoet/p/5400945.html