天天看點

安卓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;
    		}
    	}
        
    }
               

師承上官可程式設計 —— 陳立臣