XXX说明书

Size: px
Start display at page:

Download "XXX说明书"

Transcription

1 实验 1 Android SDK 开发环境的安装及配置 1.1 实验目的 掌握 Java SDK 和 Android SDK 开发环境的安装和配置 1.2 实验内容 Java SDK 的安装和环境变量的配置 Eclipse 的安装和配置 Android SDK 的安装和环境变量的配置 Eclipse 插件 ADT 的安装和配置 Android 模拟器的配置 1.3 实验步骤 1.Java SDK 的安装和环境变量的配置 1) 下载 JDK: 官方网址为 /downloads/jdk7u9-downloads html, 根据电脑的操作系统选择正确的版本进行下载 ( 如图 1-1) 下载完成之后如图 1-2 所示 1

2 图 1-1 JDK 下载选择界面 图 1-2 JDK 下载完成示意图 2) 安装 JDK: 双击安装包进行安装, 显示如图 1-3 所示的安装向导 图 1-3 JDK 安装向导 2

3 3) 点击下一步, 选中要安装得部分和要安装的路径, 建议使用默认配置 开发工具 是必须安装的, 它是 JDK 的核心, 源代码 是 JDK 类库包的源代码, 建议安装 ( 很多时候都能用到源代码 ) 公共 JRE 可以选择不安装, 因为 JDK 中包括 JRE 这里选择默认的配置, 如图 1-4 所示 图 1-4 JDK 安装路径选择界面 4) 选择安装的路径, 点击下一步安装 JDK, 其安装状态如图 1-5 所示 图 1-5 JDK 安装状态界面 3

4 5) 当 JDK 安装完成后会提示是否安装 JRE, 如图 1-6 所示 所示 图 1-6 JRE 安装提示界面 6) 点击下一步, 出现 JRE 安装进度界面, 如图 1-7 所示 安装完成后如图 1-8 图 1-7 JRE 安装进度显示界面 4

5 图 1-8 JRE 安装完成界面 7) 配置环境变量 : 在 Windows 操作系统当中配置 path 和 classpath 两个环境变量 (1) 右击我的电脑 - 属性, 点击 高级 选项卡, 单击 环境变量, 如图 1-9 所示 图 1-9 环境变量选择界面 5

6 (2) 选择系统变量中的 Path 变量, 如图 1-10 所示 图 1-10 配置 Path 变量 (3) 将安装路径复制到 Path 路径的最后面,( 安装路径的查找如图 1-11 所示 ), 注意添加路径之前先加英文的分号, 如图 1-12 所示 图 1-11 复制安装路径 6

7 图 1-12 添加路径 (4) 验证环境变量是否配置成功, 打开命令行窗口, 输入命令 java version, 如可以出现图 1-13 所示的信息, 则说明 JDK 已经安装成功 图 1-13 验证环境变量配置情况 7

8 (5) 配置环境变量 classpath, 如上所述, 点击环境变量, 新建系统变量, 变量 名为 classpath, 变量值为英文的句号, 如图 1-14 所示 到此为止, 两个环境变 量也配置成功 图 1-14 配置 classpath 变量 8) 下面运行第一个 java 程序 HelloWorld (1) 新建文件 HelloWorld.java 使用文本编辑器 NotePad++ 打开 ( 如图 1-15 所示 ), 编写简单的 HelloWorld 程序 图 1-15 编写 HelloWorld 程序 (2) 打开命令行, 输入 HelloWorld 程序所在的磁盘名, 对 java 文件进行编译, 8

9 编译之后出现一个新的文件 HelloWorld.class, 最后执行.class 文件, 打印出 Hello World!, 如图 1-16 所示 图 1-16 编译执行 HelloWorld.java 文件 2. Eclipse 的安装和配置 1) 下载 Eclipse: 官方网址为 根据操作系统的位数来选择 Windows 32 Bit 或者 Windows 64 Bit, 如图 1-17 所示 图 1-17 Eclipse 下载界面 下载完成之后是个压缩包, 进行解压缩到某个路径, 如图 1-18 所示 9

10 图 1-18 解压下载文件 2) 双击 eclipse.exe 即可打开, 选择一个路径作为 workspace, 如图 1-19 所示 图 1-19 选择 workspace 路径 3.Android SDK 的安装和配置 1) 官方下载地址为 下载完成之后进行安装, 如图 1-20 所示 2) 配置环境变量 图 1-20 Android SDK 下载 将 tools 文件夹所在的路径加入到环境变量 path 中, 如图 1-21 所示 10

11 4.Eclipse 插件 ADT 的安装和配置 图 1-21 配置环境变量 在 eclipse 中的 help 选项中选择 Install New Software, 如图 1-22 所示 示 图 1-22 Eclipes 运行界面 1) 输入网址 点击 Add, 如图 1-23 所 11

12 图 1-23 下载插件 ADT 2) 点击 Next 进行安装 然后在 window 中选择 Preferences 中进行路径配置 5.Android 模拟器的配置 图 1-24 路径配置 1) 在 eclipse 中选择安卓标志图标进行模拟器配置, 如图 1-25 所示 12

13 图 1-25 Android 模拟器的配置第一步 2) 点解 New, 配置模拟器的详细参数, 如图 1-26 所示, 图 1-26 Android 模拟器的配置第二步 3) 点击 Creat AVD, 然后选择 4.0.3, 点击 Start, 进行发布, 如图 1-27 所示 然后 Android 应用就可以运行于模拟器上面了 1-27 注册 AVD 13

14 实验 2 第一个应用程序 HelloWorld 2.1 实验目的 熟悉和了解 Eclipse 开发环境 掌握在 Eclipse 开发环境下新建 Android 应用工程及运行 Android 应用程序的方法 2.2 实验内容 新建 Android 工程, 并正确设置其运行环境 在模拟器上运行 Android 应用程序 在我们的开发平台上运行 Android 应用程序 2.1 实验步骤 1)Eclipse 为我们提供了大量的快捷键, 要记住每一个快捷键几乎是不可能的, 但是掌握一些常用的快捷键, 可以大大提升我们的开发效率 Alt+/( 代码助手功能 ( 代码提示 )) Ctrl+Shift+W( 关闭所有已打开的编辑窗口 ) Alt+Shift+R ( 重命名文件或变量 ) Ctrl+Shift+O ( 自动导入需要的包并删除多余的 import 的语句 ) Alt+Shift+F ( 代码格式化 ) Ctrl+1 ( 快速修复 ) Ctrl+D ( 删除一行, 光标可以放在这行的任意位置 ) Ctrl+Z ( 撤销 ) Ctrl+Y ( 恢复 ) Ctrl+/ ( 添加与取出注释 //) Alt+Shift+S ( 快速添加 java Bean 类的各种方法 ) 2) 打开 Eclipse, 在菜单栏一次选择 :File->New->Project 打开 new project 对话框, 点击 Android 选择 Android project, 如图 2-1 所示 14

15 图 2-1Eclipse 工作界面 图 2-2 新工程命名 Project Name: 工程名为 HelloWorld, 如图 2-3 所示 图 2-3 建立新工程 15

16 Application Name: 应用程序的名字, 可以输入你想要的字符串, 这里我们输入 HelloWorld, 如图 6-30 所示 Package Name: 包名, 至少是两级格式, 如 a.b, 这里我们输入 ccnu.edu.cn Creat Activity: 自动帮我们创建 Activity, 取名为 HelloWorldActivity Minimum SDK: 支持 SDK 的最低版本为 8 到此, 一个 Android 工程建立完毕, 其工程目录如图 2-4 所示 图 2-4 新工程目录 3) 在模拟器上运行该程序选择 HelloWorld, 右击选择 Run As->Android Application, 或者 Run->Run Configurations, 如图 2-5 所示 图 2-5 运行程序 16

17 运行结果如图 2-6 所示 - 图 2-6 运行结果 右键点击 HelloWorld 工程, 一次选择 Run As->Android Application, 如图 2-7 所示 待实验箱出现图 2-8 所示, 表示 HelloWorld 工程运行成功, 图 2-7 在其他开发平台上运行程序选择 17

18 图 2-8 HelloWorld 工程运行成功界面 18

19 实验 3 活动 Activity 3.1 实验目的 了解 Android 应用程序中的活动程序 Activity. 了解 Activity 执行状态迁移的生命周期. 3.2 实验内容 过程 编写程序测试 Android 活动程序 Activity 执行状态迁移的生命周期的具体 3.3 实验原理 Android 操作系统的活动程序 (Activity) 是最基本的处理工作单元, 大部分的活动程序都会有一个相对应的显示窗体, 就好像 HTML 程序都会针对某一个网页来描述 Android 应用程序的窗体就好比一个配置了按钮 编辑框和文本框的窗体, 一个可用浏览器显示的 Web 网页或一个播放 3D 影像的窗体 一个 Android 应用程序是由一个或多个活动程序组成 Activity 有三个状态 : (1) 当它在屏幕前台时 ( 位于当前任务堆栈的顶部 ), 它是激活或运行状态 它就是响应用户操作的 Activity (2) 当它上面有另外一个 Activity, 使它失去了焦点但仍然对用户可见时, 它处于暂停状态 在它之上的 Activity 没有完全覆盖屏幕, 或者是透明的, 被暂停的 Activity 仍然对用户可见, 并且是存活状态 ( 它保留着所有的状态和成员信息并保持和窗口管理器的连接 ) 如果系统处于内存不足时会杀死这个 Activity (3) 当它完全被另一个 Activity 覆盖时则处于停止状态 它仍然保留所有的状态和成员信息 然而对用户是不可见的, 所以它的窗口将被隐藏, 如果其它地方需要内存, 则系统经常会杀死这个 Activity 当 Activity 从一种状态转变到另一种状态时, 会调用以下保护方法来通知这种变化 : 83

20 // 第一次创建是调用 在 Acticity 整个生命周期只会被调用一次 protected void oncreate(bundle savedinstancestate); // oncreate 调用之后就会调用 onstart protected void onstart(); // onstart 之后调用 onrestart 此方法之后 Acticity 处于运行 ( 激活 ) 状态 protected void onrestart(); protected void onresume(); /* 当一个新的 Activity 被打开后, 原来的 Activity 就会调用这个状态 * 如果新打开的 Activity 并没有完全覆盖原来的 Activity 或者新的 *Activity 是半透明状态, 原来的 Activity 还可以见 那么就只会调用这 * 个方法, 使 Activity 处于暂停状态, 否则, 继续往下调用 stop */ protected void onpause(); // 当一个新的 Activity 被打开之后, 而原来的 Activity 被它覆盖掉时,// 在调完 onpause 方法后, 就会调用 onstop, 使 Activity 处于停止状态 protected void onstop(); // 当 Activity 被销毁的时候, 将调用 ondestroy protected void ondestroy(); 这七个方法定义了 Activity 的完整生命周期, 实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环 Activity 的完整生命周期自第一次调用 oncreate() 开始, 直至调用 ondestroy() 为止 Activity 在 oncreate() 中设置所有 全局 状态以完成初始化, 而在 ondestroy() 中释放所有系统资源 例如, 如果 Activity 有一个线程在后台运行从网络下载数据, 它会在 oncreate() 创建线程, 而在 ondestroy() 销毁线程 Activity 的可视生命周期自 onstart() 调用开始直到相应的 onstop() 调用结束 在此期间, 用户可以在屏幕上看到 Activity, 尽管它也许并不是位于前台或者也不与用户进行交互 在这两个方法之间, 我们可以保留用来向用户显示这个 Activity 所需的资源 例如, 当用户不再看见我们显示的内容时, 我们可以在 onstart() 中注册一个 BroadcastReceiver 来监控会影响 UI 的变化, 而在 onstop() 中来注消 onstart() 和 onstop() 方法可以随着应用程序是否为用户可见而被多 84

