由于最近在做的一个游戏项目有一个排行榜,
排行榜是一个列表,界面大致如下:
排名 人物名称 头像图片 分数
排名 人物名称 头像图片 分数
排名 人物名称 头像图片 分数
排名 人物名称 头像图片 分数
排名 人物名称 头像图片 分数
排名 人物名称 头像图片 分数
排行 人物名称 头像图片 分数
列表中有100条数据,列表下面有一个
控件显示游戏玩家自己的排名信息
需求如下:
每次进入排行榜界面,则将游戏玩家的
人物名称和分数提交到服务端,服务端
接收请求后对数据库中的数据进行排序,
取得前100名的数据,还有一条游戏玩家
的数据,总共101条数据,由于客户端
还需要下载头像图片,所以返回的数据
还有头像图片的下载地址,服务端将所有
的数据包装成一个Json数据返回给客户端
大致格式如下:
{"rank":
[
{"person":"\u66f9\u64cd","index":1,"score":35852},
{"person":"\u66f9\u64cd","index":2,"score":32563},
{"person":"\u5b59\u6743","index":3,"score":10000},
{"person":"\u5218\u5907","index":4,"score":9638},
{"person":"\u5218\u5907","index":5,"score":8888},
{"person":"\u5b59\u6743","index":6,"score":8886},
{"person":"\u5218\u5907","index":7,"score":7865},
{"person":"\u5218\u5907","index":8,"score":6950},
{"person":"\u5218\u5907","index":9,"score":6548},
{"person":"\u5218\u5907","index":10,"score":6540},
{"person":"\u66f9\u64cd","index":11,"score":5288}
],
"base":"(服务端地址)",
"head":
[
{"person":"\u66f9\u64cd","filename":"\/caocao\/20130718185726036.png", "size":12343},
{"person":"\u5b59\u6743","filename":"\/sunqun\/20130718185726046.png", "size":12343},
{"person":"\u5218\u5907","filename":"\/liubei\/20130718185726056.png", "size":12343}
]
}
rank的每个对象包括:人物名称,排名,分数
head的每个对象包括:人物名称,头像图片名称
base为服务端地址
大致流程如下:
1.进入排行榜界面,将游戏玩家的数据发送到服务端
2.取得服务端返回的Json数据,解析出rank数组,head数组和base字符串
3.使用头像图片路径下载头像图片到本地
4.新建一个ResultMessage类,属性包括:排名,人物名称,本地头像图片地址,分数
5.在解析rank数组时实例化ResultMessage,添加到List中并返回出去
主要有三个类:LoadImage.java,ResultMessage.java,Upload.java
LoadImage.java用于下载头像图片,由于每次进入排行榜界面都会向
服务端发送请求,每次都会返回头像图片的下载地址,所以需要
做下判断本地是否已经有此图片存在,还有就是判断图片大小是否
正确,因为会有这样一种情况,在下载图片时突然网络断开,这时
头像图片没有下载完整,下次进入排行榜界面的时候又向服务端