微博客户端的设计与实现(下)
第四章 系统详细功能实现
本应用实现了如下主要模块:程序启动模块、登录授权模块、主界面显示模块撰写发表微博模块、用户发布信息模块、软件设置模块。
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