第二章 Android UI开发 学习笔记
2.1 布局的创建
关于布局
- 在Android程序中界面是通过布局文件设定的,在每个应用程序创建时会默认包含一个主界面布局,该布局位于res/layout目录中。
- 实际开发中每个应用程序都包含多个界面,而程序默认提供的一个主界面布局无法满足需求,因此经常会在程序中添加多个布局。
2.2 布局的类型
2.2.1 线性布局
- 线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下。
2.2.2 相对布局
2.2.3 帧布局
2.2.4 表格布局
2.2.5 绝对布局
2.3 常用控件
利用Html生成,空间是界面组成的主要元素,是与用户尽相直接交互的
2.3.1 TextView
- 用于显示文字(字符串)的控件,可在代码中通过设置属性改变文字的大小、颜色、样式等功能
2.3.2 EditView
- EditText继承自TextView,可以进行编辑操作,将用户信息传递给Android程序
- 还可以为EditText控件设置监听器,用来测试用户输入的内容是否合法。
2.3.3 Button
- Button是按钮,是用于响应用户的一系列点击事件,使程序更加流畅和完整。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o0qJVBaD-1616465270913)(https://cdn.nlark.com/yuque/0/2021/png/2196885/1615856789198-eb754688-c820-48b2-98b2-9984e6e9afac.png)]
-
4种实现方式–点击事件实现
-
- 指定指定Button的onClick属性方式
-
-
-
- 独立式方式
-
-
-
- 接口方式
-
-
-
- 匿名内部类方式
-
-
2.3.4 RadioButton
- RadioButton为单选按钮,它需要与RadioGroup配合使用,提供两个或多个互斥的选项集。
- RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。
设置监听事件
- 利用setOnCheckedChangeListener()监听RadioGroup控件状态,通过if语句判断被选中RadioButton的id。
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.rbtn) {
textView.setText("您的性别是:男");
} else {
textView.setText("您的性别是:女");
}
}
});
2.3.5 ImageView
- ImageView是视图控件,它继承自View,其功能是在屏幕中显示图像。ImageView类可以从各种来源加载图像(如资源库或网络),并提供缩放、裁剪、着色(渲染)等功能。
<!--设置背景图片-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg" />
<!--设置背景图片-->
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@android:drawable/sym_def_app_icon"/>
2.3.6 实战演练——QQ登录界面
2.4 常见对话框
对话框也是程序与用户交互的一种方式,通常用于显示当前程序提示信息以及相关说明,以小窗口形式展现。 常见对话框有以下几种:
2.4.1 普通对话框
普通对话框(Dialog)一般只会显示提示信息,并具有确定和取消按钮。
2.4.2 单选对话框
单选对话框和RadioButton作用类似,只能选择一个选项,它是通过AlertDialog对象调用setSingleChoiceItems()方法创建的。
2.4.3 多选对话框
多选对话框通常在需要勾选多种选项时使用,例如添加兴趣爱好、喜爱的电影等。创建多选对话框与创建单选对话框类似,调用setMultiChoiceItems()方法就可实现。
2.4.4 进度条对话框
进度条对话框一般在应用程序实现耗时操作时使用。Android中提供了两种进度条样式,圆形进度条和水平进度条。
2.4.5 消息对话框
消息对话框(Toast)是轻量级信息提醒机制,显示在应用程序界面的最上层,一段时间后自动消失不会打断当前操作,也不获得焦点。
2.4.6 自定义对话框
为了提高用户体验,达到更理想的效果,可根据需求自定义对话框样式。具体创建步骤如下:
1. 创建布局
创建一个自定义对话框的布局文件(my_dialog.xml),布局中需要设定对话框的标题、对话框内容以及确定和取消按钮。
2. 创建自定义对话框
创建一个类MyDialog继承自Dialog类,主要用于初始化自定义对话框中的控件以及响应按钮的点击事件。
3. 使用自定义对话框
在MainActivity中,调用MyDialog的构造方法将自定义对话框显示出来
package cn.itcast.androiddialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//普通对话框
// AlertDialog dialog; //声明对象
// dialog = new AlertDialog.Builder(this) //绑定当前界面窗口
// .setTitle("Dialog对话框") //设置标题
// .setMessage("是否确定退出?") //设置提示信息
// .setIcon(R.mipmap.ic_launcher) //设置图标
// .setPositiveButton("确定", null) //添加“确定”按钮
// .setNegativeButton("取消", null) //添加“取消”按钮
// .create(); //创建对话框
// dialog.show(); //显示对话框
//单选对话框
// new AlertDialog.Builder(this) //生成对话框
// .setTitle("请选择性别") //设置标题
// .setIcon(R.mipmap.ic_launcher) //设置图标
// .setSingleChoiceItems(new String[]{"男", "女"}, 0,
// new DialogInterface.OnClickListener() {
// public void onClick(DialogInterface dialog, int which) {
// }
// }
// )
// .setPositiveButton("确定", null)
// .show();
//多选对话框
// new AlertDialog.Builder(this)
// .setTitle("请添加兴趣爱好!")
// .setIcon(R.mipmap.ic_launcher)
// .setMultiChoiceItems(new String[]{"旅游", "美食", "汽车", "宠物"},
// null, null)
// .setPositiveButton("确定", null)
// .show();
//进度条对话框
// ProgressDialog prodialog; //声明对话框
// prodialog = new ProgressDialog(this); //构建对话框
// prodialog.setTitle("进度条对话框");
// prodialog.setIcon(R.mipmap.ic_launcher);
// prodialog.setMessage("正在下载请等候...");
// prodialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置水平进度条
prodialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置圆形进度条
// prodialog.show();
//创建Toast
// Toast.makeText(MainActivity.this, "Hello,Toast", Toast.LENGTH_SHORT).show();
//自定义对话框
MyDialog myDialog = new MyDialog(this, "我是自定义的Dialog");
myDialog.show();
}
}
2.5 样式和主题
2.5.1 样式
样式(style)是包含一种或多种控件的属性集合,可以指定控件高度、宽度、字体大小及颜色等。
- 自定义样式代码如下(styles.xml):
- 引用自定义样式代码如下(activity_main.xml):
2.5.2 主题
主题(theme)应用到整个Activity和Application的样式,当设置好主题后,Activity或整个程序中的视图都将使用主题中的属性,当主题和样式中的属性发生冲突时,样式的优先级要高于主题。 自定义主题代码如下(styles.xml):
- 引用自定义主题代码如下(AndroidManifest.xml):
2.6 国际化
国际化(internationalization)的应用具备支持多种语言功能,能被不同国家或地区用户同时访问,提供符合访问者阅读习惯的页面和数据。
由于国际化单词internationalization首字母“I”和尾字母“N”之间有18个字符,因此被简称为I18N。
(具体待展开)
2.7 程序调试
2.7.1 单元测试
- 单元测试是指在应用程序开发过程中对最小的功能模块进行测试,可以在完成某个功能之后对该功能进行单独测试。
- 使用AndroidStudio开发工具完成单元测试非常简单,在项目创建时Android Studio就已经默认创建了一个androidTest包和ApplicationTest类,所有测试的功能模块写入此类即可。
2.7.2 LogCat的使用
- LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息。
- Log类所输出的日志内容分为五个级别,分别对应Log类中的Log.v()、Log.d()、Log.i()、Log.w()、Log.e()静态方法。Android4.0新增加Assert比较特殊,没有对应的静态方法。
过滤显示
2.7.3 Debug的使用
待解决:环境出现问题
【学习笔记】
【学习资料】
- 教材:《Android移动开发案例教程》
- 学习资料:Android移动开发配套资料
-1.源代码:每个章节配套案例代码
-2.补充案例:项目、课后练习代码
-3.课程资料:课后习题及答案、ppt - github:Android
包含自己学习过程的全部案例、实验、项目代码 - 推荐学习视频:Android开发从入门到精通(项目案例版)