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接口的程序 ...
随机推荐
- FW 编译Android系统源码和内核源码
编译Android系统源码和内核源码 分类: Android2014-07-21 20:58 7287人阅读 评论(28) 收藏 举报 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现 ...
- javaScript高级教程(九) ------javascript对象字面量--------困扰已久的问题
在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外. ...
- (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】
(3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...
- /etc/ssh/sshd_config
线上配置: Port 49142 # 设置SSH监听端口 RSAAuthentication yes # 开启RSA密钥验证,只针对SSHv1 PubkeyAuthentication yes # 开 ...
- kettle中源和目标表结构不一致的情况处理
创建数据仓库的过程中,往往会遇到这样的问题,例如:源表由于业务原因新增了字段,而ETL程序中是按照之前的源表结构进行抽取的,那么如果不重新构建ETL程序,新的指标就不会流入DW,问题如下图所示 创建了 ...
- cookie与session的比较
首先来说一下什么是cookie:cookie是Web服务器保存在客户端的一系列文本信息: cookie的作用大致有三点:对特定对象的追踪,统计网页浏览次数,简化登陆. 它的安全性能是比较差的,容易泄露 ...
- linux基础(1)-终端&shell类型&命令&文件系统&命令帮助的获取
终端 用于与主机交互,必然用到的设备. 物理终端 直接接入本机的显示器和键盘设备:Console. 虚拟终端 附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6 默认启动 6 个虚拟终端. ...
- APICloud-端JS库功能API文档(1)
框架简介: 框架基于APICloud官网端API进行扩展和封装,框架完全采用面向对象编程形式,里面包含APP所使用的常用js功能:js类的自定义(类,构造方法,静态方法,继承...),常用工具函数(验 ...
- SparkSQL UDF使用方法与原理详解
UDF是SQL中很常见的功能,但在Spark-1.6及之前的版本,只能创建临时UDF,不支持创建持久化的UDF,除非修改Spark源码.从Spark-2.0开始,SparkSQL终于支持持久化的UDF ...
- Python 使用ctypes调用 C 函数
在python中通过ctypes可以直接调用c的函数,非常简单易用 下面就一步一步解释用法吧,以Linux为例讲解. 1, 首先确定你的python支持不支持ctypes python2.7以后cty ...