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接口的程序 ...
随机推荐
- tkinter 提示符
在python3.4中,原来的tkMessageBox变成tkinter.messagebox,使用方式如下: import tkinter.messagebox tkinter.messagebox ...
- CCCC L2-002. 链表去重
https://www.patest.cn/contests/gplt/L2-002 模拟一个链表的去重操作 题解:别模拟了,直接用内置的list和map.关于输出的地址,直接用pair存地址和值,输 ...
- Iwconfig/aircrack-ng
BT5 aircrack-ng破解无线密码(wpa/wep) - 星明月稀 - 博客频道 - CSDN.NET BT5 aircrack-ng破解无线密码(wpa/wep) - ...
- ArcGIS Server 内存占用相关
发布服务个数是否有上限? 不仅是服务个数,每个服务的实例数设置非常影响机器内存与CPU的占用. 发布服务时,如果服务不经常被访问,可以将最低实例数设置为0,避免后台长期占用内存. Server需要的机 ...
- Steady Cow Assignment---poj3189(多重匹配+二分)
题目链接:http://poj.org/problem?id=3189 题意:有n头牛,B个牛棚,每头牛对牛棚都有一个喜欢度,接下来输入N*B的矩阵第i行第j列的数x表示:第i头牛第j喜欢的是x; 第 ...
- Domino代理运行问题
当Server出现“operation is disallowed in this session”此命令时为代理权限问题,修改后即可正常运行代理.
- Html中常用的属性
!important //增加权重 word-break:break-all //允许在单词内换行 keep-all //只在半角空格或连接字符串换行 --这个属性一般用于文章段落 ...
- Spark性能优化(一)
前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...
- application实例
application详解及实例 application对象用来在多个程序或者是多个用户之间共享数据,用户使用的所有application对象都是一样的,这与session对象不同.服务器一旦启动,就 ...
- hover()与toggle()
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...