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);//透明度 } }