1.实验目的
(1)掌握多个Activity之间切换的方法,通过多个Activity之间的切换掌握Intent(意图)的基础用法。
(2)了解Shape的使用。在界面编辑器中可用的控件为基本控件,可通过布局文件中的属性对其进行美化。App本身是一个客户端程序,出色的外观可以吸引更多用户。shape文件可以为控件定义复杂特性,shape文件可设置填充(solid)、渐变(gradient)、描边(stroke)、圆角(corners)和内边距(padding)属性。本实验将学习使用圆角和填充属性设置控件的外观。
(3)进一步学习本章实验1中描述Android工程的目录结构。
2.Intent
Intent主要用于在应用程序间、组件间交互与通信,多个Activity之间必须使用Intent进行跳转。Intent可以启动Activity、Service(服务),还可以发送Broadcast Receiver(广播消息接收者),启动各组件的常用方法如表2.2所示。
表2.2 使用Intent启动各组件的常用方法
Intent可以携带6种信息,分别为动作(Action)、数据(Data)、组件(Component)、附加信息(Extra)、类别(Category)和旗标(Flag)。本实验将用到的是组件、附加信息、动作和数据的传递,其余信息请读者自行研究。
•组件:使用setClass(Context this Activity,Class cls)方法从一个Activity跳转到另一个Activity。第一个参数是源组件,Context是一个抽象类,它的实现类有Activity等;第二个参数Class是目的组件的类实例。
•附加信息:传递额外的字符串数据时可以通过putExtra(String key,String value)方法传递键值对,在第二个Activity中用getIntent获取该意图后,再通过Intent的getStringExtra(String key)方法获取放入的键值。
•动作:动作是Intent中定义的常量字符串,Intent携带不同的动作可打开不同的系统或第三方应用程序,Android系统自带的常用动作字符串如表2.3所示。读者也可以为自己的Activity定义动作字符串以供调用。
•数据:使用动作一般须携带不同的数据,传递的数据一般通过Uri对象实现。Android系统通过匹配动作和数据确定要调用的组件。
表2.3 系统Activity常用动作
续表
3.实验界面与功能
本实验的界面有3个,如图2.19所示,其功能如下所述。
(1)点击图2.19(a)中的“发送短信”按钮将出现发送短信界面。
(2)点击图2.19(b)中左上角的返回按钮回到图2.19(a),再点击“登录”按钮跳转到图2.19(c)所示的界面。
图2.19 Activity的切换
4.代码结构
在本实验中有两个Java文件和两个布局文件,该工程最终的目录结构如图2.20所示。其中,First Activity的代码结构如图2.21所示,该类包含两个内部类,分别用于“发送短信”和“登录”两个按钮的监听,还有一个默认的onCreate()方法。
图2.20 App02工程目录结构
图2.21 First Activity代码结构
5.实验步骤
步骤1:新建一个模块并命名为App02,在新建模块的过程中,将默认的Activity命名为First Activity.java,对应的界面布局文件为activity_first.xml,如图2.22所示。
图2.22 创建新的模块
步骤2:在原文件夹下复制一份First Activity.java和activity_first.xml作为图2.19(c)所示的界面,分别重命名为Second Activity.java和activity_second.xml,如图2.23所示。
图2.23 复制得到Second Activity
注意:资源文件只能以小写字母和下划线作为首字符,其后的字符只能为“a~z”“0~9”“_”中的任一字符,否则编译将无法通过。
步骤3:打开strings.xml文件,添加该应用要使用的常量字符串。
步骤4:打开布局文件activity_first.xml,在界面编辑器中删除唯一的控件Text View,在该布局中增加两个按钮,并按图2.13设置好各自上下左右的约束关系,在属性面板中设置两个按钮的宽度都为match_parent。(www.xing528.com)
步骤5:打开文本编辑器,设置“发送短信”按钮的ID为button1,设置“登录”按钮的ID为button2,背景图片采用随后在drawable下自定义的形状文件custom_button.xml。将按钮的文字设置为白色,文字大小为22 sp,并按图2.19(a)设置文本,该控件布局和位置相关的其他属性值不变。例如,“发送短信”按钮的属性值如下所示,“登录”按钮的属性值可参照以下代码自行完成。
步骤6:在步骤5中用到了“android:background="@drawable/custom_button"”,其含义为在drawable目录下有一个文件名为custom_button.xml,将该文件中定义的外观设置为按钮的背景。完成步骤5之后,该属性上会出现红色标识报错,将光标放到红色报错文字上按“Alt+Enter”键进行修复,随后出现图2.24(a)所示的菜单,在该菜单中选择第一个选项,则将在drawable目录下创建custom_button.xml文件。在出现的图2.24(b)所示的窗口中保持默认选项,然后单击“OK”按钮,完成custom_button.xml文件的创建。
图2.24 创建custom_button.xml文件
步骤7:打开custom_button.xml文件,删除原有内容,增加一个Shape,设置圆角半径为10 dp,填充为蓝色,如下所示。
步骤8:在First Activity.java文件中增加两个按钮的监听类。
步骤9:在First Activity.java文件的onCreate()方法中通过find View ById()方法获取到两个按钮,并为这两个按钮绑定步骤8中定义的监听器。
步骤10:打开布局文件activity_second.xml,将默认的Text View的ID更改为my Text View。
步骤11:打开文件Second Activity.java,在该文件的onCreate()方法中绑定步骤2修改好的布局文件activity_second.xml,并通过find View ById()方法获取布局文件中定义的my Text View控件。
步骤12:所有Activity都必须在Android Manifest.xml文件中注册,在该文件中注册Second Activity。
步骤13:单击工具栏的运行按钮,运行并调试该程序。
知识拓展:Android Studio常用功能
(1)Android Studio采用了项目模块化管理方式,即一个项目中包含多个模块,这种方式可将复杂系统分解为更好的可管理模块。学习其他优秀代码是Android开发的必经之路,如果下载了一个项目,如何导入?如果需要导入下载的一个模块,如何操作?如果其他工程是由Eclipse环境创建的又该如何运行?
①在导入项目和模块之前要分清项目和模块。Android Studio项目和模块可通过目录来区分。图2.25所示为Android Studio项目目录结构,图2.26所示为模块目录结构,项目和模块下各个目录的作用如表2.4所示。
图2.25 Android Studio项目目录结构
图2.26 Android Studio模块目录结构
表2.4 Android Studio各个目录的作用
②分清项目和模块之后,即可导入一个新的项目。打开项目的方式有两种:第一种方式是,打开Android Studio,在出现的窗口中选中“Open an existing Android Studio project”,在出现的窗口中选择项目所在目录或者项目下的build.gradle文件,即可打开一个项目;第二种方式是在已经打开项目后再打开一个项目,依次选择“File”|“Open…”,在随后出现的对话框中选择项目所在目录或者项目下的build.gradle文件。导入项目时经常会报错,常见的错误有以下2种。
•“Error:Failed to find target with hash string android-**in:**** Install missing platform(s)and sync project”,如图2.27所示,主要原因是导入模块使用的SDK版本或者Build Tools版本当前环境中没有装。出现这种情况时有两种解决方法:第一种是直接单击报错信息“Install missing platform(s)and sync project”安装SDK和Build Tools;第二种是修改模块下的build.gradle代码,先查看sdk\build-tools下的目录获取Build Tools版本号,再查看sdk\platforms下的目录获取SDK版本号,最后用记事本打开模块下的build.gradle文件,并修改compileSdk Version、build Tools Version和targetSdk Version为sdk目录下对应的版本号,然后单击按钮进行同步。
图2.27 SDK API版本号不匹配错误提示
•不同版本使用的扩展包版本不同,如果扩展包版本不正确可能会报图2.28所示的错误,出现这种情况时,要修改模块下的build.gradle文件对应的扩展包版本号,如将图2.28中所示的“com.android.support:appcompat-v7:23.3.1”更改为适当版本,该版本号需要和SDK版本号相匹配。
图2.28 扩展包版本不正确错误提示
③在打开的项目中导入一个新的模块,依次选择“File”|“New”|“Import Module”,在弹出的对话框中选择需要导入的模块即可。
④因为Eclipse开发环境是Android Studio出现以前使用了很久的集成开发环境,所以网络上的很多工程都是在Eclipse环境下创建的。与Android Studio开发环境相比,Eclipse开发环境中的目录结构、编译方式等存在很大差异。如果要在Android Studio环境下打开在Eclipse环境下创建的工程,值得推荐的方法就是重建工程,然后复制核心代码和配置文件。所以,先在Android Studio环境下创建一个相同包路径的项目或模块,然后使用Eclipse环境下对应的文件替换如下目录中的内容:模块名\src\main\java、模块名\src\main\Android Manifest.xml和模块名\src\main\res,如果原工程中使用了第三方库,找到该文件并复制至模块名\libs目录下。然后同步工程,Eclipse环境可能存在和Android Studio版本的兼容性问题,可以根据编译或执行中的报错信息进行修改。
(2)Android Studio以易用性闻名,Android Studio提供了很多快捷键,可以提高开发效率,表2.5所示为常用的快捷键,在实验过程中使用这些快捷键可提高代码编写速度。
表2.5 Android Studio常用的快捷键
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。