Android移动开发基础案例教程 第2章 Android UI开发

第二章 Android UI开发 学习笔记

2.1 布局的创建

image.png

关于布局

  • 在Android程序中界面是通过布局文件设定的,在每个应用程序创建时会默认包含一个主界面布局,该布局位于res/layout目录中。
  • 实际开发中每个应用程序都包含多个界面,而程序默认提供的一个主界面布局无法满足需求,因此经常会在程序中添加多个布局。

image.png

2.2 布局的类型

image.png

2.2.1 线性布局

  • 线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下。
  • image.png

image.png

2.2.2 相对布局

2.2.3 帧布局

2.2.4 表格布局

2.2.5 绝对布局

2.3 常用控件

利用Html生成,空间是界面组成的主要元素,是与用户尽相直接交互的

2.3.1 TextView

  • 用于显示文字(字符串)的控件,可在代码中通过设置属性改变文字的大小、颜色、样式等功能

image.png

2.3.2 EditView

  • EditText继承自TextView,可以进行编辑操作,将用户信息传递给Android程序
  • 还可以为EditText控件设置监听器,用来测试用户输入的内容是否合法。

image.png

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属性方式
      • image.png
    • 独立式方式
      • image.png
    • 接口方式
      • image.png
    • 匿名内部类方式
      • image.png

2.3.4 RadioButton

  • RadioButton为单选按钮,它需要与RadioGroup配合使用,提供两个或多个互斥的选项集。
  • RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。

image.png

设置监听事件

  • 利用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登录界面

image.png

2.4 常见对话框

对话框也是程序与用户交互的一种方式,通常用于显示当前程序提示信息以及相关说明,以小窗口形式展现。 常见对话框有以下几种:

2.4.1 普通对话框

普通对话框(Dialog)一般只会显示提示信息,并具有确定和取消按钮。

image.png

2.4.2 单选对话框

单选对话框和RadioButton作用类似,只能选择一个选项,它是通过AlertDialog对象调用setSingleChoiceItems()方法创建的。

image.png

2.4.3 多选对话框

多选对话框通常在需要勾选多种选项时使用,例如添加兴趣爱好、喜爱的电影等。创建多选对话框与创建单选对话框类似,调用setMultiChoiceItems()方法就可实现。

image.png

2.4.4 进度条对话框

进度条对话框一般在应用程序实现耗时操作时使用。Android中提供了两种进度条样式,圆形进度条和水平进度条。

image.png

2.4.5 消息对话框

消息对话框(Toast)是轻量级信息提醒机制,显示在应用程序界面的最上层,一段时间后自动消失不会打断当前操作,也不获得焦点。

image.png

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):

image.png

  • 引用自定义样式代码如下(activity_main.xml):

image.png

2.5.2 主题

主题(theme)应用到整个Activity和Application的样式,当设置好主题后,Activity或整个程序中的视图都将使用主题中的属性,当主题和样式中的属性发生冲突时,样式的优先级要高于主题。 自定义主题代码如下(styles.xml):

image.png

  • 引用自定义主题代码如下(AndroidManifest.xml):

image.png

2.6 国际化

国际化(internationalization)的应用具备支持多种语言功能,能被不同国家或地区用户同时访问,提供符合访问者阅读习惯的页面和数据。

由于国际化单词internationalization首字母“I”和尾字母“N”之间有18个字符,因此被简称为I18N。

image.png(具体待展开)

image.png

image.png

2.7 程序调试

2.7.1 单元测试

  • 单元测试是指在应用程序开发过程中对最小的功能模块进行测试,可以在完成某个功能之后对该功能进行单独测试。
  • 使用AndroidStudio开发工具完成单元测试非常简单,在项目创建时Android Studio就已经默认创建了一个androidTest包和ApplicationTest类,所有测试的功能模块写入此类即可。
  • image.png

image.png

image.png

image.png

2.7.2 LogCat的使用

  • LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息。
  • Log类所输出的日志内容分为五个级别,分别对应Log类中的Log.v()、Log.d()、Log.i()、Log.w()、Log.e()静态方法。Android4.0新增加Assert比较特殊,没有对应的静态方法。

image.png

过滤显示

image.png

image.png

2.7.3 Debug的使用

待解决:环境出现问题

image.png

【学习笔记】

【学习资料】


版权声明:本文为weixin_44589991原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。