首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >速读原著-Android应用开发入门教程(控件和基本事件的响应)

速读原著-Android应用开发入门教程(控件和基本事件的响应)

作者头像
cwl_java
发布2020-01-15 10:37:51
4820
发布2020-01-15 10:37:51
举报
文章被收录于专栏:cwl_Javacwl_Javacwl_Java

第 6 章 UI的基本外形和控制

Android UI 系统的知识结构如下图所示:

在这里插入图片描述
在这里插入图片描述

对于 一个 GUI 系统地使用,首先是由应用程序来控制屏幕上元素的外观和行为,这在各个 GUI 系统中是不相同的,但是也具有相通性。Android 系统在这方面,包含了基本的控件控制,键盘事件响应,窗口间跳转、对话框、菜单、样式等内容,这是 GUI 系统所具有的通用内容。

6.1 控件和基本事件的响应

在任何一个 GUI 系统中,控制界面上的控件(通常称为控件)都是一个基本的内容。对于 Android 应用程序,控件称为 View。

在 Android 中,在处理 UI 中的各种元素的时候,两个程序中的要点为:

  • 得到布局文件(XML)中的控件句柄
  • 设置控件的行为 本小节介绍在 Android 中几种基本的程序控制方法,要获得的效果是通过 2 个按钮来控制一个文本框的背景颜色,其运行结果如图所示:
在这里插入图片描述
在这里插入图片描述

6.1.1.事件响应方法

本例构建一个应用程序,其在 AndroidManifest.xml 描述文件中的内容如下所示:

在这里插入图片描述
在这里插入图片描述

本例定义了一个 Android 中基本的活动。 本例的布局文件(layout)的代码片段如下所示:

在这里插入图片描述
在这里插入图片描述

根据以上的布局文件中定义的两个按钮和一个文本框,这个布局文件被活动设置为 View 后,显示的内容就如上图所示,只是行为还没有实现。

行为将在源代码文件 TestEvent1.java 中实现,这部分的代码如下所示:

在这里插入图片描述
在这里插入图片描述

在创建的过程中,通过 findViewById 获得各个屏幕上面的控件(控件)的背景,这里使用的 R.id.button1 等和布局文件中各个元素的 id 是对应的。实际上,在布局文件中,各个控件即使不写 android:id 这一项也可以正常显示,但是如果需要在代码中进行控制,则必须设置这一项。

根 据 Button 控件的 setOnClickListener() 设置了其中的点击行为,这个方法的参数实际上是一个View.OnClickListener 类型的接口,这个接口需要被实现才能够使用,因此在本例的设置中,实现了其中的 onClick()函数。这样既可实现点击的时候实现相应的功能,在点击的函数中,将通过 Text 的句柄对其进行控制。

在 Android 的控件使用方面,这两个编程方面要点是:

  • 使用 findViewById()获取布局文件(XML)中控件的句柄;
  • 使用 setOnXXXListener()设置事件处理函数。

在获取句柄时需要转换成相应的控件类型,findViewById()函数的参数是一个整数,返回值是一个android.view.View 类型。通过 R.id.XXX 找到布局文件中定义的 ID,然后通过将基础类转换成其实际的类获得真正的句柄。注意:所转换类必须和布局文件中描述的控件一致。

SetOnXXXListener()等函数是 android.view.View 类的函数,各种控件(包括 Button、EditText)都扩展这个类,同族的函数包括:

void setOnClickListener(View.OnClickListener l); 
void setOnFocusChangeListener(View.OnFocusChangeListener l); 
void setOnKeyListener(View.OnKeyListener l);
void setOnLongClickListener(View.OnLongClickListener l); 
void setOnTouchListener(View.OnTouchListener l);

这些函数用于事件处理,它们由程序实现,通过设置这些内容也就设置了控件的行为。这些函数的参数都是所对应的 android.view.View 类中的方法。

Android 中 UI 基本控制内容:使用 findViewById()联系布局文件中控件和句柄,并通过 OnClickListener()等定制句柄的行为。

6.1.2.第二种响应方法

除了上述的使用方法,在使用同样的布局文件和应用程序的情况下,实现同样的功能。本例中使用的是另外的一种方式实现。

本例使用的源代码文件如下所示:

在这里插入图片描述
在这里插入图片描述

这个例子的主要变化是让活动实现(implements)了 OnClickListener()这个进口,也就是需要实现其中的 onClick()方法。然后通过 setOnClickListener()将其设置到按钮中的 参数就是 this,表示了当前的活动。

通过这种方式的设置,如果程序中有多个控件需要设置,那么所设置的也都是一个函数。为了保证对不同控件具有不同的处理,可以由 onClick()函数的参数进行判断,参数是一个 View 类型,通过 getId()获得它们的 ID,使用switch…case 分别进行处理。

在本例中,通过将需要将文本框(TextView)句柄保存为类的成员(mText),这样就可以在类的各个函数中都能获得这个句柄进行处理。这和上一种方法是有区别的,因为上一个例子实现的接口和获得的 TextView 在同一个函数中,因此不需要保存 TextView 的句柄。

6.1.3.第三种响应方法

本例介绍同样功能实现的第三种方法,区别也仅仅在于 JAVA 源代码中,实现的内容如下所示。

在这里插入图片描述
在这里插入图片描述

本例通过定义实现活动类中的 2 个子类,来实现 View.OnClickListener 这个接口,这种方式是一种最为直接的方式,即为不同的控件单独实现它的相应类。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第 6 章 UI的基本外形和控制
    • 6.1 控件和基本事件的响应
      • 6.1.1.事件响应方法
      • 6.1.2.第二种响应方法
      • 6.1.3.第三种响应方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档