一、三个基本控件
1、标签控件(TextView)
- 常用属性
属性 | 功能 |
---|---|
text | 文本内容 |
textsize | 文本字号,单位:sp |
layout-height | 高度,单位:dp |
layout-width | 宽度,单位:dp |
2、编辑框控件(EditText)
- 常用属性
属性 | 含义 |
---|---|
text | 文本内容 |
textSize | 文本字号:sp |
textColor | 文本颜色,#ff0000 - 红色 |
hint | 提示信息 |
singleLine | 单行(true or false) |
layout_height | 高度,单位:dp (wrap_content, match_parent) |
layout_weight | 宽度,单位:dp (wrap_content, match_parent) |
inputType | 输入类型(普通文本、密码、邮件……) |
3、按钮控件(Button)
- 常用属性
属性 | 含义 |
---|---|
text | 文本内容 |
textSize | 文本字号,单位:sp |
textColor | 文本颜色,#ff0000 - 红色 |
background | 背景颜色或背景图片 |
layout_height | 高度,单位:dp (wrap_content, match_parent) |
layout_weight | 宽度,单位:dp (wrap_content, match_parent) |
- EditText与Button是兄弟关系,它们的爹是TextView
二、安卓事件处理机制
- 以按钮单击事件处理为例说明安卓事件处理步骤
序号 | 任务 |
---|---|
1 | 在界面类里声明按钮控件变量 |
2 | 通过findViewById()方法得到按钮实例 |
3 | 利用setOnClickListener()方法给按钮注册单击事件监听器 |
4 | 实现单击事件监听器接口,采用匿名实现方式 |
5 | 在接口的抽象方法里编写事件处理代码 |
三、案例演示:实现用户登录功能
1、创建安卓用户
- 基于
Empty Activity
模板创建安卓应用
2、准备背景图片
- 将背景图片background拷贝到drawable目录
3、基于模板创建登录窗口
-
基于
Empty Activity
模板创建LoginActivity
,要生成对应的布局文件,并且要设置为启动Activity
-
单击【finish】按钮
4、登录窗口布局资源文件
- 登录窗口布局资源文件 -
activity_login.xml
-
将约束布局改为线性布局,并设置相关属性。
-
添加用户标签
-
添加输入用户名的标签和编辑框,但是需要一个水平方向的线性布局把它们框起来
-
添加输入密码的标签和编辑框,但是需要一个水平方向的线性布局把它们框起来
-
添加登录按钮和取消按钮,但是需要一个水平方向的线性布局把它们框起来
属性 | 作用 |
---|---|
gravity | 用于设置容器的子控件的对齐方式,或控件的内容的对齐方式 |
orientation | 线性布局的方向(horizontal——横向、vertical——纵向) |
padding | 内边距,用于设置子控件与父容器边框的距离,或控件的内容与控件边框的距离;(paddingLeft、paddingRight、paddingTop、paddingBottom) |
layout_margin | 外边距,用于设置控件之间的距离;(layout_marginLeft,layout_marginRight、layout_marginTop、layout_marginBottom) |
5、主窗口布局资源文件
- 主窗口布局资源文件 -
activity_main.xml
6、安卓项目清单文件
- 安卓项目清单文件AndroidManifest.xml,删除MainAcivity元素包含的意图过滤器
7、字符串资源文件
- 在字符串资源文件
strings.xml
里定义所需字符串变量
8、登录窗口功能实现
- 登录窗口 -
LoginActivity
(1)声明控件变量
- 两个编辑框变量和两个按钮变量
(2)通过资源标识符获取控件实例
- 通过findViewById()方法获取控件实例(类似于
JavaScript
里的getElementById()
方法)
(3)登录按钮事件处理
- 给登录按钮注册单击监听器,实现监听器接口,并且编写事件处理代码
- 首先获取用户输入的用户名和密码,然后判断是否正确,弹出不同的吐司
(4)取消按钮事件处理
- 给取消按钮注册单击监听器,实现监听器接口,并且编写事件处理代码
- 单击取消按钮,关闭登录窗口(另外还有一种处理方法,只是清空两个编辑框而不关闭窗口)
9、启动应用,查看效果
- 思考:如果希望用户登录标签与下面的输入用户名编辑隔开一点,应该怎么设置标签的属性?
(1)输入用户名与密码正确的情况
- 用户名:xyx
- 密码:123456
(2)输入用户名或密码错误的情况
- 可以指定两个编辑框的宽度,比如200dp
- 重启应用,查看效果
四、利用意图启动组件
1、使用显式意图启动组件
- 方法一
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent); - 方法二
Intent intent = new Intent();
intent.setClass(FirstActivity.this, SecondActivity.class);
startActivity(intent); - 方法三
Intent intent = new Intent();
ComponentName component = new ComponentName(FirstActivity.this, SecondActivity.class);
intent.setComponent(component);
startActivity(intent);
2、使用隐式意图启动组件
(1)在Java代码创建隐式意图
Intent intent = new Intent();
intent.setAction(“net.hw.ACTION_NEXT”);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
五、利用意图传递数据
1、传递单项数据
- // 通过意图传递单项数据
intent.putExtra(“username”, strUsername);
intent.putExtra(“password”, strPassword); - 在目标组件通过意图获取单项数据
// 通过意图获取单项数据
String username = intent.getStringExtra(“username”);
String password = intent.getStringExtra(“password”);
2、传递数据包
(1)在起始组件通过意图携带数据包
- // 创建数据包,封装数据
Bundle data = new Bundle();
data.putString(“username”, strUsername);
data.putString(“password”, strPassword); - // 通过意图携带数据包
intent.putExtras(data);
(2)在目标组件通过意图获取数据包
- // 获取意图携带的数据包
Bundle data = intent.getExtras(); - // 从数据包里按键取值获取各项数据
String username = data.getString(“username”);
String password = data.getString(“password”);
六、案例演示:修改用户登录程序
- 功能要求:当登录成功,跳转到主窗口,显示用户名与密码。
1、修改登录窗口代码
- 创建显式意图,利用意图携带数据,按照意图启动目标组件
2、修改主窗口代码
- 接收登录窗口通过意图传递的数据并显示在标签里
3、启动应用,查看效果
4、修改登录窗口代码
- 将多项数据封装成数据包,通过意图传递数据包
5、修改主窗口功能代码
- 通过意图获取数据包,然后从数据包里按键取得各项数据