21 次调用 Activity 的活跃生命周期自 onresume() 调用起, 至相应的 onpause() 调用为止 在此期间,Activity 位于前台最上面并与用户进行交互 Activity 会经常在暂停和恢复之间进行状态转换 例如当设备转入休眠状态或者有新的 Activity 启动时, 将调用 onpause() 方法 当 Activity 获得结果或者接收到新的 Intent 时会调用 onresume() 方法 图 3-1 是官网给出的一个 Activity 重要的状态路径 直角矩形代表 Activity 在不同状态之间转换时, 你可以调用的回调函数来实现某些操作 带颜色的椭圆代表 Activity 可以处于的主要状态 图 3-1 Activity 重要的状态路径 3.4 实验步骤 1) 编程 Activity_Lifecycle 工程 2) 在 Android 模拟器上运行该程序 85

22 右键单击 Activity_Lifecycley 应用程序工程, 依次选择 Run As->Android Application, 即会运行此应用程序 一开始运行该应用程序, 首先会运行 oncreat() 方法, 直接显示 main.xml 窗体布局, 如图 3-2 所示 图 3-2 main.xml 窗体布局 接着开始执行 FirstActivit 的 oncreat()->onstart()->onresume() 方法, 打印出相 关信息, 如图 3-3 所示 图 3-3 FirstActivit 执行界面 然后点击按钮, 启动 SecondActivity, 如图 3-4 所示 86

23 图 3-4 启动 SecondActivity 依次执行 FirstActivity 的 onpause(),secondactivity 的 oncreat()-> onstart()-> onresume() 和 FirstActivity 的 onstop() 方法, 如图 3-5 所示 图 3-5 FirstActivity 的执行顺序 此时点击模拟器上的 按钮, 界面回到 FirstActivity, 如图 3-6 所示 图 3-6FirstActivity 界面 打印出信息如图 3-7 所示 图 3-7 打印信息 此时点击 打电话按钮, 打印出信息如图 3-8 所示 图 3-8 点击 电话按钮 后的信息打印界面 点击 回到 FirstActivity, 打印信息如图 3-9 所示 87

24 图 3-9 FirstActivity 信息界面 点击 返回到主界面, 打印信息如图 3-10 所示 图 3-10 主界面 4) 为了加深对这几个方法的了解, 可是试着运行 Activity_Lifecycle_01, 只是把 SecondActivity 变成了窗口样式, 代码没有改变, 但是打印出的信息不同了, 自己可以尝试分析 实验 4 Activity&Intent 4.1 实验目的 了解 Android 的意图方法 Intent 了解 Android 活动程序 Activity 和意图方法 Intent 之间的关系 4.2 实验内容 编写程序测试 Android 活动程序 Activity 如何进行显示窗体的切换 使用 Intent 在 Activity 之间传递数据 4.3 实验原理 一般情况 Android 应用程序是由以下四种组件构造而成的 : 活动 广播接收器 服务 内容提供器需要注意的是, 并不是每个 Android 应用程序都必须构建这四个组件, 有些可能由这些组件的组合而成 88

25 活动是最基本的 Android 应用程序组件, 应用程序中, 一个活动通常就是一个单独的屏幕 每一个活动都被实现为一个独立的类, 并且从活动基类中继承而来, 活动类将会显示由视图控件组成的用户接口, 并对事件做出响应 大多数的应用是由多屏幕显示组成 在这些组件之间的通讯中, 主要是由 Intent 协助完成的 Intent 负责对应用中一次操作的动作 动作涉及数据 附加数据进行描述,Android 则根据此 Intent 的描述, 负责找到对应的组件, 将 Intent 传递给调用的组件, 并完成组件的调用 Intent 不仅可用于应用程序之间, 也可用于应用程序内部的 Activity/Service 之间的交互 因此,Intent 在这里起着一个媒体中介的作用, 专门提供组件互相调用的相关信息, 实现调用者与被调用者之间的解耦 在 SDK 中给出了 Intent 作用的表现形式为 : 通过 Context.startActivity() 或者 Activity.startActivityForResult() 启动一个 Activity; 通过 Context.startService() 启动一个服务, 或者通过 Context.bindService() 和后台服务交互 ; 通过广播方法 ( 如 Context.sendBroadcast(),Context Send 或 derebroadcast (),Context sendstickybroadcast()) 发给 broadcast receivers Intent 属性的设置, 包括以下几点 :( 以下为 XML 中定义, 当然也可以通过 Intent 类的方法来获取和设置 ) (1)Action, 也就是要执行的动作 SDK 中定义了一些标准的动作, 如表 7-1 所示 当然, 也可以自定义动作 ( 自定义的动作在使用时, 需要加上包名作为前缀, 如 "com.example.project.show_color ), 并可定义相应的 Activity 来处理我们的自定义动作 (2)Data, 也就是执行动作要操作的数据 Android 中采用指向数据的一个 URI 来表示, 如在联系人应用中, 一个指向某联系人的 URI 可能为 :content://contacts/1 对于不同的动作, 其 URI 数据的类型是不同的 ( 可以设置 type 属性指定特定类型数据 ), 如 ACTION_EDIT 指定 Data 为文件 URI, 打电话为 tel:uri, 访问网络为 而由 content provider 提供 89

26 的数据则为 content: URIs 表 7-1 SDK 中定义的标准动作 Onstant Target component Action ACTION_CALL activity Initiate a phone call. ACTION_EDIT activity Display data for the user to edit. ACTION_MAIN activity Start up as the initial activity of a task, with no data input and no returned output. ACTION_SYNC activity Synchronize data on a server with data on the mobile device. ACTION_BATTERY_LOW broadcast receiver A warning that the battery is low. ACTION_HEADSET_PLUG broadcast receiver A headset has been plugged into the device, or unplugged from it. ACTION_SCREEN_ON broadcast receiver The screen has been turned on. ACTION_TIMEZONE_CHANGED broadcast The setting for the time 90

27 receiver zone has changed. (3)type( 数据类型 ), 显式指定 Intent 的数据类型 (MIME) 一般 Intent 的数据类型能够根据数据本身进行判定, 但是通过设置这个属性, 可以强制采用显式指定的类型而不再进行推导 (4)category( 类别 ), 被执行动作的附加信息 例如 LAUNCHER_CATEGORY 表示 Intent 的接受者应该在 Launcher 中作为顶级应用出现 ; 而 ALTERNATIVE_CATEGORY 表示当前的 Intent 是一系列的可选动作中的一个, 这些动作可以在同一块数据上执行 还有其他的行为如表 7-2 所示 表 7-2 被执行动作的附加信息 Constant CATEGORY_BROWSABLE Meaning The target activity can be safely invoked by the browser to display data referenced by a link for example, an image or an message. CATEGORY_GADGET The activity can be embedded inside of another activity that hosts gadgets. CATEGORY_HOME The activity displays the home screen, the first screen the user sees when the device is turned on or when the HOME key is pressed. CATEGORY_LAUNCHER The activity can be the initial activity of a task and is listed in the top-level application launcher. CATEGORY_PREFERENCE The target activity is a preference panel. (5)component( 组件 ), 指定 Intent 的的目标组件的类名称 通常 Android 会根据 Intent 中包含的其它属性的信息, 比如 action data/type category 进行查找, 最终找到一个与之匹配的目标组件 但是, 如果 component 这个属性有指定的话, 将直接使用它指定的组件, 而不再执行上述查找过程 指定了这个属性以后,Intent 的其它所有属性都是可选的 91

28 (6)extras( 附加信息 ), 是其它所有附加信息的集合 使用 extras 可以为组件提供扩展信息, 比如, 如果要执行 发送电子邮件 这个动作, 可以将电子邮件的的标题 正文保存在 extras 里, 传给电子邮件发送组件 (a)intent-filter 的定义中一些属性设置的例子 <action android:name="com.example.project.show_current" /> <category android:name="android.intent.category.default" /> <data android:mimetype="video/mpeg" android:scheme="http"... /> <data android:mimetype="image/*" /> <data android:scheme="http" android:type="video/*" /> (b)intent 用法实例 1 无参数 Activity 跳转 Intent it = new Intent(Activity.Main.this, Activity2.class); startactivity(it); 2 向下一个 Activity 传递数据 ( 使用 Bundle 和 Intent.putExtras) Intent it = new Intent(Activity.Main.this, Activity2.class); Bundle bundle=new Bundle(); bundle.putstring("name", "This is from MainActivity!"); it.putextras(bundle); startactivity(it); // it.putextra( test, "shuju ); // startactivityforresult(it,request_code); 对于数据的获取可以采用 : Bundle bundle=getintent().getextras(); String name=bundle.getstring("name"); (c) 向上一个 Activity 返回结果 ( 使用 setresult, 针对 startactivityforresult(it,request_code) 启动的 Activity) Intent intent=getintent(); Bundle bundle2=new Bundle(); bundle2.putstring("name", "This is from ShowMsg!"); intent.putextras(bundle2); setresult(result_ok, intent); 92

29 (d) 回调上一个 Activity 的结果处理函数 protected void onactivityresult(int requestcode, int resultcode, Intent data) { // TODO Auto-generated method stub super.onactivityresult(requestcode, resultcode, data); if (requestcode==request_code){ if(resultcode==result_canceled) settitle("cancle"); else if (resultcode==result_ok) { String temp=null; Bundle bundle=data.getextras(); if(bundle!=null) temp=bundle.getstring("name"); settitle(temp); } } } 其他的一些应用实例 :\ 1) 打电话 a. 叫出拨号程序 Uri uri = Uri.parse("tel: "); Intent it = new Intent(Intent.ACTION_DIAL, uri); startactivity(it); b. 直接打电话出去 Uri uri = Uri.parse("tel: "); Intent it = new Intent(Intent.ACTION_CALL, uri); startactivity(it); 使用這些程序, 需要在 AndroidManifest.xml 中, 加上 //<uses-permission id="android.permission.call_phone" /> 93

30 2) 传送 SMS/MMS a. 调用短信程序 Intent it = new Intent(Intent.ACTION_VIEW, uri); it.putextra("sms_body", "The SMS text"); it.settype("vnd.android-dir/mms-sms"); startactivity(it); b. 传送消息 Uri uri = Uri.parse("smsto:// "); Intent it = new Intent(Intent.ACTION_SENDTO, uri); it.putextra("sms_body", "The SMS text"); startactivity(it); c. 传送 MMS Uri uri = Uri.parse("content://media/external/images/media/23"); Intent it = new Intent(Intent.ACTION_SEND); it.putextra("sms_body", "some text"); it.putextra(intent.extra_stream, uri); it.settype("image/png"); startactivity(it); 4.4 实验步骤 利用 Activity_intent 应用程序来演示如何利用 Intent 类来进行显示窗体间的 切换 按照前面所属步骤导入工程, 程序启动起来, 显示的第一个窗体如图 4-1 所示 94

31 图 4-1 启动程序后所显示的第一个窗体 点击按钮, 启动 OtherActivity, 此时, 通过以下代码向 OtherActivity 传递数据 : // 生成一个 Intent 对象 Intent intent = new Intent(); // 在 Intent 对象当中添加一个键值对 intent.putextra("testintent", "123"); // 设置 Intent 对象要启动的 Activity intent.setclass(activity01.this, OtherActivity.class); // 通过 Intent 对象启动另外一个 Activity Activity01.this.startActivity(intent); OtherActivity 启动之后, 如图 4-2 所示, 包含一个 TextView, 用来显示从 Activity01 传递过来的数据 95

32 图 4-2 从 Activity01 传递过来的数据 使用 Intent 启动发短信的 Activity, 以下的 4 行代码将启动发送短信的 Activity Uri uri = Uri.parse("smsto:// "); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putextra("sms_body", "The SMS text"); startactivity(intent); 执行结果如图 4-3 所示 96

33 图 4-3 使用 Intent 启动发短信的 Activity 点击按钮, 启动发短信的 Activity, 如图 4-4 所示 图 4-4 发短信的 Activity 界面 上面的例子说明,Intent 在两个 Activity 之间传递数据, 并不要求这两个 Activity 在同一个应用程序下 实验 5 Android 常用的控件 5.1 实验目的 掌握 Android 常用控件的使用方法和基本属性 5.2 实验内容 测试 Android 应用程序中常用控件的使用方法 5.3 实验原理 (1)TextView 文本显示框 1xml 设计, 代码如下所示 <TextView 97

34 android:id= android:layout_width ="fill_parent" android:layout_height="wrap_content" // 设置 id // 宽度充满全屏 // 高度为包含内容 android:textcolor="#aaa00" android:background="#aaa00" // 设置字体颜色 // 设置背景颜色 android:text=" 你好 " // 设置显示的文本内容 // 在视图上显示的内容, 中的 hello 字符串 android:paddingleft="50px" // 设置内边距 到左边框的距离 android:paddingright="50px" // 设置内边距到右边框的距离 android:paddingtop="5px"// 设置内边距到上边框的距离 android:paddingbottom="5px"// 设置内边距到底部边框的距离 android:padding="3dip" // 设置内边距 到上 下 左 右的距离均为 30dip android:textsize="30sp"// 设置显示文本的字体大小 android:singleline="true"/ / 设置是否为单行显示 android:layout_below="@id/imageview_handler"// 在什么下 android:gravity ="left" // 用于设置 View 中内容相对于 View 组件的对齐 方式 android:layout_gravity// 用于设置 View 组件相对于 Container 的对齐方 式 android:layout_marginleft="30px" // 设置外边距 左侧到父控件距离 android:layout_weight="1"// 控件权重, 即占的比例, 默认值为 0 android:gravity="center_horizontal"// 水平居中 /> 2 代码设计 TextView textview = new TextView(this); // 声明对象 textview.settextcolor(color.red); // 设置字体颜色 textview.settextsize(20); // 设置字体大小 textview.setbackgroundcolor(color.blue);// 控件背景色 98

35 textview.settext(" 你好 ") // 显示的文字 textview.setheight textview.setwidth textview.setvisibility(gone/visible); // 设置为不可见 / 可见 textview.setgravity(gravity.center);// 设置文字权重绑定监听器 TextView textview = (TextView)findViewById(R.id.myTextView); // 得到对象 textview.setonclicklistener(new OnClickListener() { public void onclick(view v) { // TODO Auto-generated method stub secondtextview.settext(" 你好!"); } }); (2)Button 按钮 <Button android:id="@+id/mybutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text= 我的按钮 /> 设置监听器 mybutton.setonclicklistener(new OnClickListener() { public void onclick(view v) { // TODO Auto-generated method stub // 处理按钮事件产生一个 Toast, 利用 button.gettext() 得到按钮显示的内容 Toast toast = Toast.makeText(Activity01.this, " 你点击了 "+mybutton.gettext()+" 按钮!",Toast.LENGTH_LONG); // 设置 toast 显示的位置 toast.setgravity(gravity.top, 0, 150); 99

36 // 显示该 Toast toast.show(); } }); (3)ImageButton 带图标的按钮控件 <ImageButton android:id= "@+id/imagebutton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/qq" /> // 在 xml 设计所使用的图片 代码中设计 imagebutton.setimagedrawable(getresources().getdrawable(r.drawable.im age2));// 在代码中设计使用的图片 ( 得到对象后 ) 设置监听器 imagebutton=(button) findviewbyid(r.id.mybutton); imagebutton.setonclicklistener(new OnClickListener() { public void onclick(view v) { // TODO Auto-generated method stub } }); (4)EditText 文本编辑框 (a)xml 设计 <EditText android:id="@+id/myedittext" android:layout_width="100dip" android:layout_height="wrap_content" android:layout_torightof="@+id/mytextview" android:layout_marginleft="20dip"/> 100

37 (b) 代码设计 myedittext1=(edittext) findviewbyid(r.id.myedittext1); myedittext1.setonclicklistener(new OnClickListener() { public void onclick(view v) { // TODO Auto-generated method stub } }); (5)CheckBox 复选框控件 <CheckBox android:id="@+id/read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/read"/> CheckBox readbox = (CheckBox)findViewById(R.id.read);// 多选按钮添加监听器 readbox.setoncheckedchangelistener(new CompoundButton.OnCheckedChangeListener() { public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { // TODO Auto-generated method stub if(ischecked){ Toast.makeText(ActivityTest.this,"read",Toast.LENGTH_SHORT).show(); System.out.println("read is checked"); }else{ System.out.println("read is not checked"); }}); (6)RadioButton 单选按钮,RadioGroup 单选钮组一个单选选择由两部分组成, 分别是前面的选择按钮和后面的内容 按钮通过 RadioButton 来实现, 答案通过 RadioGroup 来实现 <RadioGroup 101

38 android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" </RadioGroup> 代码中 private RadioGroup radiogroup; private RadioButton femalebutton; private RadioButton malebutton; radiogroup = (RadioGroup)findViewById(R.id.radioGroup); femalebutton = (RadioButton)findViewById(R.id.femaleButton); malebutton = (RadioButton)findViewById(R.id.maleButton); radiogroup.setoncheckedchangelistener(new RadioGroup.OnCheckedChangeListener() { public void oncheckedchanged(radiogroup group, int checkedid) { // TODO Auto-generated method stub if(femalebutton.getid()==checkedid){ Toast.makeText(ActivityTest.this," 性别是女 ", Toast.LENGTH_SHORT).show(); System.out.println("famele is checked"); }else if(malebutton.getid()==checkedid){ 102

39 Toast.makeText(ActivityTest.this," 性别是男 ", Toast.LENGTH_SHORT).show(); System.out.println("male is checked");}} }); 实现结果如图 5-1 所示 图 5-1 单选按钮和单选钮组 (7)ListView 列表在 main.xml 中定义 ListView <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawselectorontop="false" android:scrollbars="vertical"/> 另外还需要一个布局文件, 用于定义 ListView 中显示内容的格式 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" 103

