Android点击事件(Button)

目录

Button按钮

Button相关属性介绍

 点击事件:

(不推荐)结合layout文件声明方法实现点击事件

事件写法(后面三种)的思路:

内部实现类完成点击事件:

匿名内部类:

Activity实现OnClickListener(Button)

jkToast

Toast的使用:


Button按钮

Button相关属性介绍

  首先,Button按钮继承TextView

  所以,Button按钮具有TextView的常用属性

  常用属性:text

 直接用background属性是不会生效的

                如果想要设置颜色生效

                        首先需要修改values->themes->themes.xml->文件中的style parent后加上.Bridge              想要给一个按钮设置多个背景图,在不同操作显示不同的背景图就需要使用StateListDrawable

StateListDrawable

        根据不同状态给background不同的值如何创建?

                右键drawable->new->Drawable Resource File

                        注意点:drawable中不可以用rgb色,需要从colors文件中引用

 

使用的时候只需在Button下调用即可(我起的名字不规范,注意名字规范)

 点击事件:

Android点击事件的四种写法

(不推荐)结合layout文件声明方法

内部实现类

实现相关接口

匿名内部实现类

(不推荐)结合layout文件声明方法实现点击事件

  • 先在LoginActivity.java中加入btnClick方法

  • public void btnClick(View view){
        //参数 Context, text, duration
        //上下文, 要提示的信息, 提示显示的时长
        Toast.makeText(LoginActivity,this, "提示:你点击了按钮",Toast.LENGTH.SHORT).show();
    }

  • 然后在布局文件activity_login.xml中加入

<!--登录按钮-->
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="@color/colorWhite"
    android:textSize="22sp"
    android:onClick="btnClick"
    android:text="登 录"/>

以上不推荐使用,仅供参考

事件写法(后面三种)的思路:

1、根据空间id去获取控件

2、设置控件的事件(如:点击事件)

3、在事件的方法中处理事件

提示:

控件 缩写前缀
TextView tv
EditTextet et
ImageView iv
Button/RadioButton/ImageButton btn/rb/ib
RelativeLayout/LinearLayout/FrameLayout rl/ll/fl
ListView lv
WebView wv
CheckBox cb
ProgressBar pb

内部实现类完成点击事件:

先在activity_login.xml中Button按钮

<!--登录按钮-->
<Button
    android:id="@+id/btn_login_submit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="@color/colorWhite"
    android:textSize="22sp"
    android:text="登 录"/>

之后在相对应的java的类中实现一个ClickListener

Class ClickListener implements View.onClickListener{
    @Override
    public void onClick(View v){
        int id = v.getId();
        switch(id) {
            case R.id.btn_login_submit:
                Toast.makeText(LoginActivity.this,"提示:你点击了按钮,内部实现类",Toast.LENGTH.LONG).show();
                break;
        }
    }
}

之后在相对应的Java类中的onCreate中创建内部实现类的对象并设置点击事件

@Override
protected void onCreate(@Nullable Bundle savedInstanceState){
    super.OnCreate(savedInstanceState);
    //设置布局
    setContentView(R.layout.activity_login);
    //获取控件
    Button btnSubmit = findViewById(R.id.btn_login_submit);
    //②创建内部实现类
    ClickListener clickListener = new ClickListener();
    //②设置点击事件
    btnSubmit.setOnClickListener(clickListener);
}

匿名内部类:

public class LoginActivity extends AppCompatActivity{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState){
        super.onCreate(savedInstanceState){
            
            //设置布局
            setContentView(R.layout.activity_login);
            
            //获取控件
            Button btnSubmit = findViewById(R.id.btn_login_submit);
            
            //匿名内部类实现的方式
            btnSubmit.setOnClickListener(new View.OnClickListener){
                @Override;
                public void onClick(View view){
                    Toast.makeText(LoginActivity.this, 
                                   "提示:你点击了按钮,匿名的内部实现类",Toast.LENGTH_LONG).show();
                }
            }
        }
    }
}

以上两种适合按钮少点击事件少的情况,而按钮多点击事件多的话用上述两种方法有可能造成代码冗余在按钮多点击事件多的情况下推荐实现相关接口来完成

Activity实现OnClickListener(Button)

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置布局
        setContentView(R.layout.activity_login);
        //获取控件
        Button btnSubmit = findViewById(R.id.btn_login_submit);
        //设置点击事件
        btnSubmit.setOnClickListener(this);
    }
    
    // 重载OnClickListener
    @Override
    public void onClick(View view){
        switch(view.getId()){
            case R.id.btn_login_submit:
                Toast.makeText(LoginActivity.this, 
                               "提示:你点击了按钮,Activity实现了OnClickLitener",Toast.LENGTH_LONG).show();
        }
    }
}

Toast

  • Toast是Android系统提供的轻量级信息提醒机制,用于向用户提示即时消息,它显示在应用程序界面的最上层,显示一段时间后自动消失不会打断当前操作,也不获得焦点。

Toast的使用:

  • 使用Toast提示信息的实例代码:

Toast.makeText(Context,Text,Time),show();
  1. 这段代码首先调用了Toast的makeText方法用来设置提示信息,

  2. Context:表示应用程序环境的信息,就是当前组件的上下文环境,如果在Activity中使用的话,那么该参数可设置为"Activity.this",

  3. Text:表示你需要提示的信息,

  4. Time:表示提示信息的时长,其属性值有"LENGTH_SHORT 和 LENGTH_LONG",这两个值分别表示“短时间”,“长时间”,

  5. 然后调用了show方法来讲提示信息显示到界面中。

示例:

Toast.makeText(MainActivity.this,"WIFI已断开",Toast.LENGTH_SHORT).show();

猜你喜欢

转载自blog.csdn.net/m0_60623666/article/details/125840413