微博客户端的设计与实现(下)

第四章 系统详细功能实现

本应用实现了如下主要模块:程序启动模块、登录授权模块、主界面显示模块撰写发表微博模块、用户发布信息模块、软件设置模块。

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实践项目汇报总结(下)的更多相关文章

  1. Android实践项目汇报

    Android实践项目:推箱子 推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力.游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置.这就要求玩家巧妙的运用有限的空间和通道 ...

  2. Android实践项目汇报(二)

    Google天气客户端 本周学习计划 学习布局控件和XML解析的相关知识. 看懂程序代码. 把借鉴代码成功导入到Android Studio中并运行成功. 实际完成情况 我学习到布局控件XML在res ...

  3. Android实践项目汇报总结(上)修改

    微博客户端的设计与实现(上) 第一章 绪论 1.1课题背景 微博可以说是时下最受人们所喜爱的一种社交方式,它是一种通过关注机制分享简短实时信息的广播式的社交网络平台.通过微博我们可以了解最新的时事新闻 ...

  4. Android实践项目汇报(总结)-修改

    天气客户端开发报告 1系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还可以提示 ...

  5. Android实践项目汇报(总结)

    天气客户端开发报告 1    系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还 ...

  6. Android实践项目汇报(四)

    全国天气客户端 本周学习计划 添加修改功能,完成项目 实际完成情况 1.成功显示当天及后几天的天气信息 通过修改chaxun.java程序,比较JSON数据格式中JSONObject("to ...

  7. Android实践项目汇报-改(一)

    Google天气客户端NABC Need(需求):  功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件完成后点开,载入界面,显示查询界 ...

  8. Android实践项目汇报(一)

    # 我要做的是Google天气客户端 一.Need(需求): 1. 功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件实现后所达到的功能 ...

  9. Android实践项目汇报(三)

    Google天气客户端 本周学习计划 调试代码使之成功运行并实现天气预报功能. 实际完成情况 由于google取消api接口服务,天气源的传输.所以我换了一个使用 haoserver API接口的程序 ...

随机推荐

  1. GraphLab GraphLab和MapReduce的区别

    https://turi.com/ GraphLab和MapReduce的区别 https://baike.baidu.com/item/GraphLab/16423125 2. GraphLab和M ...

  2. Unified Modeling Language

    https://en.wikipedia.org/wiki/Unified_Modeling_Language

  3. if嵌套和elif的区别

    if嵌套的使用场景: 2个(多个)条件有前后关系,必须先满足条件1,再判断是否满足条件2. elif的使用场景: 2个(多个)条件是各自独立的平级关系,满足条件几就执行响应的代码. --------- ...

  4. if判断代码 转变为 流程图

    转换规则如下: if 代表一个菱形+问号 if后面的条件代表菱形里的内容+↓yes(向下箭头和yes) if同级的else代表右拐向下箭头和no 执行语句块代表一个矩形. if 今天发工资: 先还信用 ...

  5. EasyUI 基本的拖动和放置

    <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Ba ...

  6. MSMQ研究

    开发过程记录如下: 1.   本机配置MSMQ ------控制面板-------启动或者关闭Windows功能----默认安装MSMQ即可 注意:本地安装后再VS中才能引用System.Messag ...

  7. 【深入理解javascript】闭包

    1.作用域 “javascript没有块级作用域”.所谓“块”,就是大括号“{}”中间的语句.例如if语句: 再比如for语句: 所以,我们在编写代码的时候,不要在“块”里面声明变量,要在代码的一开始 ...

  8. [py]django url 参数/reverse和HttpResponseRedirect

    参考 需要完成以下任务 - 访问http://127.0.0.1:8000/ 返回"hello maotai"或home.html - 访问http://127.0.0.1:800 ...

  9. yum && 编译 安装mysql 5.7 多实例

    yum安装 [root@localhost ~]# wget http://repo.mysql.com/mysql57-community-release-el7.rpm [root@localho ...

  10. vue.js使用typescript踩坑记

    最近在把https://github.com/renrenio/renren-fast-vue这个项目转为typescript,在此记录一下遇到的小坑 name坑:属性该怎么给? 声明文件坑:如何解决 ...