40 android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:paddingleft="10dip" android:paddingtop="10dip" android:paddingright="10dip"> <TextView android:layout_width="250dip" android:layout_height="wrap_content" android:singleline="true" android:textsize="10pt" android:gravity="left"/> <TextView android:layout_width="250dip" android:layout_height="wrap_content" android:singleline="true" android:textsize="10pt" android:gravity="right"/> </LinearLayout> 在代码中的使用如下 ( 注意 : 我们所定义的 Activity 要继承 ListActivity, 它是 Activity 的子类 ): ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); HashMap<String, String> map1 = new HashMap<String, String>(); HashMap<String, String> map2 = new HashMap<String, String>(); HashMap<String, String> map3 = new HashMap<String, String>(); map1.put("user_name", " 张三 "); map1.put("user_ip", " "); 104

41 map2.put("user_name", " 李四 "); map2.put("user_ip", " "); map3.put("user_name", " 王五 "); map3.put("user_ip", " "); list.add(map1); list.add(map2); list.add(map3); ListView listview=getlistview(); registerforcontextmenu(listview); //public SimpleAdapter (Context context, List<? extends Map<String,?>> data, int resource, String[] from, int[] to) //1. 上下文 //2. 为 ListView 提供数据 //3. 用来设置条目样式的布局文件 //4. 制定条目数据的 key //5. 制定条目数据现实的控件 ID SimpleAdapter listadapter = new SimpleAdapter(this, list, R.layout.user, new String[]{"user_name","user_ip"}, new int[]{r.id.user_name,r.id.user_ip}); // 将 SimpleAdapter 设置给当前的 ListActivity setlistadapter(listadapter);} Public void oncreatecontextmenu(contextmenu menu,view v,contextmenuinfo menuinfo){ menu.setheadertitle(" 选项 "); menu.add(0, 1, 1, " 删除 "); menu.add(0, 2, 3, " 编辑 "); super.oncreatecontextmenu(menu, v, menuinfo);} // public boolean oncontextitemselected(menuitem item){ return true;} 105

