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) “分类”页功能演示

展开阅读全文

android校园通代码,Android校园通软件的设计与实现.doc相关推荐

  1. java gui论文_毕业设计论文-基于JAVA GUI的电子邮件客户端软件的设计与实现.doc

    毕业设计论文-基于JAVA GUI的电子邮件客户端软件的设计与实现.doc 还剩 41页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧, ...

  2. android小球移动代码,Android自定义圆形View实现小球跟随手指移动效果

    本文实例为大家分享了Android实现小球跟随手指移动效果的具体代码,供大家参考,具体内容如下 一. 需求功能 手指在屏幕上滑动,红色的小球始终跟随手指移动. 实现的思路: 1)自定义View,在on ...

  3. 基于android日历论文ppt,基于Android的日历提醒软件的设计与实现.doc

    摘要:本软件是一款基于Android开发平台的日历提醒软件,主要是通过现在比较流行的智能手机的软件设计方法,来进行一款提醒软件的设计. 本软件主要是针对学校进行应用,其中包括日历模块:方便用户进行日期 ...

  4. android增删功能代码,Android Studio开发实战 之 增删改查

    增删改查是一个应用最基础的操作,增删改查的流程走通了,下面的路程也就顺利多了.现在使用Android Studio开发一个简单的应用,该应用就实现了增删改查的操作,看似简单,到底简不简单呢,下面开始操 ...

  5. android调频收音机代码,android 收音机 FM 驱动 hal层 框架层以及应用层代码

    [实例简介] android 收音机 FM 驱动 hal层 框架层以及应用层代码 方法一 不需要framework部分 1.fm放到 \hardware\rk2x 2.FmRadio 放到 packa ...

  6. Android钢琴滑动代码,android 钢琴界面实现

    近在做一个钢琴的东西,关于这个界面如何设计画了很长时间,主要是考虑到针对不同的分辨率,如果只针对一种分辨率的话用绝对布局可以实现,实现的基本思想是每个白色的键的位置是可以计算出来的,屏幕的宽度可以获得 ...

  7. android确认密码代码,Android自定义View实现验证码or密码输入框

    前言 最近项目中有支付功能,用户输入密码时要类似微信支付密码输入框的样式,本想直接copy网上的,但设计姐姐总是对样式挑三拣四,抽空自己自定义了一个,无奈之下抽空自定义了个,并把它贴到GitHub上供 ...

  8. android相对布局代码,Android基础_3 Activity相对布局(示例代码)

    相对布局要比前面讲的线性布局和表格布局要灵活一些,所以平常用得也是比较多的.相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,这些位置都是相对的,确定出了其中一个控件的位置就可以确定另一 ...

  9. android确认密码代码,Android手机卫士之确认密码对话框

    本文接着实现"确认密码"功能,也即是用户以前设置过密码,现在只需要输入确认密码 布局文件和<Android 手机卫士--设置密码对话框>中的布局基本类似,所有copy一 ...

最新文章

  1. 关于poll机制应用及驱动
  2. 无法访问linux mysql_远程无法访问linux Mysql解决方案(转)
  3. fedora 14安装OFFICE套件
  4. python3.6手册中文版-python3.6文档中文版
  5. spring源码分析之spring-core asm概述
  6. 一寸照纯红色底图片_和记场下载
  7. 全开源智睿企业网站管理系统 v11.1.0源码
  8. BootstrapTable组件冻结列
  9. 11 个 Git 面试题
  10. Java 集合系列:Vector源码深入解析
  11. MySQL+Navicat安装教程
  12. 什么是信息安全管理体系
  13. 常用输入法快速输入自定义格式的时间和日期(搜狗/QQ/手心/微软拼音)
  14. Tracup|专业的项目管理工具如何帮助高效管理?
  15. Sentinel --- 分布式系统的流量方卫兵
  16. PPI_DPI 对比
  17. android 5.0一键刷机教程,HTC D820t (Desire 820 移动4G Android 5.0)一键刷机教程,轻松刷机...
  18. Windows7 Embedded Standard x64更新代码80072EFE解决方法
  19. 计算机本科生科研训练计划表,大学本科生科研训练计划(srtp)(10页)-原创力文档...
  20. 一篇文章带你了解网络编程(总结)

热门文章

  1. Ubuntu每次开机后提示:检测到系统程序出现问题的解决方法
  2. Pole Arrangement UVA - 1638 杆子的排列
  3. matplotlib 子图超过4个_Matplotlib+Pandas:子图创建
  4. kingedit 上传php_JS文件上传神器bootstrap fileinput详解
  5. 这个开源组件太强了,仅需三步完成 SpringBoot 日志脱敏
  6. C语言:人物查询系统(结构体数组的基本使用)
  7. php combobox,ComboBox(下拉列表框)
  8. 北京交通广播对话雷建平:揭秘中概股上市背后故事
  9. cmd获取当前系统时间命令
  10. 如何使用svn导出项目