目录
一、在xml中设置按键的onClick绑定的函数
1.1、xml文件
1.2、java文件
1.3、完整代码
二、自定义类实现按键监听事件的接OnClickListener
1.1、实现接口类,在类中实现onclicked方法
1.2、绑定 局部变量button和xml中的button, findViewById
1.3、为前面做的准备进行绑定。使得按键被按下后执行你写的业务代码
1.4、完整java代码
三、匿名内部类实现按键响应
四、MainActivity实现OnClickListener接口
第一种是最容易的,剩下的3种都是围绕OnClickListener接口来实现
一、在xml中设置按键的onClick绑定的函数
1.1、xml文件
使用onClick可以定义一个函数,这个函数在java中实现,按键被点击后会去调用这个函数
android:onClick="bottonBeCliecked"
1.2、java文件
- 去实现xml绑定的函数,使用关键字public
public void bottonBeCliecked(View v){ }
- 可以使用v.getId(返回按下按键的id号)和R.id.but1(返回指定按键的id号,but1),判断是哪个按键按下的,前提是xml里面加了按键id
android:id="@+id/but1"
public void bottonBeCliecked(View v){ switch(v.getId()){ case R.id.but1: System.out.println("按键一被按下"); break; case R.id.but2: System.out.println("按键二被按下"); break; } }
-
Toast.makeText(context, text, duration) 在安卓APP界面的下方显示
Toast.makeText 构造方法 ,show()方法
context:this
text:显示的东西
duration:显示的时长,0
Toast.makeText(this, "按键一被按下", 0).show();
1.3、完整代码
xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/but1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按键1"
android:onClick="bottonBeCliecked"
/>
<Button
android:id="@+id/but2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="按键2"
android:onClick="bottonBeCliecked"
/>
</RelativeLayout>
java
package com.example.xw;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void bottonBeCliecked(View v){
switch(v.getId()){
case R.id.but1:
Toast.makeText(this, "按键一被按下", 0).show();
System.out.println("按键一被按下");
break;
case R.id.but2:
Toast.makeText(this, "按键二被按下", 0).show();
System.out.println("按键二被按下");
break;
}
}
}
二、自定义类实现按键监听事件的接OnClickListener
1.1、实现接口类,在类中实现onclicked方法
class MyClieckHandler implements View.OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.but1:
System.out.println("按键一被按下");
break;
case R.id.but2:
System.out.println("按键二被按下");
break;
}
}
}
1.2、绑定 局部变量button和xml中的button, findViewById
Button btn1;
Button btn2;
btn1 = (Button) findViewById(R.id.but1);
btn2 = (Button) findViewById(R.id.but2);
1.3、为前面做的准备进行绑定。使得按键被按下后执行你写的业务代码
btn1.setOnClickListener(new MyClieckHandler());
btn2.setOnClickListener(new MyClieckHandler());
1.4、完整java代码
package com.example.xw;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
class MyClieckHandler implements View.OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.but1:
System.out.println("按键一被按下");
break;
case R.id.but2:
System.out.println("按键二被按下");
break;
}
}
}
public class MainActivity extends Activity {
Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.but1);
btn2 = (Button) findViewById(R.id.but2);
btn1.setOnClickListener(new MyClieckHandler());
btn2.setOnClickListener(new MyClieckHandler());
}
}
三、匿名内部类实现按键响应
和第二种方法一样,只是写成了内部类
- 和方法2一样,绑定 局部变量button和xml中的button, findViewById
- 编写内部类
- 完整代码
package com.example.xw; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { Button btn1; Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.but1); btn2 = (Button) findViewById(R.id.but2); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub System.out.println("按键一被按下"); Toast.makeText(MainActivity.this, "按键一被按下", 0).show(); } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub System.out.println("按键二被按下"); Toast.makeText(MainActivity.this, "按键二被按下", 0).show(); } }); } }
四、MainActivity实现OnClickListener接口
- 在MainActivity类中实现接口
- 和第2种方法一样,都需要绑定局部变量button和xml中的button,setOnClickListener使得按键被按下后执行你写的业务代码
Button btn1; Button btn2; btn1 = (Button) findViewById(R.id.but1); btn2 = (Button) findViewById(R.id.but2); btn1.setOnClickListener(this); btn2.setOnClickListener(this);
- 实现接口里的方法
- 完整代码
package com.example.xw; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { Button btn1; Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.but1); btn2 = (Button) findViewById(R.id.but2); btn1.setOnClickListener(this); btn2.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.but1: Toast.makeText(this, "按键一被按下", 0).show(); System.out.println("按键一被按下"); break; case R.id.but2: Toast.makeText(this, "按键二被按下", 0).show(); System.out.println("按键二被按下"); break; } } }
师承上官可编程 —— 陈立臣