42 @Override protected void onlistitemclick(listview l, View v, int position, long id) { // TODO Auto-generated method stub super.onlistitemclick(l, v, position, id); System.out.println("id "+id); System.out.println("position "+position); } 实验结果如图 5-2 所示 图 5-2 列表 (ListView) (9)ProgressBar 进度条 <ProgressBar android:id="@+id/firstbar" style="?android:attr/progressbarstylehorizontal" android:layout_width="200dp" android:layout_height="wrap_content" android:visibility="gone" /> <ProgressBar android:id="@+id/secondbar" style="?android:attr/progressbarstyle" android:layout_width="wrap_content" android:layout_height="wrap_content" 106

43 android:visibility="gone" /> private ProgressBar firstbar =null; private ProgressBar secondbar = null; private Button mybutton = null; private int i = 0 public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // 根据控件的 ID 来取得代表控件的对象 firstbar = (ProgressBar)findViewById(R.id.firstBar); secondbar = (ProgressBar)findViewById(R.id.secondBar); mybutton = (Button)findViewById(R.id.myButton); mybutton.setonclicklistener(new ButtonListener()); } class ButtonListener implements OnClickListener{ public void onclick(view v) { if(i == 0) { // 设置进度条处于可见的状态 firstbar.setvisibility(view.visible); firstbar.setmax(150); secondbar.setvisibility(view.visible); } else if ( i < firstbar.getmax()){ // 设置主进度条的当前值 firstbar.setprogress(i); 107

44 // 设置第二进度条的当前值 firstbar.setsecondaryprogress(i + 10); // 因为默认的进度条无法显示进行的状态 //secondbar.setprogress(i); } else{ // 设置进度条处于不可见状态 firstbar.setvisibility(view.gone); secondbar.setvisibility(view.gone); } i = i + 10 ; } } 实验结果如图 5-3 所示 图 5-3 进度条 (ProgressBar) (9)TimePicker 时间选择控件 public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); 108

45 setcontentview(r.layout.main); Button showtimebutton = (Button)findViewById(R.id.myButton); showtimebutton.setonclicklistener(new OnClickListener() { public void onclick(view v) { // TODO Auto-generated method stub showdialog(time_picker_id); } }); protected Dialog oncreatedialog(int id) { // TODO Auto-generated method stub switch(id){ case TIME_PICKER_ID: TimePickerDialog timepickerdialog=new TimePickerDialog(this, new ontimesetlistener(), 17, 21, false); return timepickerdialog; } return null; } //TimePickerDialog.OnTimeSetListener 是一个接口, 正因为后面复写了方法才能直接 new class ontimesetlistener implements TimePickerDialog.OnTimeSetListener{ public void ontimeset(timepicker view, int hourofday, int minute) { // TODO Auto-generated method stub System.out.println(" 时间是 "+hourofday+":"+minute); } } 实验结果如图 5-4 所示 109

46 图 5-4 时间选择控件 (TimePicker) (10)DatePicker 日期选择控件 public class DatePickerDialogActivity extends Activity { /** Called when the activity is first created. */ private Button showdatepickerbutton; // 该常量用于标识 DatePickerDialog private static final int public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); showdatepickerbutton=(button)findviewbyid(r.id.showdatepickerbutton); // 监听器, 用户监听用户点下 DatePikerDialog 的 set 按钮时, 所设置的年月日 showdatepickerbutton.setonclicklistener(new OnClickListener() { public void onclick(view v) { // TODO Auto-generated method stub // 此方法用于显示 DatePickerDialog 110

47 showdialog(date_picker_id); } }); // 当创建一个 Dialog 时, 就会调用 oncreatedialog 这个方法 protected Dialog oncreatedialog(int id) { // TODO Auto-generated method stub switch(id){ case DATE_PICKER_ID: // 构造函数 DatePickerDialog (Context context, DatePickerDialog.OnDateSetListener callback, int year, int monthofyear, int dayofmonth) // 第一个参数 :Dialog 运行的上下文 // 监听器用来通知日期已经设置好 //Dialog 的初始年 月 日 return new DatePickerDialog(this, OnDateSetListener, 2012, 3, 11); } return null; } // 监听器, 用于监听用户设置完年 月 日之后点下 DatePickerDialog 的 set 按钮时, 就会触发 OnDateSetListener() 里的方法 DatePickerDialog.OnDateSetListener OnDateSetListener=new DatePickerDialog.OnDateSetListener(){ // 当用户点下 set 是就会调用这个函数 // 月份是从 0 到 11, 日期从 1 开始 public void ondateset(datepicker view, int year, int monthofyear, int dayofmonth) { // TODO Auto-generated method stub System.out.println(year+"--"+monthOfYear+"--"+dayOfMonth); 111

48 } };} 实验结果如图 5-5 所示 图 5-5 日期选择控件 (DatePicker) (11)SeekBar 可拖动的进度条 <SeekBar android:layout_width="fill_parent" android:layout_height="wrap_content"/> 代码 : seekbar.setonseekbarchangelistener(new OnSeekBarChangeListener() { public void onstoptrackingtouch(seekbar seekbar) { // TODO Auto-generated method stub //Get the progress bar's current level of progress. System.out.println("stop-->"+seekBar.getProgress());} public void onstarttrackingtouch(seekbar seekbar) { // TODO Auto-generated method stub System.out.println("start-->"+seekBar.getProgress());} public void onprogresschanged(seekbar seekbar, int progress, 112

49 boolean fromuser) { // TODO Auto-generated method stub System.out.println("progress-->"+progress);}}); 实验结果如图 5-6 所示 图 5-6 可拖动的进度条 (SeekBar) (12)RatingBar 评分条 <RatingBar android:id="@+id/ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numstars="5" android:stepsize="1.0"/> <!-- 注意宽度要正好包围内容, 设置星星的数目和步长大小 --> 代码 : ratingbar.setonratingbarchangelistener(new OnRatingBarChangeListener() { public void onratingchanged(ratingbar ratingbar, float rating, boolean fromuser) { // TODO Auto-generated method stub // rating:the number of stars filled 113

50 System.out.println("rating-->"+rating);} }); 实验结果如图 5-7 所示 图 5-7 评分条 (RatingBar) (13)Spinner 下拉列表 <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content"/> 还需要一个布局文件用于定义显示内容的格式 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 114

51 android:textsize="8pt"/> </LinearLayout> 代码 : Spinner spinner = (Spinner)findViewById(R.id.spinner); // 通过 createfromresource 方法创建一个 ArrayAdapter 对象 // 第一个参数是指上下文对象 // 第二个参数引用了在 strings.xml 当中定义的 String 数组 ( 用作数据源的数组 ID) // 第三个参数是用来指定 spinner 的样式, 是一个布局文件 ID, 该文件由 Android 系统提供, 也可以替换为自己定义的布局文件 List<String> list=new ArrayList<String>(); list.add(" 北京 "); list.add(" 上海 "); list.add(" 深圳 "); // 第一个参数是指上下文对象 // 第二个参数指定了下拉菜单中每一个条目的样式 ( 用作布局文件的源 ID, 在实例化 view 时使用 ) // 第三个参数指定了 textview 的 ID( 布局源里用于被填入的 TextView 的 ID) // 第四个参数为整个列表提供数据 ( 要显示在 ListView 中的对象 ) ArrayAdapter adapter=new ArrayAdapter(this, R.layout.item, R.id.textViewId, list); // 将 adapter 添加到 spinner 中 spinner.setadapter(adapter); spinner.setprompt(" 选择城市 "); // 为 spinner 对象绑定监听器, 这个监听器主要用来监听用户选择列表的动作 spinner.setonitemselectedlistener(new OnItemSelectedListener() { // 第一个参数 :The AdapterView where the selection happened // 第二个参数 :The view within the AdapterView that was clicked // 第三个参数 :The position of the view in the adapter 115

52 // 第四个参数 :The row id of the item that is selected // 当用户选定了一个条目时, 就会调用该方法 public void onitemselected(adapterview<?> adapterview, View view, int position, long id) { // TODO Auto-generated method stub //Gets the data associated with the specified position in the list. String selected=adapterview.getitematposition(position).tostring(); System.out.println(selected); } public void onnothingselected(adapterview<?> arg0) { // TODO Auto-generated method stub System.out.println("nothing is selected"); } }); 实验结果如图 5-8 所示 图 5-8 下拉列表 (Spinner) (14) 自动提示 <AutoCompleteTextView android:id="@+id/autocompletetextview" 116

53 android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:textsize="20dip" android:textcolor="#0000aa" android:completionthreshold="1"/> <!-- 上面这条语句用来设置在自动提示之前用户必须输入的字符数, 如果没有设置, 默认为 2--> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textsize="16dip" android:textcolor="#0000aa" android:padding="10dip"> </TextView> </LinearLayout> 代码 : private AutoCompleteTextView autocompletetextview; private static final String[] COUNTRIES={"China","India","Japan","South Korea","Thailand","Iran", "Turkey","Nepal","Iraq","Maldives","Malaysia","Philippines","Egypt","Kenya"," Nigeria ","South Africa","Madagascar", "Germany", "Poland", "France","Finland","Switzerland","Norway","England","Greece","Sweden","Ireland", "Spain","Italy","Brazil","America","Mexico","Canada","Honduras","Colombia","Aus 117

54 tralia","newzealand","russia","argentina","netherlands","sahara","poland"}; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // 通过 ID 得到 AutoCompleteTextView 对象 autocompletetextview = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView); // 创建一个 list, 为 ArrayAdapter 提供数据 List <String> list=new ArrayList<String>(); list.add("abab"); list.add("abcd"); list.add("bcd"); // 创建一个 ArrayAdapter 对象 ArrayAdapter arrayadapter=new ArrayAdapter(this, R.layout.item, list); // 将 ArrayAdapter 设置给 AutoCompleteTextView 对象 autocompletetextview.setadapter(arrayadapter); } 实验结果如图 5-9 所示 118

55 图 5-9 自动提示 (AutoCompleteTextView) // 或者创建一个 ArrayAdapter 对象 ( 使用字符串数组为 arrayadapter 提供数据 ) ArrayAdapter arrayadapter=new ArrayAdapter(this, R.layout.item, COUNTRIES); 实验 6 Android 常用布局 6.1 实验目的 掌握 Android 常用布局的常用属性和使用方法 6.2 实验内容 测试 Android 常用布局使用方法 6.3 实验原理 常用布局有 : 表格布局 线性布局, 相对布局 1) 表格布局 (Table Layout) 的布局方式和 HTML 语言的 <table> 标签和 <tr> 标签非常类似 <TableLayout> 定义整个表格, 表格可以有多行, 并且每一行可以有多个组件, 但是每一行的组件内部可以像 HTML 语言一样可以再设定行, 119

56 需要的话, 可以采用嵌套布局方式, 再加入一个窗体布局 <TableRow> 定义表格内的组件, 这些组件可以设置为某一类的创作套件 Widget 或保持空的状态, 比如 TextView EditView Button 等 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchcolumns="1"> <TableRow > <TextView android:text="1-1" android:textsize="10pt" android:background="#aa0000"/> <TextView android:textsize="10pt" android:text="1-2" android:background="#00aa00"/> <TextView android:textsize="10pt" android:text="1-3" android:background="#aa0000"/> </TableRow> <TableRow > <TextView android:textsize="10pt" android:text="2-1" android:background="#0000aa"/> <TextView android:textsize="10pt" android:text="2-2" 120

57 android:background="#aa0000"/> </TableRow> </TableLayout> 实验结果如图 6-1 所示 图 6-1 表格布局 (Table Layout) 2) 线性布局 (Linear Layout) 的布局方式是所有的单元都会排成一列, 可以是直排或横排, 当定义成直排时, 每一行只有一个单元, 从上而下依次排列 ; 如果是定义成横排时, 每一列只有一个单元, 从左到右依次排列 所以采用线性布局定义整个表格时, 要采用嵌套布局方式 在纵向的线性布局再加入数个横相关的线性布局, 横向的线性布局上可以加上数个组件, 如 TextView EditView Button 等 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/first" android:layout_width="fill_parent" 121

58 android:layout_height="wrap_content" android:textsize="10pt" android:background="#aa0000" android:paddingleft="80dip" android:paddingright="60dip" android:paddingtop="100dip" android:paddingbottom="1dip" android:singleline="true" android:layout_weight="2"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#00aa00" android:gravity="right" android:padding="5dip" android:singleline="true" android:layout_weight="1" android:textsize="15pt"/> </LinearLayout> 实验结果如图 6-2 所示 122

59 图 6-2 直排线性布局 线性布局中嵌套线性布局 : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="red" android:gravity="center_horizontal" android:background="#aa0000" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> 123

60 <TextView android:text="green" android:gravity="center_horizontal" android:background="#00aa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="blue" android:gravity="center_horizontal" android:background="#0000aa" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="yellow" android:gravity="center_horizontal" android:background="#aaaa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="row one" 124

61 android:textsize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row two" android:textsize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row three" android:textsize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row four" android:textsize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> </LinearLayout> 实验结果如图 6-3 所示 125

