JSRUN 用代码说话

用户交互

编辑教程

用户交互

在这篇教程中,我们将对之前所添加的Button元素进行设置以实现对用户点击的检测与响应。

为了达成这一目标,我们需要在应用程序的主 Activity类中略微涉及Java编程内容。

如果大家在Java开发方面的经验不太丰富也没必要担心,只要按步骤进行即可完成学习。

我们将在本系列的 下一篇文章中深入探讨Java语法,从而保证大家了解初步Android开发任务中所必需的编程语言知识。

大家可以在Android当中以多种不同方式实现用户交互。

我们将学习两种最为典型的处理方案,从而实现应用按钮对用户点击的感应——两种方案 都会用到一点XML代码以及Java实施流程。

Android当中包含几种不同的交互UI元素,足以感应来自用户的各类输入操作。

输入操作的处理方式必须与 UI项相匹配,但整个过程仍然大体相同。

我们将以一个按钮为起点开始探索Android平台上的用户交互,因为按钮无疑是最简单也最常用的界面元素。

用户交互基础

在进一步探讨细节之前,我要首先为刚刚接触应用程序开发工作的朋友们解释几项UI概念。

为了实现应用交互,我们需要利用特定元素检测用户的交互操 作。 看过上一篇文章的朋友一定还记得,Android中存在View,而在今天的示例中具体是指Button。

要实现交互,我们首先需要“监听”用户的操 作。 虽然Android主要运行在搭载触控屏幕的移动设备上,但大家仍然可以在计算机上利用编程语言处理交互开发。

举例来说,在后面提到“点击”的部分, 我们指的是利用鼠标点击或者用手指触摸/点触对应位置。

用户与应用程序的交互方式是多种多样的。他们可以点触、划动以及“长按”对应项目。当这些操作活动发生时,我们将其称为一个“事件”。因此,我们需 要通过设置让应用程序监听特定UI项目上是否发生了特定事件。在今天的示例中,我们需要监听针对Button的点击(或者点触/触摸)操作。

我们需要监听并响应这类用户事件。要做到这一点,我们将向Java Activity类中添加代码以实现对按钮点击的监听与响应。只要按钮上出现点击事件,这部分代码就会开始执行。虽然其它类型的用户交互会涉及不同的方法 代码以及多种多样的事件类型,但其基本过程都是相通的。

识别UI元素

为了指明用户交互具体指向哪个View,我们需要在应用程序当中识别出每个交互性View。在文章列举的范例中,我们只讨论一个View——但大家 在今后实际进行应用开发时,可能会用到多种不同类型的交互性View。为了让它们彼此之间有条不紊地运作,我们需要为每个View设置一个用于识别的独特 ID属性,并将其应用于整个应用程序。首先在Eclipse中打开我们的主布局文件并切换到XML编辑标签。接下来找到我们为Button元素添加的代码,利用以下语法为其分配一个ID:

android:id="@+id/myButton"

我们需要为Android布局中所使用的每一个元素分配ID属性,从而帮助自己顺利识别每个View元素。请注意以上代码中的“@+id”语法。这 会提示Android工具在项目资源“R.java”文件中创建一个新ID,并为其指定一个在应用程序内独一无二的文本字符串,也就是 “myButton”。在应用中XML布局代码的其余部分乃至其它XML与Java文件内,我们将使用这一名称来指定Button View。而后保存当前布局文件。

打开应用程序中的主Activity文件。我们将向其中添加一点点Java代码,但大家不用为自己令人捉急的Java水平而担忧,只要理解其中与处 理用户交互相关的大致流程即可。如果各位朋友原先从未接触过Java,请继续关注我们的下一篇教程,到时候回头再看就会发现现在的内容其实非常简单。我们 要在Activity类中创建一个变量来引用Button View。在类声明开头、起始内容之后:

public class MainActivity extends Activity {

添加变量声明:

private Button theButton;

我们的声明包含视觉特性(下一次再详加说明)、变量类型以及变量名称。Eclipse可能会在“Button”文本部分加注下划线并提示 “Button不能被解析为一个类型”。由于我们使用的是由Android平台所提供的Button类型,所以必须将其导入至类文件当中。将鼠标悬停在 “Button”文本上方,Eclipse将为我们显示出一套建议列表。在其中选择“Import‘Button’(android.widget)”。 这样类文件顶部就会出现一个可以自由展开与收起的导入声明列表。

现在我们可以在布局当中取回指向Button View的引用,并将该引用保存在我们所创建的变量当中。在我的Activity onCreate方法中,紧接着以下代码行进行布局设置:

setContentView(R.layout.activity_main);

如下所示输入一行新代码以取回Button:

    theButton = (Button)findViewById();

在“findViewById()”的括号中输入“R.”——Eclipse会为我们提供资源类型提示列表。在其中选择“id”。

上述代码会在按钮被点击后指定需要执行的方法名称。对应方法应该被添加到显示在布局中的Activity类当中。

这样一来,我们就不必向Activity 类中加入大量代码,包括创建Button变量、在其中保存View引用、实施OnClickListener或者为该按钮设置一个专门的点击监听类。

在本例中,我们可以通过添加以下代码(使用同样的代码以实现一致的操作效果)来取代向类中添加onClick方法:

public void buttonClicked(View v){
    Button theButton = (Button)v;
    theButton.setText("Ouch");
}

尽管这种方法看起来似乎更简单,但它利用Java让引用指向布局元素的过程值得认真关注——大家在今后的应用程序开发过程中会经常用到。

另外,如果大家的布局当中包含多个可点击项目,可能会更倾向于在同一个方法内处理所有点击事件——在这种情况下,文章前面提到的方案会更为理想。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