Android实践项目汇报总结(下)
微博客户端的设计与实现(下)
第四章 系统详细功能实现
本应用实现了如下主要模块:程序启动模块、登录授权模块、主界面显示模块撰写发表微博模块、用户发布信息模块、软件设置模块。
4.1程序启动模块实现
安装薄荷Weibo软件后,在手机自动安装桌面快捷方式。点击图标开启程序,出现开机动画,并检测手机是否连接网络,若无连接可进行网络设置。程序启动页面如图所示:

网络设置页面,如图所示:

1.程序启动界面activity_main
2.动画显示,在anim目录下的anim_main.xml文件中定义动画放大和渐显效果。
3.网络设置,在AndroidManifest.xml文件中为程序启动的activity_main添加网络访问权限:
<uses-permission android:name="android.permission.INTERNET" />
在NetManager.java中判断网络状态,使用isOpenNetwork和isOpenWifi方法判断网络是否可用。
4.2登录授权模块实现
程序启动,如果用户是第一次使用该应用,则需要跳转到配置页面,在用户配置页面用户输入腾讯微博的用户名和密码,进行授权。登录页面如下图所示:

1.用户授权代码 AuthActivity,用户登录LoginActivity
微博采用Oauth授权机制,将申请的开发者APPID和APPSK传入Auth()方法中,获取从授权页面获得的授权码Access Token。程序跳转到登录界面,用户输入用户名和密码之后,客户端会完成授权认证的第三部,获得TokenKey和TokenSecrect,从而获得获取用户信息的权限。授权认证的核心代码为:
path = "https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id="+ clientId+ "&response_type=token&redirect_uri="redirectUri + "&state=" + state;
获取授权后的返回地址,并对其进行解析 jumpResultParser(String result)
1)用户授权认证数据:

4.3主界面显示模块实现
首页的菜单栏显示“最新微博”、“我的家园”、“软件设置”,撰写发布微博的图标。首页的主体显示被用户添加了关注的用户的最新微博信息。

1.微博首页界面activity_home,在HomeActivity中实现微博信息列表显示。
在ActionBar中实现标签页操作。
2.向HomeActivity的菜单添加项,通过实现方法onCreateOptionManu()来完成,将fragments添加后,通过方法onOptionsItemSelected()来响应自己的菜单项被选择的事件。添加三个fragment的代码:fragments.add(new WeiBoFragment());
3.微博信息显示WeiBoFragment。从网络获取用户相关数据后,对JSON数据进行解析onJSON(List<JSONObject> datas,解析出的数据包括用户ID、用户昵称、用户图标、最新微博信息、微博账号。

4.4发表微博功能
用户可以通过点击首页的发表微博按钮,弹出输入对话框,输入内容点击发送按钮,如果发送成功则返回首页。发布新微博页面如下图所示:

撰写发布微博页面activity_guangbo.xml,在GuangBoActivity中得到weiboAPI,通过如下方法实现微博发布:
weiboAPI.addWeibo(getApplicationContext(), content, "json",longitude, latitude,0,0, this, null, BaseVO.TYPE_JSON);
4.5 微博转发模块实现
通过点击微博列表中的某一条微博信息可以查看这条微博的详细信息。进入浏览微博信息页面可以通过点击微博,转发这条微博。微博转发页面如下图所示:

转发微博ZhuanBoActivity,其实现代码类似撰写微博,将要转发的微博文字信息加载到撰写微博的编辑框中。
4.6查看用户发布微博信息功能
用户点击“我的家园”按钮可以进入该用户所发所有微博的列表页面,在该页面用户可以查看用户所发微博的内容和时间。该功能界面设计如下图所示:

用户发布微博界面activity_user,在UserActivity 中实现获取用户信息和用户的广播列表。在此功能模块内,通过listview实现微博页面下拉刷新,上拉加载更多数据动画效果。
1.下拉刷新
通过onTouchEvent判断手势,来改变listview的header。header的状态共4种,定义为:
NONE :初始状态
PULL :下拉状态,此时松开会还原到状态NONE,并不进行刷新
RELEASE :同样是下拉状态,但此刻松开会执行刷新,进入状态REFRESHING
REFRESHING:正在执行刷新,刷新结束后进入状态NONE
header在四种状态切换时不仅改变内部组件,同时改变自身的大小。
2.加载更多
在listview滑动停止后,判断listview的最后一个item是否已经显示,如果显示说明listview已经滑动到了最底部,这时便触发加载更多的方法,方法结束根据结果改变footer。
4.7软件设置功能
用户点击“软件设置”按钮可以进入软件设置页面,在该页面用户可以查看关于微博的信息、清除缓存、清除授权、退出软件。该功能界面设计如下图所示:

软件设置界面fragment_setting,添加四个按钮并在SettingFragment中实现交互操作。
1.清除缓存方法:imageLoader.clearMemoryCache()和imageLoader.clearDiscCache();
2.清空授权信息
Util.clearSharePersistent(homeActivity.getApplicationContext()),授权清除后跳转到LoginActivity登录页面。
第五章 系统的测试与维护
5.1单元测试
测试系统的第一步是测试组成系统的单个构件。测试这些构件称为单元测试。在单元测试过程中,首先检查代码在程序的算法、数据和语法方面有没有缺陷,最后给该构件输入一个测试用例集,以说明该构件是否正确。在单元测试时,主要对单个模块的功能进行测试,不用理会其他的模块的耦合情况。
1) 测试一
在用户授权配置时,用户名或密码有一项为空或者填写错误,系统是否出现预先设定的操作提示。
具体操作:用户名、密码、任意一项为空或者填写有误。
结果:都出现相应的错误原因的信息提示。
结论:要求用户必须填写正确的用户名和密码,才能授权成功。