62 图 6-3 嵌套线性布局 线性布局中嵌套线性布局和表格布局 : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:layout_weight="1" > <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:text=" 张三 " android:gravity="center" android:layout_weight="1" android:background="#aa00aa"/> 126

63 <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:text=" 李四 " android:gravity="center" android:layout_weight="1" android:background="#00aaaa"/> <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:text=" 王五 " android:gravity="center" android:layout_weight="1" android:background="#aaaa00"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="1" > <TableLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TableRow> <TextView android:text="1-1" android:background="#aa0000" android:layout_weight="1"/> <TextView 127

64 android:text="1-2" android:background="#00aa00" android:layout_weight="1"/> <TextView android:text="1-3" android:background="#0000aa" android:layout_weight="1"/> </TableRow> <TableRow> <TextView android:text="2-1" android:background="#aaaa00" android:layout_weight="1"/> <TextView android:text="2-2" android:background="#aa00aa" android:layout_weight="1"/> <TextView android:text="2-3" android:background="#00aaaa" android:layout_weight="1"/> </TableRow> </TableLayout> </LinearLayout> </LinearLayout> 实验结果如图 6-4 所示 128

65 图 6-4 嵌套线性布局和表格布局 3) 相对布局 (Relative Layout) 的布局方式是设定单元与单元的上下左右关联, 至少要定义两个位置之间的关联, 比如第 2 单元式位于第 1 单元的右侧和下面, 第 5 单元式位于第 4 单元的左侧和第 3 单元的下面 相对布局可以定义的参数有上 ( layout_above ) 下 ( layout_below ) 左 ( layout_toleftof ) 右 (layout_torightof) 以及各种对齐方式等等 <?xml version="1.0" encoding="utf-8"?> <!-- android:layout_above 将该控件的底部至于给定 ID 的控件之上 android:layout_below 将该控件的顶部至于给定 ID 的控件之下 android:layout_toleftof 将该控件的右边缘和给定 ID 的控件的左边缘对齐 android:layout_torightof 将该控件的左边缘和给定 ID 的控件的右边缘对齐 android:layout_alignbaseline 该控件的 baseline 和给定 ID 的控件的 baseline 对齐 android:layout_alignbottom 将该控件的底部边缘与给定 ID 控件的底部边缘 android:layout_alignleft 将该控件的左边缘与给定 ID 控件的左边缘对齐 android:layout_alignright 将该控件的右边缘与给定 ID 控件的右边缘对齐 android:layout_aligntop 将给定控件的顶部边缘与给定 ID 控件的顶部对齐 android:alignparentbottom 如果该值为 true, 则将该控件的底部和父控件的底 129

66 部对齐 android:layout_alignparentleft 如果该值为 true, 则将该控件的左边与父控件的左边对齐 android:layout_alignparentright 如果该值为 true, 则将该控件的右边与父控件的右边对齐 android:layout_alignparenttop 如果该值为 true, 则将空间的顶部与父控件的顶部对齐 android:layout_centerhorizontal 如果值为真, 该控件将被至于水平方向的中央 android:layout_centerinparent 如果值为真, 该控件将被至于父控件水平方向和垂直方向的中央 android:layout_centervertical 如果值为真, 该控件将被至于垂直方向的中央 --> <RelativeLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10px" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" <Button 130

67 android:layout_width="70dip" android:layout_height="wrap_content" <Button android:layout_width="70dip" android:layout_height="wrap_content" android:layout_marginleft="15dip" android:layout_alignparentright="true" </RelativeLayout> 实验结果如图 6-5 所示 图 6-5 相对布局 (Relative Layout) 4) 绝对布局 (Absolute Layout) 的布局方式是设置所有的单元的 x/y 位置 (x/y coordinates), 采用绝对位置维持窗体上的单元位置会相对困难, 因为没有单元彼 131

68 此间的关联, 绝对布局是在 5 种窗体布局中, 比较不理想的布局方式 5) 框架布局 (Frame Layout) 是个非常简易的布局, 当建立一个框架布局时, 在显示窗体布局上是一个全空的黑色窗体, 可以在全空的窗体上加上一些党员, 比如照片文件 实验 7 Menu 菜单 7.1 实验目的 了解 Android 操作系统下 Menu 菜单的种类 ; 掌握 Android 操作系统下对选项菜单 上下文菜单 子菜单的规划 7.2 实验内容 编写程序实现对 Android 操作系统的菜单进行规划 7.3 实验原理 Menu 菜单对任何应用程序都是非常重要的,Menu 菜单提供了具有亲和力的人机交互接口, 用户可以容易的操作功能和设置相关的属性 Android 操作系统提供了非常简便的接口, 让开发人员可以很容易的使用这些接口来开发标准的菜单程序 Android 操作系统提供的 3 中 Menu 菜单 : 选项菜单 (Option Menu) 上下文菜单 (Context Menu) 子菜单 (Submenu) 选项菜单是主要菜单, 其主要方式有两种 : 图标菜单 (Icon Menu), 这个菜单显示在整体窗体的下面, 最多可以放置 6 个菜单项 不支持复选框 (CheckBox) 和单选按钮 (Radio Button); 扩展菜单 (Expanded Menu), 当图标菜单的项目超过 6 个时, 图标菜单只会放置 5 个菜单项, 第 6 个菜单项会跳到扩展菜单, 扩展菜单采用垂直排列方式放置包括第 6 菜单项在内的后面的所有菜单项目 上下文菜单是个浮动式列表菜单, 长时间的单击一个窗口时会跳出上下文菜单 132

69 子菜单是个浮动式列表菜单, 可以被选项菜单或者上下文菜单上的菜单项调用 那么如何规划这些菜单呢? 对于选项菜单, 当选项菜单第 1 次被打开时,Android 操作系统会调用 oncreatoptionmenu() 回调方法来建立选项菜单 利用 oncreatoptionmenu() 方法来建立每一个操作项目的方式有两种, 第 1 个方式是使用 add() 方法来完成, 如下 : public boolean oncreateoptionsmenu(menu menu) { // TODO Auto-generated method stub // 第一个参数表示给这个新增的菜单项分配一个分组号 ; // 第二个参数表示给这个新增的菜单项分配一个唯一标识 id; // 第三个参数为菜单项的序号 ; // 第四个参数为菜单项的标题 ; menu.add(0, 1, 1, R.string.exit); menu.add(0, 2, 2, R.string.about); return super.oncreateoptionsmenu(menu); } 另一种方式是定义选项菜单的 XML 文件内容, 有 3 个可以用的标签单元, <menu> <group> 和 <item>,<group> 和 <item> 是 <menu> 的子标签,<item> 是 <group> 的子标签,<item> 定义操作项目的属性 如下所示, 在 <item> 上设定每一个操作项目的 ID 和每一个操作项目上所实现的标题 (title) <menu xmlns:android=" <item anroid:id="@+id/about" android:title=" 关于 " /> <item anroid:id="@+id/exit" android:title=" 退出 " /> </menu> 这里要注意的一个地方是 : 菜单项的显示顺序是按代码中添加的顺序来的, 也就是说 Menu.add() 方法 只能在菜单的最后面新增一个菜单项 另外, 第一个参数的分组标识, 不会改变菜单项的显示顺序 133

70 创建一个上下文菜单的步骤 : 1. 覆盖 Activity 的 oncreatecontenxtmenu() 方法, 调用 Menu 的 add 方法添加菜单项 (MenuItem) 2. 覆盖 Activity 的 oncontextitemselected() 方法, 响应上下文菜单菜单项的单击事件 3. 调用 registerforcontextmenu() 方法, 为视图注册上下文菜单 registerforcontextmenu(textview); registerforcontextmenu(button); 对于上下文菜单, 当上下文菜单第 1 次被打开时,Android 操作系统会调用 oncreatcontextmenu() 回调方法来建立上下文菜单 利用 oncreatcontextmenu() 方法来建立每一个操作项目的方式有两种, 第 1 个方式是使用 add() 方法来完成, 如下 : public void oncreatecontextmenu(contextmenu menu,view v,contextmenuinfo menuinfo){ menu.setheadertitle(" 选项 "); menu.add(0, 1, 1, " 删除 "); menu.add(0, 2, 2, " 编辑 "); super.oncreatecontextmenu(menu, v, menuinfo); } 当然可以参照选项菜单中使用 XML 文件的方法来定义上下文菜单的 XML 文件内容 注意 :Android 的上下文菜单不支持图标或快捷键 对于子菜单, 先在选项菜单和上下文菜单上, 利用 addsubmenu() 方法加入子菜单的父项目, 然后在父项目使用 add() 方法定义许多子项目, 如下例建立两个父菜单 filemenu 和 editmenu,filemenu 父菜单定义 3 个子项目,editMenu 父菜单定义两个子项目 public boolean oncreateoptionsmenu(menu menu) { // TODO Auto-generated method stub SubMenu filemenu=menu.addsubmenu(0, 1, 1, "File"); filemenu.add(1, 11, 11, "new"); filemenu.add(1, 12, 12, "open"); 134

71 filemenu.add(1, 13, 13, "save"); SubMenu editmenu=menu.addsubmenu(0, 2, 2, "Edit"); editmenu.add(2, 21, 21, "undo"); editmenu.add(2, 22, 22, "redo"); return super.oncreateoptionsmenu(menu); } 7.4 实验步骤 1) 规划选项菜单, 编写工程 Menu01 2) 右键点击 Menu01 项目, 一次选择 Run As->Android Application 3) 进入相应的应用程序, 如图 7-1 所示 图 7-1 进入相应的应用程序 4) 按一下功能键, 就会出现选项菜单的菜单界面, 如图 7-2 所示 135

72 5) 点击 more, 如图 7-3 所示 图 7-2 选项菜单的菜单界面 图 7-3 点击 more 按钮后 PC 界面 6) 进入相应的菜单选项, 比如进入第 2 个菜单选项, 如图 7-4 所示 136

73 图 7-4 进入 Tuesday 界面 7) 根据步骤 1) 2) 编写 Menu02 工程, 并编译 依次选择 Run As ->Android Application, 进入相应的应用程序, 如图 7-5 所示 图 7-5 相应的运用程序 8) 长时间 ( 维持 2 秒以上 ) 单击 ListView 的任一条数据, 会跳出包含 5 个选 项的上下文菜单, 如图 7-6 所示 137

74 图 7-6 上下文菜单 其与个人计算机上单击鼠标右键的功能相类似, 会跳出一个选项菜单 当某一个视图 (View) 注册一个上下文菜单时, 长时间的单击一视图时, 会跳出一个浮动式上下文菜单 上下文菜单可注册在任何视图对象上, 但常会注册在列表字段上 9) 根据步骤 1) 2) 进入 SubMenuActivity 应用程序, 如图 7-7 所示 图 7-37 进入 SubMenuActivity 应用程序 10) 按一下功能键, 就会出现选项菜单的菜单界面, 如图 7-38 所示 138

75 图 7-8 选项菜单的菜单界面 11) 选择 File 菜单项进入如图 7-9 所示 图 7-9 File 菜单项 12) 在选择 File 菜单的子菜单项目, 如选择 open 选项打开如图 7-10 所示 139

