监听器实现猜谜语App

认真读完这800字,你可以学会开发下面这个App:猜谜语,答对了,出表情包。

一、我讲

今天,我先讲一下控件的监听器 Listener ,然后重点说一下输入框 EditText 的使用。

1.1 监听器 Listener

交通违章的摄像头,你一压线,它就拍上了。判定原理可能不一样,有的是先拍照再检测,也有的是检测到你违章了才拍。不管怎样,只要有了这个行为,它总能通过各种方法知道。

这可以叫监听器,它总是盯着一件事情。

同样,我们也可以给App中的各种控件,比如按钮,配备一个监听器。

一旦按钮被按下,监听器就能收到消息,然后,再去做一些可以描述的事情。

1.2 输入框EditText和它的监听器

Android中支持用户输入的控件叫 EditText ,来看一下它在 xml 中的定义:

其中有个 inputType 属性,那是输入类型,可以对输入进行过滤,就像是 htmlinput 标签的 type 属性。

一旦设置了,比如 number 属性,那么弹出来的键盘只有数字,你输不了别的玩意儿。

除此之外, EditText 还拥有一个监听器,叫 TextChangedListener ,用于监听输入内容的变化。

editText.addTextChangedListener(new TextWatcher() {    @Override    public void beforeTextChanged(CharSequence s, int start, int count, int after) {            // 文本变化之前,s:变化前的文本    }    @Override    public void onTextChanged(CharSequence s, int start, int before, int count) {            // 文本变化之后,s:改变后的文本    }    @Override    public void afterTextChanged(Editable s) {            // 文本变化之后,s:变化后的文本    }

这个监听器会关注输入框内容的变化,它会详细记录变化之前,变化之中,变化之后,哪里变化了,由什么变为什么,这些都会在对应方法里返回数据,如上代码注释所描述。

二、你做

要做的是猜谜语的小功能:

还是使用新建的项目, layout 文件夹下的 xml 管视图, java 文件下的 Activity 管逻辑。

这次还多了一个图片,稍微学习一下这个控件。

2.1 资源文件(图片)

需要借机引入的是,Android的图片资源放在 res 目录下的 mipmap 文件里。

所以,你要把表情包图片 ok.png 复制到 mipmap 下,让 srcCompat="@mipmap/ok" 引用。

2.2 布局和逻辑

总体的 activity_main.xml 布局是这样的:

<?xml version="1.0" encoding="utf-8"?>            

控制逻辑的 MainActivity.java 是这样的:

public class MainActivity extends AppCompatActivity {    ImageView imageView;    EditText editText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageView = findViewById(R.id.imageView);        imageView.setVisibility(View.GONE);        editText = findViewById(R.id.editText);        editText.addTextChangedListener(new TextWatcher() {            @Override            public void beforeTextChanged(CharSequence s, int start, int count, int after) {            }            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {            }            @Override            public void afterTextChanged(Editable s) {                if (s.toString().contains("rain")){                    imageView.setVisibility(View.VISIBLE);                }            }        });    }    }

这段代码简单到我无话可说。

最后,点击顶部的Run图标,选择模拟器,程序就跑起来了。

欢迎点赞,评论+转发!!!

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章