Android~Button控件~三种常用点击方式

Button控件常用点击方式分为以下3种

方式

指定onClick属性

在对应Button那里添加一个事件 eg:android:onClick=“事件名称”(事件名称自己命名)

匿名内部类

设置一个监听器 setOnClickListener(对象) 对点击事件进行监听

Activity实现OnClickListener接口

重写onClick()方法,通过switch判断哪个语句被点击,所以TA比较适用于按钮多的情况,这样可以降低代码的重复率

  1. 指定onClick属性

android:id="@+id/btn_one"
(btn_on 作为这个Button的ID,每个控件ID最好不一样)
android:onClick=“btn_click1”
(btn_click1 作为点击按钮事会触发的事件名称,事件名称自己命名)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <Button
        android:id="@+id/btn_one"  
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮1"
        android:onClick="btn_click1"/>
        
</LinearLayout>
package com.example.test;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private Button btn_one;  //
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout2);
        
        //控件初始化:(Button)可以理解为强制转换,因为btn_one是Button控件,如果
        //btn_one是TextView,就是(TextView)。
        //findViewById(R.id.btn_one)这个的大概功能就是说我们去识别所有的ID
        //找出你要用到的这个btn_one,因为在这个页面其实是不认识btn_one的。
        btn_one=(Button)findViewById(R.id.btn_one);
    }
    
  	public void btn_click1(View v){
       btn_one.setText("onClick属性实现点击");
    }
    //当我们点击按钮的时候,他会出发事件,这里是对于事件的执行内容
    //getText()方法用于检索数据,setText()方法在应用别处显示数据。

}

效果如下:上边是点击前,下边是点击后

andlua自动点击屏幕 android自动点击按钮_安卓

  1. 匿名内部类

匿名内部类是对于按钮2进行实施的,不需要像按钮1一样增加一个事件
android:orientation=“vertical” 这个是按钮垂直排列的意思

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮1"
        android:onClick="btn_click1"/>
    <Button
        android:id="@+id/btn_two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮2" />

</LinearLayout>
package com.example.test;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity  {

    private Button btn_one;
    private Button btn_two;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout2);
        //控件初始化
        btn_one=(Button)findViewById(R.id.btn_one);
        btn_two=(Button)findViewById(R.id.btn_two);
        
        //通过匿名内部类实现点击事件,注意这个位置,不要写到下面去了
         //监听器setOnClickListener(对象)
        btn_two.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn_two.setText("匿名内部类实现点击");
            }
        });
        
    }
    public void btn_click1(View v){
        btn_one.setText("onClick属性实现点击");
    }
}

效果如下:

andlua自动点击屏幕 android自动点击按钮_andlua自动点击屏幕_02

  1. Activity实现OnClickListener接口

这个的xml代码和匿名内部类的是一样的,在出现两个也就是多个按钮的时候,我们使用这种方式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮1"
        android:onClick="btn_click1"/>
    <Button
        android:id="@+id/btn_two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮2" />

</LinearLayout>
package com.example.test;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

//implements作为类接口,注意这里多了一个implements View.OnClickListener实现监听器的接口
public class MainActivity extends AppCompatActivity  implements View.OnClickListener{

    private Button btn_one;
    private Button btn_two;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout2);
        //控件初始化
        btn_one=(Button)findViewById(R.id.btn_one);
        btn_two=(Button)findViewById(R.id.btn_two);
      //监听器setOnClickListener(this),this代表所在的类
        btn_one.setOnClickListener(this);
        btn_two.setOnClickListener(this);
    }
    //通过switch判断点击的哪一个按钮
    public void onClick(View v){
        switch (v.getId()){//判断是否获取到id
            case R.id.btn_one://获取的id是否是btn_one
                btn_one.setText("按钮1被点击");
                break;
            case R.id.btn_two://获取的id是否是btn_two
                btn_two.setText("按钮2被点击");
                break;
        }
    }
}

效果如下:

andlua自动点击屏幕 android自动点击按钮_android_03