4 Android校园通软件的设计与实现
4.1 研究目标
(1)了解Android应用程序的设计和开发过程;
(2) 使用多种组件进行Android 平台校园资讯软件的开发。
本软件是基于Eclipse的开发环境,在Android平台上的手机校园资讯软件。
4.2 需求分析
本软件是Android平台的一个校园资讯程序,启动程序后查阅学校相关资讯包括在学校吃住娱乐风景等各方面的讯息。
从上面的描述中可以基本了解软件的功能需求:
(1) 首先是学校电影院每周电影的更新;
(2) 其次有学校的各种资料;
(3) 各种校园活动及周边娱乐设施的信息;
(4) 校园校景美图查看;
(5) 校园生活手册;
(6) 扩展内容“我的资料”,及“更多”两个Activity。
4.3 UI界面设计
根据需求分析可以知道,应用程序应包含五个主要的用户界面,这里需要进一步分析每个用户界面中应该包括哪些显示内容。
在首页中,需要对学校的大致情况做以介绍,并且有每周影讯的功能。在“分类”中,有各种学校的相关资料。包括娱乐,电影,纪录片,校景,公开课及生活。另外,还有扩展内容“我的资料”及“更多”两个选项卡如图4-1所示。
图4-1 用户界面草图
4.4 程序模块设计
从功能需求上分析可以看出,整个应用程序应划分为5个模块,分别是首页、分类、搜索、我的资料和扩展功能区。
首页介绍学校的一个总体情况,分类是整个软件的核心,其中包括了软件的各种主要功能,搜索是一个数据库搜索系统,我的资料是个人资料和数据的一个整合和提供了一些简单的小服务,更多则是后期的一些扩展功能。
在完成用户界面设计、数据库设计和模块设计后,至此程序设计阶段基本完成。
4.5 软件功能图
《校园通》软件
首页
分类
娱乐
影院信息
电影
纪录片
校景
查询
热门查询
更多
我的资料
我的课程
我的备忘
我的日程
我的分享
图4-2 软件功能图
4.6 文件结构与用途
在程序开发阶段,首先确定“Android平台校园通软件”的工程名为MySchool,据程序模块设计的内容,建立MySchool工程。MySchool工程源代码的结构如图5.1所示。
为了使源代码文件的结构更加清晰,MySchool工程设置了多个命名空间,分别用来保存用户界面、数据库和工具实体的源代码文件,源代码文件的名称以及说明。
图4-2 MySchool工程的源代码文件
包 名 称
说 明
com.hs.xyt
MainActivity.java
MainActivity所在
com.hs.xyt.account
AccountActivity.java
“我的资料”的Activity
com.hs.xyt.channel
ChannelActivity.java
“分类”的Activity
com.hs.xyt.home
HomeActivity.java
“主页”的Activity
com.hs.xyt.more
MoreActivity.java
“更多”的Activity
com.hs.xyt.search
SearchActivity.java
“搜索”的Activity
com.hs.xyt.widget
WidgetActivity.java
当前信息类
表4-1 MySchool工程的文件用途说明
Android的资源文件保存在/res的子目录中。其中、/res/anim目录中保存的是产生动画效果的XML文件,/res/drawable/目录中保存的是图像文件,/res/values目录中保存的是用来自定义字符串和颜色的文件,/res/xml目录中保存的是XML格式的数据文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表5.2:
资源目录
说 明
anim
Grallery_in.xml
图片进入效果
left_in.xml
画面转换位置移动动画效果(从左进入)
left_out.xml
画面转换位置移动动画效果(从左移出)
right_in.xml
画面转换位置移动动画效果(从右进入)
left_out.xml
画面转换位置移动动画效果(从右移出)
drawable
icon1.png
这个文件夹里是工程里所用的图片,此处不赘述。
icon2.png
icon3.png
……
layout
home.xml
“首页”的布局
channel.xml
“分类”的布局
search.xml
“搜索”的布局
…
还有很多的layout,不赘述
values
style.xml
保存样式的XML文件
strings.xml
保存字符串的XML的文件
drawbles.xml
AppWidget的属性文件
表4.2 资源文件名称与用途
4.7 程序主要代码
在介绍MySchool的核心代码前,首先了解一下MainActivity.java()。
(1) MainActivity.java的部分代码:
public static String TAB_TAG_HOME = “home”;
public static String TAB_TAG_CHANNEL = “channel”;
public static String TAB_TAG_ACCOUNT = “account”;
public static String TAB_TAG_SEARCH = “search”;
public static String TAB_TAB_MORE = “more”;
ImageView mBut1, mBut2, mBut3, mBut4, mBut5;
TextView mCateText1,mCateText2, mCateText3, mCateText4, mCateText5;
Intent mHomeItent, mChannelIntent, mSearchIntent, mAccountIntent,
mMoreIntent;
先声明了用到的组件。从代码中可以看出,MainActivity的主要功能就是软件的导航栏。
(2) ChannelActivity.java的部分代码:
private void findviews(){
fun =(Button)findViewById(R.id.channel_type_fun);
movie=(Button)findViewById(R.id.channel_type_movie);
record=(Button)findViewById(R.id.channel_type_record);
tourism=(Button)findViewById(R.id.channel_type_tourism);
publicity=(Button)findViewById(R.id.channel_type_publicity);
clips=(Button)findViewById(R.id.channel_type_clips);
}
private void setListensers() {
fun.setOnClickListener(clickfun);
movie.setOnClickListener(clickmovie);
record.setOnClickListener(clickrecord);
tourism.setOnClickListener(clicktourism);
publicity.setOnClickListener(clickpublicity);
clips.setOnClickListener(clickclips);
}
Private Button.OnClickListener clickfun=
new Button.OnClickListener(){
public void onClick(View v){
Intent funint = new Intent();
funint.setClass(ChannelActivity.this, FunActivity.class);startActivity(funint);
}
};
从代码中可以看出,WidgetEntity类中有fun,movie,record,tourism,publicity,clips这6个功能模块。而该页的功能就是作为这六个功能的实现也简单描述一下。
(3)FunActivity.java中的部分代码
ExpandableListView expandableList;
TreeViewAdapter adapter;
SuperTreeViewAdapter superAdapter;
Button btnNormal, btnSuper;
设置了二级菜单显示校内娱乐,三级菜单显示校外娱乐
expandableList.setAdapter(adapter);
expandableList.setOnChildClickListener(new OnChildClickListener()
{
@Override
public boolean onChildClick(ExpandableListView arg0, View arg1,
int parent, int children, long arg4)
{
String str = “欢迎各位同学积极参加” ;
Toast.makeText(FunActivity.this, str, 300).show();
return false;
}
});
用Toast做了友情小提示。以上是Toast(透明试弹出型提示框)的实现代码,其中包括了显示内容,显示类型及显示时间。
public static final int ItemHeight = 40;// 每项的高度
public static final int PaddingLeft = 30;// 每项的高度
private int myPaddingLeft = 0;// 如果是由SuperTreeView调用,则作为子项需要往右移
static public TextView getTextView(Context context)
{
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ItemHeight);
TextView textView = new TextView(context);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
return textView;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent)
{
TextView textView = getTextView(this.parentContext);
textView.setText(getChild(groupPosition, childPosition).toString());
textView.setPadding(myPaddingLeft + PaddingLeft, 0, 0, 0);
return textView;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent)
{
TextView textView = getTextView(this.parentContext);
textView.setText(getGroup(groupPosition).toString());
textView.setPadding(myPaddingLeft + (PaddingLeft >> 1), 0, 0, 0);
return textView;
}
二级菜单的具体代码。
菜单内容实现方式,数据继承位置的设定,及具体显示方式。
(4) TourismActivity.java中的部分代码。
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder viewHolder;
if (convertView == null)
{
convertView = inflater.inflate(R.layout.picture_item, null);
viewHolder = new ViewHolder();
viewHolder.title = (TextView) convertView.findViewById(R.id.title);
viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(viewHolder);
} else
{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.title.setText(pictures.get(position).getTitle());
viewHolder.image.setImageResource(pictures.get(position).getImageId());
return convertView;
}
}
使用gridView控件来实现图片的显示,并绑定一个textview来实现文字和图片成组显示。
4.8 用户界面
在用户界面设计上,采用了咨询软件框架结构,提供直观的交互操作。五个用户界面风格简约、操作简便,用户体验将非常好。
4.9 系统测试
至此已经完成了MySchool工程的代码编写工作,在这一节对MySchool工程进行测试,步骤及结果如下:
(1) 启动Android虚拟机
在工程名Myschool上点右键,然后选择“Run As”,然后选择“Android Application”。 Android虚拟机启动较慢。如下图所示:
(2) “分类”页功能演示
展开阅读全文
相关资源:MyQQ_v20120823(Java版高仿QQ聊天即时通软件)-Java代码类资源…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!