2) 测试二
在发表新微博时,输入空内容,或者超过字数限制,程序是否有出现预先设定的提示。
具体操作:输入的内容为空,或者超过字数限制。
结果:提示用户内容不能为空,或者字数超过140。
结论:要求输入正确内容。

5.2测试用例报告


总结与提高
经过几个周的努力,基于Android的腾讯微博客户端应用终于完成了。从一开始什么都不懂一直摸索着,在别人的代码基础上不断完善实现了这个软件。在这个过程中,我学会了很多知识,比如Axure软件的运用、Android环境的搭建、Intent、Activity、Listview、OAuth认证等,但我学会的最重要的一点是,利用现有的资源去解决问题。
系统提高与完善
1.已授权登录过的用户实现存储记录,可创建数据库,下次可自动登录。
2.拓展其他功能例如:评论、微博广场、推荐好友等。
3.用户操作界面可以更灵活友好。
附:此代码已托管到开源中国,链接:http://my.oschina.net/u/2511208
Android实践项目汇报总结(下)的更多相关文章
- Android实践项目汇报
Android实践项目:推箱子 推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力.游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置.这就要求玩家巧妙的运用有限的空间和通道 ...
- Android实践项目汇报(二)
Google天气客户端 本周学习计划 学习布局控件和XML解析的相关知识. 看懂程序代码. 把借鉴代码成功导入到Android Studio中并运行成功. 实际完成情况 我学习到布局控件XML在res ...
- Android实践项目汇报总结(上)修改
微博客户端的设计与实现(上) 第一章 绪论 1.1课题背景 微博可以说是时下最受人们所喜爱的一种社交方式,它是一种通过关注机制分享简短实时信息的广播式的社交网络平台.通过微博我们可以了解最新的时事新闻 ...
- Android实践项目汇报(总结)-修改
天气客户端开发报告 1系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还可以提示 ...
- Android实践项目汇报(总结)
天气客户端开发报告 1 系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还 ...
- Android实践项目汇报(四)
全国天气客户端 本周学习计划 添加修改功能,完成项目 实际完成情况 1.成功显示当天及后几天的天气信息 通过修改chaxun.java程序,比较JSON数据格式中JSONObject("to ...
- Android实践项目汇报-改(一)
Google天气客户端NABC Need(需求): 功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件完成后点开,载入界面,显示查询界 ...
- Android实践项目汇报(一)
# 我要做的是Google天气客户端 一.Need(需求): 1. 功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件实现后所达到的功能 ...
- Android实践项目汇报(三)
Google天气客户端 本周学习计划 调试代码使之成功运行并实现天气预报功能. 实际完成情况 由于google取消api接口服务,天气源的传输.所以我换了一个使用 haoserver API接口的程序 ...
随机推荐
- 怎么点击div之外的区域就隐藏这个div啊 找了很久,都没有很好解决
方法一. <!DOCTYPE html><html><head><meta http-equiv="Content-Type" conte ...
- Hadoop Single Node Setup(hadoop本地模式和伪分布式模式安装-官方文档翻译 2.7.3)
Purpose(目标) This document describes how to set up and configure a single-node Hadoop installation so ...
- HDFS Users Guide
Purpose This document is a starting point for users working with Hadoop Distributed File System (HDF ...
- SPARQL 入门教程
1.准备工作 1.1 下载ZIP 1.2 配置环境变量 1.3 查询文件 vc-db-1.rdf 2. 查询操作 2.1 普通查询 /** * 查询family为"Smith"的 ...
- java获取系统当前服务器IP地址
public String getServiceIp(){ InetAddress address; String myIp; try { address = InetAddress.getLocal ...
- 远程开关机神器Wake On LAN,免费有中文版
https://wol.aquilatech.com/ Wake On Lan 又名 aquilaWOL,这是一款免费且开源的图形界面 WOL 软件,有繁体中文界面,可以管理多台电脑和网络设备,支持批 ...
- 64位win10+cuda8.0+vs2013+cuDNN V5下Caffe的编译安装教程并配置matlab2014a 接口
一.需要安装的软件 1)vs2013,我是在http://www.52pojie.cn/thread-492326-1-1.html这个网址安装的.我之前用的是vs2012,按照网上的配置教程会爆各种 ...
- Python安装sqlite3
今天使用PYthon时,发现错误 ImportError: No module named sqlite 这是因为缺少 SQLITE3的缘故. 下面分享一下解决此问题的方法步骤: 1. 查看是Pyth ...
- iOS 网易彩票-4设置模块一
概述 基本上,每一款APP都有相应的设置模块.怎么设置才能更灵活和通用呢,这也是大家一直思考的.下面说说在网易彩票中,设置模块的设置思想. 基本上有三种方案: static cell(呆板,完全没有动 ...
- OBV_X3
{OBV_X3[背景]考虑到OBV_X03在情况1的时候,采用的是寻找波段线的同价K线,但是由于此种情况下必须使用CONST(C)或通过输入参数CONSTCC设定固定值,无法当前K线的CLOSE同时变 ...