『Android基础入门』如何为控件添加响应

625 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

👨‍🎓作者简介:一位喜欢写作,计科专业大二菜鸟

🏡个人主页:starry陆离

🕒首发日期:2022年4月22日星期五

📚订阅专栏:Android基础入门

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦


​ 注意:不是教程只是笔记,如有错误欢迎批评指正

1.引言

本笔记是基于有java基础且熟悉使用Android约束布局和基本控件而记录,内容来自于老师的课堂但不限于课堂

2.获取组件ID

第一步:在java文件中获取组件id

可以看到在xml文件里,每一个组件都可以设置id属性,这是唯一能区分每一个组件的标志属性,因此在activity文件中,我们就是通过id来获取这个组件

Snipaste_2022-04-22_08-34-31

这样我们就在Activity中获取到了文本组件

image-20220422083753881

小说明:在Activity文件里还可以设置组件的一些基本属性,如文本内容,字体大小,颜色等等

 package com.unity3d.lessonapp3;
 ​
 import androidx.appcompat.app.AppCompatActivity;
 ​
 import android.os.Bundle;
 import android.widget.TextView;
 ​
 public class MainActivity extends AppCompatActivity {
 ​
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         //第一步  获取到文本控件的id
         TextView txtView=findViewById(R.id.textView);
         //在java文件里的值会优先于xml布局文件的值
         txtView.setText("湖南中医药大学");
         txtView.setTextSize(40);
         //设置颜色,获取颜色             
         txtView.setTextColor(getResources().getColor(R.color.purple_200));
     }
 }

image-20220422084155548

3.实现按钮监听

第二步:实现控件监听

实现控件监听,有两种方法,我将由难到易记录,两种方式各有应用场景

方法一:新建类继承 .OnClickListener接口,通过控件绑定实现监听

首先在Activity下创建一个新类,继承View.OnClickListener接口,实现其中的方法,Log.i("hello2","hello2 world");这一句的作用是打印输出,有两个参数,前者是一个标签区分打印语句,后者是打印输出的内容

image-20220422085520669

但是打印输出的结果并不会呈现在屏幕上,而是在监视台,通过设置的标签way1就可以很快的找到我们的打印语句,每点击一次跳转按钮就会打印一次

image-20220422090050048

方法二:通过匿名内部类来实现事件监听

方法一很适用多个组件都需要实现同类监听,我们就只需要书写一次自定义监听类,通过事件绑定来实现多个组件的事件监听;但是如果我只有一个组件需要实现监听,而且监听的内容很简洁,也需要创建一个自定义类那就太麻烦了,通过匿名内部类就可以解决这个问题

         button.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 Log.i("way2","way2:Good Morning!");
             }
         });

image-20220422090847111

拓展:匿名内部类的写法已经很简洁了,但是lambda表达式更加精简了代码

         button.setOnClickListener(
                 (view)->{
                     Log.i("way2.0","way2.0:hello lambda!");
                 }
         );