76 图 7-10 进入 open 选项界面 实验 8 SQLite 8.1 实验目的 掌握 Android 操作系统下对 SQLite 关系型数据库实现增 删 改 查等 基本操作 ; 掌握使用 adb 访问 SQLite 的基本命令 8.2 实验内容 编写程序实现对 Android 操作系统的 SQLite 数据库进行创建数据库 更 新数据库 以及增 删 改 查的操作 8.3 实验原理 Android 操作系统采用标准 SQLite 数据库, 提供管理数据库相关的 API SQLite 数据库与常用 PostgresSQL 和 MySQL 一样, 是属于 RDBMS 的一种, 但不同的是,SQLite 数据库常用到的类有 4 种 :SQLiteOpenHelper, 负责创建与打开数据库和版本管理, 建立此类时, 同时需要建立 3 个回调 (Call Back) 方法, 140

77 分别是创建 (oncreat) 更新 (onupdate) 和打开 (onopen);sqlitedatabase 类管理数据库本体, 提供添加 (Insert) 更新 (Update) 删除 (Delete) 检索 (Query) 执行 SQL 指令和其他管理数据库的功能 ;SQLiteCursor, 表示当检索 (Query) 数据库时, 指示到查询结果的初始位置,ContentValues, 用来存储和保持表中的某行的相关数据, 提供添加 (Insert) 更新(Update) 和删除 (Delete) 功能 首先, 利用 SQLiteOpenHelper 类来创建与打开数据库, 建立此类时, 同时需要建立 3 个 Call Back 方法, 分别是创建 oncreat() 更新 onupdate() 和打开 onopen() 但是,SQLiteOpenHelper 类并没有实际上创建与打开数据库, 仅仅保持和数据接连的管道, 还需要在 SQLiteOpenHelper 类上调用 getwriteabledatabase() 或 getreadabledatabase() 方法才会得到数据库 SQLiteOpen 类 8.4 实验步骤 1) 编写工程 SQLiteDemo, 并进行编译 2) 进入到对应的应用程序界面, 如图 8-1 所示 图 8-1 进入应用程序界面 3) 首先点击创建数据库按钮来创建数据库, 更新数据库按钮是用来更新数据库版本的, 此时可以用 cmd 命令行来查看是否创建成功 实验结果如图 8-2 所示 141

78 图 8-2 创建数据库 此时已经建立了数据库 user_db 和数据库中的表 user 4) 在两个可编辑文本框内分别输入用户 id( 限定只能输入整数 ) 和用户名 ( 限定为 20 个字符长度 ), 并且 id 号作为关键字不能为空, 当用户 id 为空时, 给出提示 实验结果如图 8-3 所示 图 8-3 输入用户名和 ID 5) 点击插入按钮, 实验结果如图 8-4 所示 142

79 图 8-4 插入数据 使用 adb 命令查看表中的数据, 实验结果如图 8-5 所示 图 7-5 查看表中数据 6) 由于用户 id 作为关键字, 所以设定为不能输入重复 id 号的数据 实验结 果如图 8-6 所示 图 8-6 ID 数据重复 7) 点击更新按钮就会把表中此 id 号的数据进行更新, 将用户名改为文本编辑 143

80 框内输入的新用户名 实验结果如图 8-7 所示 图 8-7 更新 id 号内数据 8) 再插入另外 2 条数据, user_id=2, user_name=cccc; user_id=5, user_name=abcd, 实验代码如图 8-8 所示 图 8-8 插入更多数据 9) 点击查询一条数据按钮, 在对话框中输入要查询数据的 id 号, 点击确认 如果该 id 号存在于表中则将查询出的数据显示在蓝绿色文本框中, 如果表中不存在该 id 号, 则给出提示 实验结果如图 8-9 所示 144

81 图 8-9 查询 id 内数据 10) 点击删除一个 id 号数据按钮, 在对话框中输入要删除数据的 id 号, 点击确认 如果该 id 号存在于表中则将已经删除的的数据显示在蓝绿色文本框中, 如果表中不存在该 id 号, 则给出提示 实验结果如图 8-10 所示 145

82 图 8-10 删除 id 内数据 11) 点击查询所有数据按钮, 则将表中所有的数据查询出来并显示在文本框中 如图 8-11 所示 图 8-11 查询所有数据 12) 点解删除所有数据按钮, 则删除表中所有的数据 如图 8-12 所示, 已显 示没有数据 146

83 图 8-12 删除所有数据 13) 再点击查询所有数据按钮, 显示没有数据! 如图 8-13 所示 图 8-13 数据删除后查询数据 实验 9 ContentProvider 9.1 实验目的 掌握 Android 操作系统 ContentProvider 的基本概念 ; 147

84 掌握使用 ContentProvider 的实现方法 9.2 实验内容 编写工程 ContentProviderTest, 并进行数据插入 查询 删除等操作 9.3 实验原理 一般计算机所使用的操作系统大都会提供共享文件机制, 让应用程序彼此间可以存储和访问文件, 数据可以相互共享 Android 操作系统所采用的方法是不同的, 在 Android 操作系统中, 所有应用程序的数据和文件都是属于该应用程序所私有的 但是 Android 操作系统通过提供内容提供器 (Content Providers) 方法来公开数据, 可以公开数据到数据内容容器内, 其他应用程序经过授权可以读取 数据内容提供器的数据类型可以是图像 (Image) 音频(Audio) 视频(Video) 和个人通讯薄 (Personal Content Information) Content Providers 为存储和获取数据提供了统一的接口, 使得在不同的应用程序之间可以共享数据 调用 Content Providers 可以访问这些数据库, 而不用关心存储的细节 内容提供器是应用程序的一个可选的机制, 它提供标准语法来读取和写入数据 实现内容提供器和实现 SQLite 数据库有什么不同呢? 应用程序实现 SQLite 数据库时, 由应用程序直接和数据库接口, 所以在应用程序中需要实现 SQLite 的接口 db.oncreate() db.insert () db.update() db.delete() db.query() 和 db.close(), 而实现内容提供器时, 在应用程序和数据库之间要实现一个 Content Providers 程序, 这个 Content Providers 程序会直接和数据库接口, 此时应用程序需要实现和 Content Providers 程序接口的方法 建立内容提供器的实现, 要先完成以下 3 项工作 : 建立一个系统来存储数据, 大部分内容提供器 (Content Providers) 采用 Android 文件存储方法或以 SQLite 数据库来管理 ; 继承 ContentProvider 类来读取数据, 要读取数据的应用程序要通过 ContentResolver 和 Cursor 类来实现 ; 在要读取数据的应用程序的 AndroidManifest.XML 配置文件内声明一个公开的 URI 148

85 9.4 实验步骤 1) 编写工程 ContentProviderTest 2) 进入到对应的应用程序界面, 如图 9-1 所示 图 9-1 进入应用程序界面 3) 点击插入按钮, 即向表中插入一条数据, 实验结果如图 9-2 所示 图 9-2 插入数据 ccnu.edu.cp 即为我们此程序所在的包名 通过命令行的方式可以观察到, 点 149

86 击插入按钮之后, 多出了 databases 文件夹, 进入即为我们所创建的数据库 FirstProvider.db, 命令.schema 查看数据库中的表, 其中 users 即为我们所创建的 表名 若再点击插入按钮, 可以在插入一条数据,id 为自增长, 如图 9-3 所示 图 7-56 再次插入数据,id 自增长 4) 点击查询按钮, 后台输入查询信息 实验 10 Service 10.1 实验目的 了解 Android 系统下 Service 的基本含义 ; 掌握 Android 系统下 Service 的使用方法 ; 10.2 实验内容 编写程序实现创建 启动 停止及绑定一个 Service 10.3 实验原理 Service 是 Android 系统提供的四种组件之一, 它的地位和 Activity 是并列的, 只不过没有 Activity 的使用频率高 顾名思义 Service 就是运行在后台的一种服务程序, 一般很少和用户交互, 因此没有可视化界面 创建一个 Service 类比较简单, 只要定义一个类继承 Service, 覆盖该类中相应的方法就可以了 Service 中定义了一系列和自身生命周期相关的方法, 这些方法有 : onbind(intent intent): 是必须实现的一个方法, 返回一个绑定的接口给 Service; oncreat(): 当 Service 第一次被创建时, 由系统调用 ; 150

87 onstart(intent intent,int startid): 当通过 startservice() 方法启动 Service 时, 该方法被调用 ; ondestroy(): 当 Service 不再使用时, 系统调用该方法 一旦定义好一个 Service, 就可以在其他组件中启动该 Service 来使用它了 启动一个 Service 使用 Context.startService(Intent intent) 方法, 你会发现这和启动一个 Activity 非常相似, 也是传递一个 Intent 对象 当我们调用 startservice() 方法时, 被调用的 Service 会调用它的 oncreat() 方法 ( 如果该 Service 还未创建 ), 接着调用 onstart() 方法 一旦 Service 启动后将一直运行直到调用了 Context.stopService() 或者 stopself() 我们可以调用 startservice() 方法来启动一个 Service 方法, 也可以通过 bindservice() 方法来绑定一个 Service 和调用 startservice() 方法一样,Service 会调用 oncreat() 方法来创建 Service( 如果它还未创建 ), 但是它不会调用 onstart () 方法而是调用 onbind() 返回客户端一个 IBinder 接口 绑定 Service 一般使用在远程 Service 调用 绑定 Service 需要三个参数 :bindservice(intent intent,serviceconnection conn, Service.BIND_AUTO_CREATE); 其中第二个参数是 ServiceConnection, 我们创建该对象实现其 onserviceconnected() 和 onservicedisconnected() 来判断连接成功或断开连接 ; 第三个参数是如何创建 Service, 一般指定绑定时自动创建 10.4 实验步骤 1) 编程工程 ServiceTest, 并进行编译 2) 进入到相应的应用程序中, 界面如图 10-1 所示 151

88 图 10-1 ServiceTest 界面 3) 点击 启动 Service 按钮, 通过 startservice(intent) 语句, 启动 Service, 后台输出信息, 如图 10-2 所示 图 10-2 启动 Service, 后台输出信息 点击 停止 Service 按钮, 通过 stopservice(intent) 语句, 后台输出信息 如图 10-3 所示 图 10-3 停止 Service, 后台输出信息 4) 点击 绑定 Service 按钮, 后台输出信息, 如图 10-4 所示 图 10-4 绑定 Service, 后台输出信息 5) 点击 解除绑定 按钮, 后台输出信息, 如图 10-5 所示 图 10-5 解除绑定, 后台输出信息 实验 11 广播事件处理 Broadcast Receiver 152

