一、 实验题目
事 件 处 理
【目的】
1.了解 Android 编程基础
2.熟悉 ImageView、Button、RadioButton 等基本控件,能够处理这些控件的基本事件
3.学会弹出基本的对话框,能够定制对话框中的内容,能对确定和取消按钮的事件做处理
二、 实现内容
实现一个 Android 应用,界面呈现与上个实验基本一致,要求:
(1)该界面为应用启动后看到的第一个界面
【其中输入学号和密码的控件要用 TextInputLayout 实现】
(2)点击图片,弹出相应的对话框(图略)
(3)切换RadioButton的选项,会弹出相应的Snackbar提示
(4)点击登录按钮依次判断学号是否为空,密码是否为空,用户名和密码是否正确;不正确则给出错误信息,如学号和密码都正确则提示“登录成功”
(5)点击注册按钮,如果切换选项时,RadioButton 选中的是“学生”,那么弹出 Snackbar 信息“学生注册,功能尚未启用”,如果选中的是“教职工”,那么弹出 Toast 信息“教职工注册功能尚未启用”。
三、 实验过程
这次实验是基于上次实验保留的工程文件,布局代码稍作改动,并增加了很多“事件处理”功能。我按实验要求一步步将功能加以实现,过程如下:
(1)应用启动后看到的第一个界面 【使用TextInputLayout控件】
从示例图可以看到,这次app的启动界面和上次的唯一差别便如下:
-------->>
于是将原来此位置的相关布局控件删除,在build.gradle(Module:app)添加依赖如下:
再在activity_main.xml布局文件中加入TextInputLayout控件,每个TextInputLayout里面包含一个EditText。设置好控件位置与text输入格式。
在MainActivity.java中对其做如下的设置,这样在输入text时左上角会出现浮动标签。
在完成此步骤时遇到了一个问题:启动app后,初始界面的EditText已默认被选中。
于是TextInputLayout的画面不是→,而是→
按网上方法,在EditText的父节点增加了如右代码:
即是将原本的焦点移除了,问题得以解决。
(2)点击图片,弹出相应的对话框
弹出的对话框如左。并要求 ↓
1 点击“拍摄”选项,弹出 Toast 信息“您选择了[拍摄]”;
2 点击“从相册选择”选项,弹出 Toast 信息“您选择了 [从相册选择]”;
3 点击“取消”按钮,弹出 Toast 信息“您选择了[取消]”。
在了解AlertDialog和Toast相关知识后,我先在MainActivity.java里创建了一个新的AlertDialog对话框,并在其中放入列表{“拍摄”,“从相册选择”},点击列表选项,判断下标,然后会弹出对应的toast信息。
接着再获取图片id,为其绑定一个监听器,click之后,之前设置的那个AlertDialog便会通过show()将我们所要的对话框展示出来。
(3)切换RadioButton的选项,会弹出相应的Snackbar提示
在了解Snackbar相关知识后,通过id获取RadioButton,对其监听如下:
其中【.setAction】使该 Snackbar 右侧按钮可以被点击并弹出一个Toast信息。【.setActionTextColor(getResources().getColor(R.color.colorPrimary))】是对Action颜色的设定,【 .setDuration(5000)】是对snackbar停留时延的设定(ms)。
最后根据RadioButton的不同显示不同的Snackbar信息。
格式例如:
(4)点击登录按钮依次判断学号是否为空,密码是否为空,用户名和密码是否正确;不正确则给出错误信息,如学号和密码都正确则提示“登录成功”。
【正确的学号和密码分别为“123456”,“6666”】
先是对“登录”Button绑定监听。再通过.getEditText().getText().toString()获取TextInputLayout输入的字符串,对其内容进行判断。若判断“学号/密码为空”则通过对TextInputLayout设置