天天看点

安卓APP——按键响应目录第一种是最容易的,剩下的3种都是围绕OnClickListener接口来实现一、在xml中设置按键的onClick绑定的函数二、自定义类实现按键监听事件的接OnClickListener三、匿名内部类实现按键响应四、MainActivity实现OnClickListener接口

目录

一、在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文件

  1. 去实现xml绑定的函数,使用关键字public
    public void bottonBeCliecked(View v){
           	
    }
               
  2. 可以使用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;
        	}
        }
               
  3. 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;
    	}
    }
    
}
           

安卓APP——按键响应目录第一种是最容易的,剩下的3种都是围绕OnClickListener接口来实现一、在xml中设置按键的onClick绑定的函数二、自定义类实现按键监听事件的接OnClickListener三、匿名内部类实现按键响应四、MainActivity实现OnClickListener接口

二、自定义类实现按键监听事件的接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());
    }
    
}
           

三、匿名内部类实现按键响应

和第二种方法一样,只是写成了内部类

  1. 和方法2一样,绑定 局部变量button和xml中的button,  findViewById
  2. 编写内部类
  3. 完整代码
    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接口

  1. 在MainActivity类中实现接口
  2. 和第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);
               
  3. 实现接口里的方法
  4. 完整代码
    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;
    		}
    	}
        
    }
               

师承上官可编程 —— 陈立臣