智能终端软件设计及开发实验三.doc_第1页
智能终端软件设计及开发实验三.doc_第2页
智能终端软件设计及开发实验三.doc_第3页
智能终端软件设计及开发实验三.doc_第4页
智能终端软件设计及开发实验三.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

昆明理工大学信息工程与自动化学院学生实验报告( 2013 2014 学年 第 1 学期 )课程名称:智能终端软件设计及开发 开课实验室:信自楼444 2013 年11月 18日年级、专业、班计科101学号201010803116姓名李力成绩实验项目名称Android用户界面设计与开发2(高级界面)指导教师 游进国教师评语该同学是否了解实验原理:A.了解B.基本了解C.不了解该同学的实验能力:A.强 B.中等 C.差 该同学的实验是否达到要求:A.达到B.基本达到C.未达到实验报告是否规范:A.规范B.基本规范C.不规范实验过程是否详细记录:A.详细B.一般 C.没有 教师签名: 年 月 日一、上机目的及内容1.上机内容1.1使用Fragment界面控件及Action bar界面组件实现Android的高级用户界面设计与开发:编程实现“天气预报服务”软件的用户界面。可以通过图片和文字显示当前和未来几天的天气状况,包括温度、湿度、风向和雨雪情况等。包括三个选项卡页面:天气预报、历史数据和系统设置。 下面给出了用户界面的设计参考: 1.2 实现一个选项菜单,当点击智能终端的“菜单键”时打开选项菜单,该选项菜单包含一个菜单项:“退出”,实现该菜单项功能。2.上机目的(1)学习并熟悉Android的高级用户界面;(2)能够使用Fragment界面控件、Action bar界面组件及菜单进行高级用户界面设计与开发。二、实验原理2.1Fragment界面控件2.1.1、Fragment界面控件特性Fragment 是 activity 的界面中的一部分或一种行为。可以把多个 Fragment 组合到一个 activity 中来创建一 个多面界面并且可以在多个 activity 中重用一个 Fragment。可以把 Fragment 认为模块化的一段 activity,它具 有自己的生命周期,接收它自己的事件,并可以在 activity 运行时被添加或删除。Fragment 不能独立存在,它必须嵌入到 activity 中,而且 Fragment 的生命周期直接受所在的 activity 的影 响。例如:当 activity 暂停时,它拥有的所有的 Fragment 都暂停了,当 activity 销毁时,它拥有的所有 Fragment 都被销毁。然而,当 activity 运行时(在 onResume()之后,onPause()之前),可以单独地操作每个 Fragment, 比如添加或删除它们。当在执行上述针对 Fragment 的事务时,可以将事务添加到一个栈中,这个栈被 activity 管 理,栈中的每一条都是一个 Fragment 的一次事务。有了这个栈,就可以反向执行 Fragment 的事务,这样就可以在 Fragment 级支持“返回”键(向后导航)。当向 activity 中添加一个 Fragment 时,它须置于 ViewGroup 控件中,并且需定义 Fragment 自己的界面。可 以在 layoutxml 文件中声明 Fragment,元素为:;也可以在代码中创建 Fragment,然后把它加入到 ViewGroup 控件中。然而,Fragment 不一定非要放在 activity 的界面中,它可以隐藏在后台为 actvitiy 工作。2.1.2、 生命周期onCreate():当创建 fragment 时系统调用此方法。在其中必须初始化 fragment 的基础组件们。可参考 activity 的说明。 onCreateView():系统在 fragment 要画自己的界面时调用(在真正显示之前)此方法。这个方法必须返回 frament 的 layout 的根控 件。如果这个 fragment 不提供界面,那它应返回 null。onPause():大多数程序应最少对 fragment 实现这三个方法。当然还有其它几个回调方法可应该按情况实现之。所有的生命周 期回调函数在“操控 fragment 的生命周期”一节中有详细讨论。下图为 fragment 的生命周期(它所在的 activity 处于运行状态)。添加FragmentsonAttach()onCreate()onCreateView()onActivityCreated()onStart()onResume()Fragments是活动的(正在使 用)Fragment从返回堆栈中 返回到布局文件用户使用返 回功能或 Fragments 被移除 (替换)Fragments被添加到返回 堆栈中,接着 被移除(替换)onPause()onStoponDestroyView()onDestroy()onDetach()Fragments被销毁2.1.3 、派生类DialogFragment显示一个浮动的对话框。使用这个类创建对话框是替代 activity 创建对话框的最佳选择.因为可以把 fragmentdialog 放入到 activity 的返回栈中,使用户能再返回到这个对话框。ListFragment显示一个列表控件,就像 ListActivity 类,它提供了很多管理列表的方法,比如 onListItemClick()方法响应 click 事件。 PreferenceFragment显示一个由 Preference 对象组成的列表,与 PreferenceActivity 相同。它用于为程序创建“设置”activity。2.2、Action bar界面组件2.2.1、ActionBar内容:从左到右分别是:1、应用图标区:位于ActionBar的最左侧,显示当前应用的图标。这个图标也可以实现导航功能。当用户单击应用图标时,Activity的方法onOptionsItemSelected()将被触发,并传递一个名为android.R.id.home的ID作为参数。2、应用标题区:显示当前应用的标题3、导航区域:ActionBar可以方便的实现应用内部导航,它具有三种不同的导航模式,当ActionBar处于不同的导航模式时,将显示不同的导航控件,如Tab或者下拉列表等。4、动作按钮区:选项菜单中的部分选项将以图标按钮的形式直接显示出来,方便用户更加便捷的操作。5、菜单区:显示一个图标按钮,单击时,将弹出一个扩展菜单显示选项菜单中的其他内容。2.2.2、ActionBar主要功能1、直接显示选项菜单。这样就不需要用户通过单击按钮来显示选项菜单了。如果选项菜单中项目太多,将在一个下拉列表中显示。2、提供多种内部导航模式,包括标准模式、Tab模式和下拉列表等。3、提供交互式活动视图代替选项条目,如SearchView等。4、使用程序的图标作为返回Home主屏或向上的导航操作。与选项菜单一样,ActionBar作为Activity的一部分,可以调用Activity的方法getActionBar()来获取它的引用。2.2.3、显示选项菜单通过在onCreateOptionsMenu(Menu menu)new MenuInflater(this).inflate(R.menu.menu,menu);其中在menu.xml定义菜单选项。可以通过设置属性android:showAsAction=ifRoom|withText来指定菜单选项出现在ActionBar的导航栏中。当然也可以在代码中为ActionBaar动态添加选项。示例代码如下:Overridepublic boolean onCreateOptionsMenu(Menu menu)new MenuInflater(this).inflate(R.menu.menu,menu);/动态添加选项MenuItem actionItem=menu.add(新增选项的名字);actioItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_WITH_TEXT);actionItem.setIcon(.);return(super.onCreateOptionsMenu(menu);三、实验方法、步骤(或:程序代码或操作过程)Java代码:package com.example.weathear;import android.app.TabActivity;import android.os.Bundle;import android.widget.TabHost;import android.view.LayoutInflater;public class MainActivity extends TabActivity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); TabHost tabHost = getTabHost();LayoutInflater.from(this).inflate(R.layout.activity_main, tabHost.getTabContentView(),true);LayoutInflater.from(this).inflate(R.layout.activity_main1,tabHost.getTabContentView(),true);LayoutInflater.from(this).inflate(R.layout.activity_main2, tabHost.getTabContentView(),true);tabHost.addTab(tabHost.newTabSpec(TAB1).setIndicator(天气预报).setContent(R.id.weather1);tabHost.addTab(tabHost.newTabSpec(TAB2).setIndicator(历史数据).setContent(R.id.weather2);tabHost.addTab(tabHost.n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论