89 11.1 实验目的 掌握 Android 系统下如何自定义 Broadcast Receiver 来处理广播事件 ; 掌握 Android 系统下系统广播事件的使用 ; 掌握 Android 系统下 Notification 和 NotificationManager 的使用 ; 11.2 实验内容 编写程序掌握 BroadCast Receiver 的使用 11.3 实验原理 1. Broadcast Receiver Broadcast Receiver 顾名思义是指广播接收器, 他和事件处理机制类似, 只不过事件处理机制是程序组件级别的 ( 例如, 某个按钮的点击事件 ), 而广播事件处理机制是系统级别的 我们可以使用 Intent 来启动一个程序组件, 我们还可以通过使用 sendbroadcast() 方法来发起一个系统级别的时间广播来传递消息 然后在我们的应用程序中实现 Broadcast Receiver 来监听和响应这些广播的 Intent 事件的广播比较简单, 同样还是构建 Intent 对象, 然后调用 sendbroadcast() 方法将广播发出 事件的接受是通过定义一个继承 BroadcastReceiver 的类来实现的, 继承该类后覆盖其 onreceive() 方法, 在该方法中响应事件 Android 系统中定义了很多标准的 Broadcast Action 来响应系统广播事件 这些广播是系统自动发出的, 我们直接定义事件接收器进行接收就可以使用这些系统消息了, 常见的标准 Action 常量如表 7-7 所示 下面我们通过实例来看看如何接受系统发出的广播, 本实例我们通过接收系统启动完成 (ACTION_BOOT_COMPLETED) 广播来测试系统广播时间 接收系统发的广播, 我们不需要自己载定义发出广播的 Intent, 只需要定义接收器就可以了 实例步骤说明如下 创建一个 MyReceiver 类, 该类继承 BroadcastReceiver,fugai onreceive() 显示系统启动完成广播信息 package ccnu.edu.bc; 153

90 import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.util.log; public class MyReceiver extends public void onreceive(context context, Intent intent) { // 显示广播信息 Log.i("my_tag", "BOOT_COMPLETED~~~~~~~~~~~~~~~~"); System.out.println("BOOT_COMPLETED~~~~~~~~~~~~~~~~");}} 表 7-7 常见的标准 Action 常量 常量名称常量值意义 ACTION_BOOT_COMPL ETED ACTION_TIME_CHANG ED ACTION_DATA_CHANG ED ACTION_TIMEZONE_C HANGED ACTION_BATTERY_LO W ACTION_MEDIA_EJECT ACTION_MEDIA_BUTT ON ACTION_PACKAGE_AD DED android.intent.action. BOOT_COMPLETED android.intent.action. ACTION_TIME_CHANGED android.intent.action. ACTION_DATA_CHANGED android.intent.action. ACTION_TIMEZONE_CHANGED android.intent.action. ACTION_BATTERY_LOW android.intent.action. ACTION_MEDIA_EJECT android.intent.action. ACTION_MEDIA_BUTTON android.intent.action. ACTION_PACKAGE_ADDED 系统启动完成时间改变日期改变时区改变电量低插入或拔出外部媒体按下媒体按钮添加包 ACTION_PACKAGE_RE android.intent.action. 删除包 154

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 系 统 下 Java 编 程 详 解 作 者 : 华 清 远 见 第 1 章 Android 基 本 概 念 本 章 简 介 本 章 主 要 介 绍 Android 基 本 概 念 方 面 的 内 容, 包 括 Android 平 台 特 性 Android 系 统 架 构 Android 开 发 框 架 和 Android 开 发 环 境 搭 建 1.1 Android 简 介 Android

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

建模与图形思考

建模与图形思考 F06_c 观摩 :ContentProvider 基於軟硬整合觀點 架构與 DB 引擎移植方法 ( c) By 高煥堂 4 通用性基类 ContentProvider 基於軟硬整合觀點 的使用范例 刚才的范例里, 我们直接使用 DataPersist 类的接口来与 SQLite 沟通 本节将替 DataPersist 配上 ContentProvider 基类, 让 Client 能透过 ContentProvider

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 多个用户界面的程序设计 3.1 页面的切换与传递参数值 3.1.1 传递参数组件 Intent Intent 是 Android 系统的一种运行时的绑定机制, 在应用程序运行时连接两个不同组件 在 Android 的应用程序中不管是页面切换还是传递数据或是调用外部程序都可能要用到 Intent Intent 负责对应用中某次操作的动作 动作涉及的数据 附加数据进行描述, Android

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1 科 技 部 自 由 軟 體 專 案 原 始 程 式 碼 使 用 手 冊 Source Code Manual of NSC Open Source Project 可 信 賴 的 App 安 全 應 用 框 架 -App 應 用 服 務 可 移 轉 性 驗 證 Trusted App Framework -Transferability Verification on App MOST 102-2218-E-011-012

More information

The Embedded computing platform

The Embedded computing platform Android User Interfaces Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.tw Basic control components Text components TextView EditText Button compoents

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

Chapter 4

Chapter 4 Chapter 4 手機控制項應用 元件佈局 線性佈局共有兩個方向 : 垂直 (vertical) 水帄 (horizontal) 決定垂直或是水帄的屬性為 Orientation android:orientation="vertical" 線性佈局就是將在 < LinearLayout > 內的元件以線性的方式來呈現

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年秋北京 Android是什么 Android不仅仅是一个操作系统 它更是一个完整的软件框 架 Android基于Linux内核 2005年Google公司收购了Android公司 Google公司选择使用Apache许可证开放Android源码

More information

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

Microsoft Word - ASM SDK 說明文件

Microsoft Word - ASM SDK 說明文件 System Monitor SDK (for Android) 開發者指南說明書 1. 技術項目簡介 經由簡化的應用程式介面 (Application Programming Interface), 可 提供給 Android 應用程式開發者開發基於 System monitor 的應用程式 2. 應用範圍說明 本技術可應用於具備 Android 系統 2.3.3 以上版本的 Android 嵌入式裝

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

WinMDI 28

WinMDI 28 WinMDI WinMDI 2 Region Gate Marker Quadrant Excel FACScan IBM-PC MO WinMDI WinMDI IBM-PC Dr. Joseph Trotter the Scripps Research Institute WinMDI HP PC WinMDI WinMDI PC MS WORD, PowerPoint, Excel, LOTUS

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 章.1 Android UI 基本概念 用户界面 (User Interface,UI) 是用户与设备之间进行信息交流的直接媒介, 是决定用户体验最重要的部分 相比于早期的计算机的主要交互界面 批处理界面和命令行界面, 现在更为流行的是更简单直接的用户图形界面 (Graphical User Interface, GUI) GUI 简单易用, 受众面广, 直接推动了个人计算机的发展 目前, 主流大众的操作系统都采用了

More information

實作SQLiteOpenHelper類別

實作SQLiteOpenHelper類別 SQLiteOpenHelper 類別存取 SQLite 建國科技大學資管系 饒瑞佶 2013/5 V1 Android 連結資料庫 MySQL SQL Server Web Service 遠端資料庫 Internet Intranet Android SQLite 單機資料庫 Android vs. SQLite 透過 SQLiteOpenHelper 類別來操作 建立資料庫 ( 建構子 ) 建立資料表

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

单击以编辑母片 Content 标题样式 LinearLayout 排版模式 TableLayout 排版模式 RelativeLayout 排版模式 AbsoluteLayout 排版模式 FrameLayout 排版模式 GridLayout 排版模式 TabWidget 切換卡 Lab 5 2

单击以编辑母片 Content 标题样式 LinearLayout 排版模式 TableLayout 排版模式 RelativeLayout 排版模式 AbsoluteLayout 排版模式 FrameLayout 排版模式 GridLayout 排版模式 TabWidget 切換卡 Lab 5 2 单击以编辑母片标题样式 安卓系统 Android 的排版 授课老师 : 谢兆贤 2016/4/18 1 单击以编辑母片 Content 标题样式 LinearLayout 排版模式 TableLayout 排版模式 RelativeLayout 排版模式 AbsoluteLayout 排版模式 FrameLayout 排版模式 GridLayout 排版模式 TabWidget 切換卡 Lab 5

More information

可 Web 编程的NativeUI 设计与实现

可 Web 编程的NativeUI  设计与实现 可 Web 编程的 NativeUI 设计与实现 张袁炜 zhangyuanwei@baidu.com 欢迎转岗简历请发 About Me @ 张袁炜 直达号 网址导航 百度 音乐 前端 Node.js Android Arduino RaspberryPI https://github.com/zhangyuanwei Outline 一个 Hybrid App 的进化史 Native UI 实现原理

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式]

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式] 手 机 应 用 平 台 软 件 开 发 3 开 发 入 门 刘 宁 Email:liuning2@mail.sysu.edu.cn 课 程 简 介 课 程 目 标 Android 开 发 准 备 工 作 开 发 包 及 工 具 安 装 创 建 HelloWorld Android 程 序 设 计 基 础 创 意 移 动 应 用 创 意 移 动 应 用 创 意 移 动 应 用 创 意 移 动 应 用

More information

untitled

untitled 2006 6 Geoframe Geoframe 4.0.3 Geoframe 1.2 1 Project Manager Project Management Create a new project Create a new project ( ) OK storage setting OK (Create charisma project extension) NO OK 2 Edit project

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

基于Cortex-A8 Android&Linux系统与应用开发

基于Cortex-A8 Android&Linux系统与应用开发 安 全 提 示 非 常 感 谢 您 选 购 联 创 中 控 ( 北 京 ) 科 技 有 限 公 司 的 产 品, 在 首 先 打 开 包 装 箱 后 请 依 据 产 品 清 单 检 查 配 件, 若 发 现 产 品 主 配 件 有 损 坏 或 缺 失, 请 尽 快 与 您 的 经 销 商 或 技 术 支 持 联 络 产 品 使 用 前, 务 必 先 阅 读 本 手 册 实 验 平 台 须 使 用 配

More information

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android= 第 6 章广播接收者 应用案例 案例 6-1 CallRecord( 通话记录 ) 一 案例描述 1 考核知识点 030006001: 广播接收者简介 030006002: 广播接收者的创建 2 练习目标 广播的静态注册和使用 使用广播处理处理事件 3 需求分析手机最重要的功能就是通话功能, 同样储存通话记录也是必不可少的 该案例使用广 播接收者自己实现通话记录的功能 包括呼出电话 已接来电 未接来电以及通话产生的

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

03 开发入门.key

03 开发入门.key #3 手机应用开发入门 刘宁 Email:liuning2@mail.sysu.edu.cn 大纲» Android 基本概念» 开发包及 工具安装» 创建 HelloWorld» Android 程序设计基础 2 Android 开发基本概念» Activities» Intents» 视图与控件 ( 界 面元素 )» 异步调 用 ( 多线程 支持 )» 后台服务 3 Activities Android

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

untitled

untitled 1 Access 料 (1) 立 料 [] [] [ 料 ] 立 料 Access 料 (2) 料 [ 立 料 ] Access 料 (3) 料 料 料 料 料 料 欄 ADO.NET ADO.NET.NET Framework 類 來 料 料 料 料 料 Ex MSSQL Access Excel XML ADO.NET 連 .NET 料.NET 料 料來 類.NET Data Provider

More information

上海市教育委员会文件

上海市教育委员会文件 上 海 高 校 市 级 精 品 课 程 申 报 表 ( 2016 年 度 ) 学 校 名 称 上 海 师 范 大 学 课 程 名 称 Android 应 用 程 序 设 计 课 程 类 型 理 论 课 ( 不 含 实 践 ) 理 论 课 ( 含 实 践 ) 实 验 ( 践 ) 课 所 属 院 系 教 研 室 信 息 与 机 电 学 院 计 算 机 科 学 与 技 术 系 课 程 负 责 人 李 鲁

More information

Microsoft PowerPoint - chapter05.ppt

