安卓APP——按键响应

举报
dz小伟 发表于 2022/11/13 13:32:13 2022/11/13
【摘要】 ​目录一、在xml中设置按键的onClick绑定的函数1.1、xml文件1.2、java文件1.3、完整代码二、自定义类实现按键监听事件的接OnClickListener1.1、实现接口类,在类中实现onclicked方法1.2、绑定 局部变量button和xml中的button,  findViewById1.3、为前面做的准备进行绑定。使得按键被按下后执行你写的业务代码1.4、完整jav...

目录

一、在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;
    	}
    }
    
}

编辑

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


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。