智能终端软件设计及开发实验三.docx

上传人:b****5 文档编号:12377970 上传时间:2023-04-18 格式:DOCX 页数:24 大小:221.33KB
下载 相关 举报
智能终端软件设计及开发实验三.docx_第1页
第1页 / 共24页
智能终端软件设计及开发实验三.docx_第2页
第2页 / 共24页
智能终端软件设计及开发实验三.docx_第3页
第3页 / 共24页
智能终端软件设计及开发实验三.docx_第4页
第4页 / 共24页
智能终端软件设计及开发实验三.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

智能终端软件设计及开发实验三.docx

《智能终端软件设计及开发实验三.docx》由会员分享,可在线阅读,更多相关《智能终端软件设计及开发实验三.docx(24页珍藏版)》请在冰豆网上搜索。

智能终端软件设计及开发实验三.docx

智能终端软件设计及开发实验三

昆明理工大学信息工程与自动化学院学生实验报告

(2013—2014学年第1学期)

课程名称:

智能终端软件设计及开发开课实验室:

信自楼4442013年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界面控件及Actionbar界面组件实现Android的高级用户界面设计与开发:

编程实现“天气预报服务”软件的用户界面。

可以通过图片和文字显示当前和未来几天的天气状况,包括温度、湿度、风向和雨雪情况等。

包括三个选项卡页面:

天气预报、历史数据和系统设置。

 下面给出了用户界面的设计参考:

1.2实现一个选项菜单,当点击智能终端的“菜单键”时打开选项菜单,该选项菜单包含一个菜单项:

“退出”,实现该菜单项功能。

2.上机目的

(1)学习并熟悉Android的高级用户界面;

(2)能够使用Fragment界面控件、Actionbar界面组件及菜单进行高级用户界面设计与开发。

二、实验原理

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处于运行状态)。

 

添加Fragments

onAttach()

onCreate()

onCreateView()

onActivityCreated()

onStart()

onResume()

Fragments是活动的(正在使用)

Fragment从

返回堆栈中返回到布局文件

用户使用返回功能或Fragments被移除(替换)

Fragments被

添加到返回堆栈中,接着被移除(替换)

onPause()

onStop

onDestroyView()

onDestroy()

onDetach()

Fragments被销毁

2.1.3、派生类

DialogFragment

显示一个浮动的对话框。

使用这个类创建对话框是替代activity创建对话框的最佳选择.因为可以把fragmentdialog放入到activity的返回栈中,使用户能再返回到这个对话框。

ListFragment

显示一个列表控件,就像ListActivity类,它提供了很多管理列表的方法,比如onListItemClick()方法响应click事件。

PreferenceFragment

显示一个由Preference对象组成的列表,与PreferenceActivity相同。

它用于为程序创建“设置”activity。

2.2、Actionbar界面组件

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(Menumenu)

{

newMenuInflater(this).inflate(R.menu.menu,menu);

}

其中在menu.xml定义菜单选项。

可以通过设置属性android:

showAsAction="ifRoom|withText"来指定菜单选项出现在ActionBar的导航栏中。

当然也可以在代码中为ActionBaar动态添加选项。

示例代码如下:

@Override

publicbooleanonCreateOptionsMenu(Menumenu)

{

newMenuInflater(this).inflate(R.menu.menu,menu);

//动态添加选项

MenuItemactionItem=menu.add("新增选项的名字");

actioItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_WITH_TEXT);

actionItem.setIcon("...");

return(super.onCreateOptionsMenu(menu));

}

三、实验方法、步骤(或:

程序代码或操作过程)

Java代码:

packagecom.example.weathear;

importandroid.app.TabActivity;

importandroid.os.Bundle;

importandroid.widget.TabHost;

importandroid.view.LayoutInflater;

publicclassMainActivityextendsTabActivity{

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

TabHosttabHost=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.newTabSpec("TAB3")

.setIndicator("系统设置").setContent(R.id.weather3));

}

}

Xml界面代码:

android="

xmlns:

tools="

android:

layout_width="match_parent"

android:

layout_height="match_parent"

android:

paddingBottom="@dimen/activity_vertical_margin"

android:

paddingLeft="@dimen/activity_horizontal_margin"

android:

paddingRight="@dimen/activity_horizontal_margin"

android:

paddingTop="@dimen/activity_vertical_margin"

android:

id="@+id/weather1"

>

android:

id="@+id/textView1"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="@string/hello_world"/>

android:

id="@+id/textView2"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView1"

android:

layout_alignBottom="@+id/textView1"

android:

layout_centerHorizontal="true"

android:

text="xx"/>

android:

id="@+id/textView3"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignLeft="@+id/textView1"

android:

layout_below="@+id/textView1"

android:

layout_marginTop="16dp"

android:

text="Humidity:

"/>

android:

id="@+id/textView4"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView3"

android:

layout_alignBottom="@+id/textView3"

android:

layout_alignLeft="@+id/textView2"

android:

text="xx%"/>

android:

id="@+id/textView6"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView5"

android:

layout_alignBottom="@+id/textView5"

android:

layout_alignLeft="@+id/textView4"

android:

text="xx"/>

android:

id="@+id/textView7"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignLeft="@+id/textView5"

android:

layout_below="@+id/textView5"

android:

layout_marginTop="22dp"

android:

text="Time:

"/>

android:

id="@+id/textView8"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView7"

android:

layout_alignBottom="@+id/textView7"

android:

layout_alignLeft="@+id/textView6"

android:

text="2009-09-2006:

04:

00"/>

android:

id="@+id/textView5"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignLeft="@+id/textView3"

android:

layout_below="@+id/textView3"

android:

layout_marginTop="23dp"

android:

text="Wind:

"/>

android:

id="@+id/textView9"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignLeft="@+id/imageView1"

android:

layout_below="@+id/imageView1"

android:

text="CityName"/>

android:

id="@+id/imageView2"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignLeft="@+id/textView14"

android:

layout_below="@+id/textView10"

android:

layout_marginTop="22dp"

android:

src="@drawable/ic_launcher"/>

android:

id="@+id/textView10"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView11"

android:

layout_alignBottom="@+id/textView11"

android:

layout_alignRight="@+id/textView7"

android:

text="Won"/>

android:

id="@+id/imageView1"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignRight="@+id/textView6"

android:

layout_below="@+id/textView8"

android:

layout_marginTop="30dp"

android:

src="@drawable/ic_launcher"/>

android:

id="@+id/textView11"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView12"

android:

layout_alignBottom="@+id/textView12"

android:

layout_alignLeft="@+id/imageView3"

android:

text="Tue"/>

android:

id="@+id/textView12"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView13"

android:

layout_alignBottom="@+id/textView13"

android:

layout_toRightOf="@+id/textView4"

android:

text="Wen"/>

android:

id="@+id/imageView3"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignTop="@+id/imageView2"

android:

layout_toRightOf="@+id/textView1"

android:

src="@drawable/ic_launcher"/>

android:

id="@+id/textView15"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView14"

android:

layout_alignBottom="@+id/textView14"

android:

layout_alignLeft="@+id/imageView3"

android:

text="高/低"/>

android:

id="@+id/imageView4"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignTop="@+id/imageView3"

android:

layout_toRightOf="@+id/textView4"

android:

src="@drawable/ic_launcher"/>

android:

id="@+id/textView16"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignBaseline="@+id/textView15"

android:

layout_alignBottom="@+id/textView15"

android:

layout_toRightOf="@+id/textView9"

android:

text="高/低"/>

android:

id="@+id/textView

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1