Microsoft PowerPoint - chapter05.ppt 第 5 章 Android 用户界面 本章学习目标 了解用户界面基础知识 掌握几个常用界面控件使用方法 掌握界面布局基本方法 掌握菜单设计基本方法 了解 Android 界面框架调用界面控件的事件处理函数对事件进行处理的方法 Android UI 组件概述 应用程序的好坏, 主要有三个元素决定 界面 功能 性能 界面给用户的第一感觉至关重要 UI 的设计与控制是程序开发核心内容之一 Android

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

Microsoft Word - A201103-528_1299547322.doc

Microsoft Word - A201103-528_1299547322.doc 5 10 15 20 25 30 基 于 Android 平 台 的 人 机 交 互 的 研 究 与 实 现 郁 亚 男 ( 北 京 邮 电 大 学 软 件 学 院, 北 京 100876) 摘 要 : 随 着 计 算 的 发 展, 计 算 变 得 越 来 越 自 由, 在 资 源 使 用 方 面 也 越 来 越 灵 活 移 动 终 端 由 于 无 线 通 信 网 络 传 输 速 率 的 提 高,

More information

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID 58 2016. 14 * LireSolr LireSolr CEDD Ajax CSpace LireSolr CEDD Abstract In order to offer better image support services it is necessary to extend the image retrieval function of our institutional repository.

More information

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

PPBSalesDB.doc

PPBSalesDB.doc Pocket PowerBuilder SalesDB Pocket PowerBuilder PDA Pocket PowerBuilder Mobile Solution Pocket PowerBuilder Pocket PowerBuilder C:\Program Files\Sybase\Pocket PowerBuilder 1.0 %PPB% ASA 8.0.2 ASA 9 ASA

More information

Microsoft Word - CX1000-HMI_程序开发_PLC通讯

Microsoft Word - CX1000-HMI_程序开发_PLC通讯 用 VB.Net 开发 CX1000 的 HMI 第二部分和 TwinCAT PLC 通讯 一 TwinCAT 动态库 TwinCAT.Ads.dll The TwinCAT.Ads.dll 是一个.NET 类库, 它提供和 ADS 设备通讯的类 如果 TwinCAT PLC 运行在 IPC 上, 则需要添加的类库是路径 \TwinCAT\ADS Api\.NET\v1.1.4322 下的 TwinCAT.Ads.dll

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 Android 控件进阶 要设计出让用户喜欢的 Android 应用程序界面, 除了需要用到在第 2 章讲的最基本的 TextView EditText 和 Button 控件外, 还要用到其他控件, 如 ImageButton 控件 ImageView 控件 RadioButton 控件 CheckBox 控件和 ListView 控件等 本章主要讲解功能强大 应用广泛的一些控件 3.1

More information

untitled

untitled 1 LinkButton LinkButton 連 Button Text Visible Click HyperLink HyperLink 來 立 連 Text ImageUrl ( ) NavigateUrl 連 Target 連 _blank _parent frameset _search _self 連 _top 例 sample2-a1 易 連 private void Page_Load(object

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

1

1 内 容 提 要 作 为 Google 开 发 的 全 新 开 源 手 机 平 台,Android 发 展 如 火 如 荼 本 书 通 过 大 量 代 码 秘 诀 全 面 详 尽 地 讲 述 了 Android 开 发 技 术 从 activity 和 intent 基 础 知 识 开 始, 到 线 程 服 务 broadcast receiver 以 及 alert 警 告 框, 再 到 用 户 界

More information

f2.eps

f2.eps 前 言, 目 录 产 品 概 况 1 SICAM PAS SICAM 电 力 自 动 化 系 统 配 置 和 使 用 说 明 配 置 2 操 作 3 实 时 数 据 4 人 机 界 面 5 SINAUT LSA 转 换 器 6 状 态 与 控 制 信 息 A 版 本 号 : 08.03.05 附 录, 索 引 安 全 标 识 由 于 对 设 备 的 特 殊 操 作 往 往 需 要 一 些 特 殊 的

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

Linux服务器构建与运维管理

Linux服务器构建与运维管理 1 Linux 服务器构建与运维管理 第 2 章 :Linux 基本命令 阮晓龙 13938213680 / rxl@hactcm.edu.cn http://linux.xg.hactcm.edu.cn http://www.51xueweb.cn 河南中医药大学管理科学与工程学科 2018.3 2 提纲 目录与文件的操作 mkdir touch mv cp rm rmdir file tree

More information

Java 1 Java String Date

Java 1 Java String Date JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth

More information

ASP.NET实现下拉框二级联动组件

ASP.NET实现下拉框二级联动组件 ASP.NET 实现下拉框二级联动组件 namespace WebApplicationDlh using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Db; / / Area 的摘要说明 /

More information

Microsoft PowerPoint - 04 界面编程.ppt [兼容模式]

Microsoft PowerPoint - 04 界面编程.ppt [兼容模式] 手机应用平台软件开发 4 界面编程 刘宁 Email:liuning2@mail.sysu.edu.cn UI 简介 UI(User Interface) 用户界面系统和用户之间进行交互和信息交换的媒介, 主要作用是实现信息内部形式与人类可接受形式之间的转换 人机交互实践中, 一个好的界面设计不仅让软件变得更加有个性和创意, 同时还能让软件的操作变得舒适 简单 自由, 充分体现软件的定位和特点 一个友好美观的界面会给人带来舒适的视觉享受,

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

Microsoft Word - Datastream5.1_使用說明201110

Microsoft Word - Datastream5.1_使用說明201110 Datastream 5.1 操 作 手 冊 政 大 圖 書 館 商 圖 分 館 編 製 2011.10 版 權 屬 於 國 立 政 治 大 學 圖 書 館. 請 勿 侵 權 1 目 錄 前 言 -------------------------------------------------------------2 第 壹 章 Datastream advanced -----------------------------------2

More information

幻灯片 1

幻灯片 1 Delivering accurate maps to Chinese Android users 为中国安卓用户提供准确的地图服务 Work at Mapbox includes: Android apps, demos, starter kits, documentation, support, syncing Android team with other departments, etc.

More information

使用Cassandra和Spark 2.0实现Rest API服务

使用Cassandra和Spark 2.0实现Rest API服务 使用 Cassandra 和 Spark 2.0 实现 Rest API 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

软件测试(TA07)第一学期考试

软件测试(TA07)第一学期考试 一 判 断 题 ( 每 题 1 分, 正 确 的, 错 误 的,20 道 ) 1. 软 件 测 试 按 照 测 试 过 程 分 类 为 黑 盒 白 盒 测 试 ( ) 2. 在 设 计 测 试 用 例 时, 应 包 括 合 理 的 输 入 条 件 和 不 合 理 的 输 入 条 件 ( ) 3. 集 成 测 试 计 划 在 需 求 分 析 阶 段 末 提 交 ( ) 4. 单 元 测 试 属 于 动

More information

附录J:Eclipse教程

附录J:Eclipse教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

Logitech Wireless Combo MK45 English

Logitech Wireless Combo MK45 English Logitech Wireless Combo MK45 Setup Guide Logitech Wireless Combo MK45 English................................................................................... 7..........................................

More information

Microsoft Word - Data IO CS Calculate Method AppNote.doc

Microsoft Word - Data IO CS Calculate Method AppNote.doc Data I/O Checksum Calculation Methods Application Note (Chinese translation follows this English text.) General Description and Scope This document describes common checksum calculation methods for devices

More information

目次 

目次  軟 體 工 程 期 末 報 告 網 路 麻 將 91703014 資 科 三 黃 偉 嘉 91703024 資 科 三 丘 祐 瑋 91703030 資 科 三 江 致 廣 1 目 次 壹 前 言 (Preface) P.4 貳 計 畫 簡 述 及 預 期 效 益 (Project Description and Expected Results) P.4 參 系 統 開 發 需 求 (System

More information

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer) 1/14 IBM Rational Test RealTime IBM, 2004 7 01 50% IBM Rational Test RealTime IBM Rational Test RealTime 1. 50% IBM Rational Test RealTime IBM Rational Test RealTime 2. IBM Rational Test RealTime Test

More information

Android + NFC

Android + NFC Android + NFC 建國科技大學資管系饒瑞佶 2017/3 v1 讀取 Tag UUID Android 2.3.3 (API Level 10) 才有支援完整的 NFC 功能 只要 NFC 相容都讀的到 (NFC 或 Mifare) 建立新專案修改 AndroidManifest.xml 加入 , 如果有 NFC Tag 進入感測範圍, 本 App 也會變成可處理的

More information

X713_CS_Book.book

X713_CS_Book.book / / /USB ) ; ; C D ; ; B B 1 >> 2 3 B 1 ( > > ) 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 GSM GPS ( ) 手机已连接到 GSM 网络 指示条越多, 接收质量越好 GPS 2 ...........................4.............................. 4 Micro SD (

More information

ebook111-4

ebook111-4 Flash 4 Flash 4 F l a s h 5 Flash 4 Flash Flash 4 Flash 4 Flash 4 4.1 Flash 4 Flash 4 Flash 4 Flash Flash 4 Flash 4 4.2 Flash 4 Flash 4 A Flash 4 S h i f t F i l e P r e f e r e n c e s > > Flash 4 Flash

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

untitled

untitled 1 .NET 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Response 類 Write 料 Redirect URL Response.Write("!! ives!!"); Response.Redirect("WebForm2.aspx"); (1) (2) Web Form

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

小应用 Magic8

小应用 Magic8 胡家威 计研135班 http://hujiaweibujidao.github.io/ 小应用 Magic8 Android 系统简介 Android 应用结构 Android 四大组件 Activity 生命周期 Android 资源管理 UI 组件和容器组件 内容概要 ( 上 ) Android 系统简介 Android 市场份额 Android 是如何诞生的? Android 之父 :Andy

More information

建立Android新專案

建立Android新專案 經濟部工業局 Android 智慧型手機程式設計實務應用班 Android WebService 建國科技大學資管系 饒瑞佶 2012/4 WebService 需要 ksoap2-android-assembly-2.5.2-jar-withdependencies.jar 或 ksoap2-android-assembly-2.5.2-jar-withdependencies_timeout1.jar

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

ebook

ebook 26 JBuilder RMI Java Remote Method Invocation R M I J a v a - - J a v a J a v J a v a J a v a J a v a R M I R M I ( m a r s h a l ) ( u n m a r c h a l ) C a ff e i n e J a v a j a v a 2 i i o p J a v

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

Microsoft Word - 苹果脚本跟我学.doc

Microsoft Word - 苹果脚本跟我学.doc AppleScript for Absolute Starters 2 2 3 0 5 1 6 2 10 3 I 13 4 15 5 17 6 list 20 7 record 27 8 II 32 9 34 10 36 11 44 12 46 13 51 14 handler 57 15 62 63 3 AppleScript AppleScript AppleScript AppleScript

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

untitled

untitled -JAVA 1. Java IDC 20 20% 5 2005 42.5 JAVA IDC JAVA 60% 70% JAVA 3 5 10 JAVA JAVA JAVA J2EE J2SE J2ME 70% JAVA JAVA 20 1 51 2. JAVA SUN JAVA J2EE J2EE 3. 1. CSTP CSTP 2 51 2. 3. CSTP IT CSTP IT IT CSTP

More information