diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6196cfb9ec..0785cba25d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -160,9 +160,6 @@
-
@@ -217,6 +214,9 @@
android:name = "com.gh.gamecenter.UserInfoEditActivity"
android:screenOrientation = "portrait"
android:windowSoftInputMode = "stateHidden" />
+
diff --git a/app/src/main/assets/LocList.txt b/app/src/main/assets/LocList.txt
index dbab2e436d..72aa0abc1c 100644
--- a/app/src/main/assets/LocList.txt
+++ b/app/src/main/assets/LocList.txt
@@ -1,15 +1,11 @@
[
-
- {
- "name": "国内"
- },
+ {"name":"国内"},
{
"name": "安徽",
"City": [
"安庆",
"蚌埠",
"亳州",
- "巢湖",
"池州",
"滁州",
"阜阳",
@@ -40,22 +36,22 @@
{
"name": "北京",
"City": [
- "昌平",
- "朝阳",
- "大兴",
- "东城",
- "房山",
- "丰台",
- "海淀",
- "怀柔",
- "门头沟",
- "密云",
- "平台",
- "石景山",
- "顺义",
- "通州",
- "西城",
- "延庆"
+ "昌平区",
+ "朝阳区",
+ "大兴区",
+ "东城区",
+ "房山区",
+ "丰台区",
+ "海淀区",
+ "怀柔区",
+ "门头沟区",
+ "密云县",
+ "平谷区",
+ "石景山区",
+ "顺义区",
+ "通州区",
+ "西城区",
+ "延庆县"
]
},
{
@@ -76,9 +72,8 @@
"江北",
"江津",
"九龙坡",
- "开县",
+ "开州",
"梁平",
- "两江新区",
"南岸",
"南川",
"彭水",
@@ -87,10 +82,8 @@
"荣昌",
"沙坪坝",
"石柱",
- "双桥",
- "潼南",
"铜梁",
- "万盛",
+ "潼南",
"万州",
"巫山",
"巫溪",
@@ -151,13 +144,13 @@
"茂名",
"梅州",
"清远",
- "韶关",
"汕头",
"汕尾",
+ "韶关",
"深圳",
"阳江",
- "湛江",
"云浮",
+ "湛江",
"肇庆",
"中山",
"珠海"
@@ -215,8 +208,8 @@
"三沙",
"三亚",
"屯昌",
- "文昌",
"万宁",
+ "文昌",
"五指山"
]
},
@@ -226,12 +219,14 @@
"保定",
"沧州",
"承德",
+ "定州",
"邯郸",
"衡水",
"廊坊",
"秦皇岛",
"石家庄",
"唐山",
+ "辛集",
"邢台",
"张家口"
]
@@ -255,8 +250,8 @@
"信阳",
"许昌",
"郑州",
- "驻马店",
- "周口"
+ "周口",
+ "驻马店"
]
},
{
@@ -270,8 +265,8 @@
"鸡西",
"佳木斯",
"牡丹江",
- "齐齐哈尔",
"七台河",
+ "齐齐哈尔",
"双鸭山",
"绥化",
"伊春"
@@ -280,8 +275,8 @@
{
"name": "湖北",
"City": [
- "恩施",
"鄂州",
+ "恩施",
"黄冈",
"黄石",
"荆门",
@@ -292,10 +287,10 @@
"随州",
"天门",
"武汉",
- "孝感",
- "咸宁",
"仙桃",
- "襄阳",
+ "咸宁",
+ "襄樊",
+ "孝感",
"宜昌"
]
},
@@ -340,8 +335,8 @@
"连云港",
"南京",
"南通",
- "宿迁",
"苏州",
+ "宿迁",
"泰州",
"无锡",
"徐州",
@@ -398,8 +393,8 @@
"通辽",
"乌海",
"乌兰察布",
- "兴宁",
- "锡林郭勒"
+ "锡林郭勒",
+ "兴宁"
]
},
{
@@ -429,19 +424,19 @@
"name": "山东",
"City": [
"滨州",
- "东营",
"德州",
+ "东营",
"菏泽",
"济南",
"济宁",
"莱芜",
- "临沂",
"聊城",
+ "临沂",
"青岛",
"日照",
"泰安",
- "潍坊",
"威海",
+ "潍坊",
"烟台",
"枣庄",
"淄博"
@@ -490,14 +485,12 @@
"嘉定",
"金山",
"静安",
- "卢湾",
"闵行",
"浦东新区",
"普陀",
"青浦",
"松江",
"徐汇",
- "闸北",
"杨浦"
]
},
@@ -509,9 +502,9 @@
"成都",
"达州",
"德阳",
+ "甘孜",
"广安",
"广元",
- "甘孜",
"乐山",
"凉山",
"泸州",
@@ -520,11 +513,11 @@
"南充",
"内江",
"攀枝花",
- "雅安",
"遂宁",
+ "雅安",
"宜宾",
- "自贡",
- "资阳"
+ "资阳",
+ "自贡"
]
},
{
@@ -546,8 +539,8 @@
"台东县",
"台南市",
"台中市",
- "新竹市",
"新北市",
+ "新竹市",
"新竹县",
"宜兰县",
"云林县",
@@ -561,12 +554,12 @@
"北辰",
"滨海新区",
"东丽",
+ "和平",
"河北",
"河东",
- "和平",
"河西",
"红桥",
- "蓟县",
+ "蓟州",
"津南",
"静海",
"南开",
@@ -606,8 +599,8 @@
"湾仔区",
"西贡区",
"油尖旺区",
- "中西区",
- "元朗区"
+ "元朗区",
+ "中西区"
]
},
{
@@ -626,11 +619,12 @@
"克孜勒苏",
"石河子",
"塔城",
- "吐鲁番",
+ "铁门关",
"图木舒克",
+ "吐鲁番",
+ "乌鲁木齐",
"五家渠",
- "伊犁",
- "乌鲁木齐"
+ "伊犁"
]
},
{
@@ -655,7 +649,7 @@
]
},
{
- "name": "浙江",
+ "name": "浙江",
"City": [
"杭州",
"湖州",
@@ -670,18 +664,11 @@
"舟山"
]
},
+
{
"name": "国外"
},
- {
- "name": "安道尔"
- },
- {
- "name": "奥地利"
- },
- {
- "name": "澳大利亚"
- },
+
{
"name": "阿尔巴尼亚"
},
@@ -689,26 +676,17 @@
"name": "阿尔及利亚"
},
{
- "name": "爱尔兰"
- },
- {
- "name": "爱沙尼亚"
- },
- {
- "name": "安哥拉"
+ "name": "阿富汗"
},
{
"name": "阿根廷"
},
{
- "name": "埃及"
+ "name": "阿拉伯联合酋长国"
},
{
"name": "阿鲁巴"
},
- {
- "name": "阿拉伯联合酋长国"
- },
{
"name": "阿曼"
},
@@ -716,98 +694,158 @@
"name": "阿塞拜疆"
},
{
- "name": "埃塞尔比亚"
+ "name": "埃及"
},
{
- "name": "安提瓜岛和巴布达"
+ "name": "埃塞俄比亚"
},
{
- "name": "巴巴多斯岛"
+ "name": "爱尔兰"
+ },
+ {
+ "name": "爱沙尼亚"
+ },
+ {
+ "name": "安道尔"
+ },
+ {
+ "name": "安哥拉"
+ },
+ {
+ "name": "安圭拉"
+ },
+ {
+ "name": "安提瓜和巴布达"
+ },
+ {
+ "name": "澳大利亚"
+ },
+ {
+ "name": "奥地利"
+ },
+ {
+ "name": "巴巴多斯"
},
{
"name": "巴布亚新几内亚"
},
- {
- "name": "博茨瓦纳"
- },
- {
- "name": "冰岛"
- },
- {
- "name": "不丹"
- },
- {
- "name": "波多黎各"
- },
- {
- "name": "波黑"
- },
{
"name": "巴哈马"
},
- {
- "name": "保加利亚"
- },
{
"name": "巴基斯坦"
},
+ {
+ "name": "巴勒斯坦"
+ },
{
"name": "巴林"
},
- {
- "name": "波兰"
- },
- {
- "name": "布隆迪"
- },
- {
- "name": "比利时"
- },
- {
- "name": "玻利维亚"
- },
- {
- "name": "白俄罗斯"
- },
- {
- "name": "百慕大"
- },
- {
- "name": "北马里亚纳群岛"
- },
- {
- "name": "贝宁"
- },
{
"name": "巴拿马"
},
{
"name": "巴西"
},
+ {
+ "name": "白俄罗斯"
+ },
+ {
+ "name": "百慕大"
+ },
+ {
+ "name": "保加利亚"
+ },
+ {
+ "name": "北马里亚纳群岛"
+ },
+ {
+ "name": "贝宁"
+ },
+ {
+ "name": "比利时"
+ },
+ {
+ "name": "冰岛"
+ },
+ {
+ "name": "波多黎各"
+ },
+ {
+ "name": "波黑"
+ },
+ {
+ "name": "波兰"
+ },
+ {
+ "name": "玻利维亚"
+ },
+ {
+ "name": "博茨瓦纳"
+ },
+ {
+ "name": "伯利兹"
+ },
+ {
+ "name": "不丹"
+ },
+ {
+ "name": "布基纳法索"
+ },
+ {
+ "name": "布隆迪"
+ },
{
"name": "朝鲜"
},
{
- "name": "德国"
+ "name": "赤道几内亚"
},
{
"name": "丹麦"
},
+ {
+ "name": "德国"
+ },
+ {
+ "name": "东帝汶"
+ },
+ {
+ "name": "多哥"
+ },
{
"name": "多米尼加共和国"
},
{
- "name": "厄瓜多尔"
+ "name": "多米尼克"
},
{
"name": "俄罗斯"
},
+ {
+ "name": "厄瓜多尔"
+ },
{
"name": "厄立特里亚"
},
{
"name": "法国"
},
+ {
+ "name": "法罗群岛"
+ },
+ {
+ "name": "法属圭亚那"
+ },
+ {
+ "name": "法属波利尼西亚"
+ },
+ {
+ "name": "梵蒂冈"
+ },
+ {
+ "name": "菲律宾"
+ },
{
"name": "斐济"
},
@@ -815,19 +853,16 @@
"name": "芬兰"
},
{
- "name": "菲律宾"
+ "name": "佛得角"
},
{
- "name": "古巴"
+ "name": "福克兰群岛"
},
{
"name": "冈比亚"
},
{
- "name": "关岛"
- },
- {
- "name": "格恩西岛"
+ "name": "刚果共和国"
},
{
"name": "刚果民主共和国"
@@ -835,6 +870,12 @@
{
"name": "哥伦比亚"
},
+ {
+ "name": "哥斯达黎加"
+ },
+ {
+ "name": "格恩西岛"
+ },
{
"name": "格陵兰"
},
@@ -842,14 +883,26 @@
"name": "格林纳达"
},
{
- "name": "哥斯达黎加"
+ "name": "格鲁吉亚"
+ },
+ {
+ "name": "古巴"
+ },
+ {
+ "name": "瓜德罗普"
+ },
+ {
+ "name": "关岛"
+ },
+ {
+ "name": "圭亚那"
+ },
+ {
+ "name": "哈萨克斯坦"
},
{
"name": "海地"
},
- {
- "name": "洪都拉斯"
- },
{
"name": "韩国"
},
@@ -857,10 +910,16 @@
"name": "荷兰"
},
{
- "name": "黑山共和国"
+ "name": "荷属安的列斯"
},
{
- "name": "哈萨克斯坦"
+ "name": "黑山"
+ },
+ {
+ "name": "洪都拉斯"
+ },
+ {
+ "name": "基里巴斯"
},
{
"name": "吉布提"
@@ -869,10 +928,10 @@
"name": "吉尔吉斯斯坦"
},
{
- "name": "捷克共和国"
+ "name": "几内亚"
},
{
- "name": "基里巴斯"
+ "name": "几内亚比绍"
},
{
"name": "加纳"
@@ -880,35 +939,68 @@
{
"name": "加拿大"
},
+ {
+ "name": "加蓬"
+ },
{
"name": "柬埔寨"
},
{
- "name": "克罗地亚"
+ "name": "捷克"
+ },
+ {
+ "name": "津巴布韦"
},
{
"name": "喀麦隆"
},
+ {
+ "name": "卡塔尔"
+ },
{
"name": "开曼群岛"
},
{
- "name": "肯尼亚"
+ "name": "科摩罗"
+ },
+ {
+ "name": "科特迪瓦"
},
{
"name": "科威特"
},
{
- "name": "利比里亚"
+ "name": "克罗地亚"
+ },
+ {
+ "name": "肯尼亚"
+ },
+ {
+ "name": "库克群岛"
+ },
+ {
+ "name": "拉脱维亚"
+ },
+ {
+ "name": "莱索托"
+ },
+ {
+ "name": "老挝"
},
{
"name": "黎巴嫩"
},
+ {
+ "name": "利比里亚"
+ },
{
"name": "利比亚"
},
{
- "name": "罗马尼亚"
+ "name": "立陶宛"
+ },
+ {
+ "name": "列支敦士登"
},
{
"name": "留尼旺岛"
@@ -916,26 +1008,11 @@
{
"name": "卢森堡"
},
- {
- "name": "莱索托"
- },
- {
- "name": "拉脱维亚"
- },
{
"name": "卢旺达"
},
{
- "name": "老挝"
- },
- {
- "name": "列支敦士登"
- },
- {
- "name": "立陶宛"
- },
- {
- "name": "缅甸"
+ "name": "罗马尼亚"
},
{
"name": "马达加斯加"
@@ -944,28 +1021,7 @@
"name": "马尔代夫"
},
{
- "name": "摩尔多瓦"
- },
- {
- "name": "美国"
- },
- {
- "name": "蒙古"
- },
- {
- "name": "孟加拉"
- },
- {
- "name": "秘鲁"
- },
- {
- "name": "摩洛哥"
- },
- {
- "name": "毛里求斯"
- },
- {
- "name": "毛里塔尼亚"
+ "name": "马耳他"
},
{
"name": "马拉维"
@@ -974,35 +1030,95 @@
"name": "马来西亚"
},
{
- "name": "摩纳哥"
+ "name": "马里"
},
{
"name": "马其顿"
},
{
- "name": "莫桑比克"
+ "name": "马绍尔群岛"
},
{
- "name": "马绍尔群岛"
+ "name": "马提尼克岛"
+ },
+ {
+ "name": "马约特岛"
+ },
+ {
+ "name": "毛里求斯"
+ },
+ {
+ "name": "毛里塔尼亚"
+ },
+ {
+ "name": "美国"
+ },
+ {
+ "name": "美属萨摩亚"
+ },
+ {
+ "name": "美属维尔京群岛"
+ },
+ {
+ "name": "蒙古"
+ },
+ {
+ "name": "蒙特塞拉特"
+ },
+ {
+ "name": "孟加拉国"
+ },
+ {
+ "name": "密克罗尼西亚联邦"
+ },
+ {
+ "name": "秘鲁"
+ },
+ {
+ "name": "缅甸"
+ },
+ {
+ "name": "摩尔多瓦"
+ },
+ {
+ "name": "摩洛哥"
+ },
+ {
+ "name": "摩纳哥"
+ },
+ {
+ "name": "莫桑比克"
},
{
"name": "墨西哥"
},
{
- "name": "尼泊尔"
+ "name": "纳米比亚"
},
{
"name": "南非"
},
+ {
+ "name": "南极洲"
+ },
+ {
+ "name": "瑙鲁"
+ },
{
"name": "尼加拉瓜"
},
{
- "name": "纳米比亚"
+ "name": "尼泊尔"
},
{
"name": "尼日利亚"
},
+ {
+ "name": "纽埃"
+ },
+ {
+ "name": "诺福克岛"
+ },
{
"name": "挪威"
},
@@ -1010,10 +1126,10 @@
"name": "帕劳群岛"
},
{
- "name": "葡萄牙"
+ "name": "皮特凯恩"
},
{
- "name": "卡塔尔"
+ "name": "葡萄牙"
},
{
"name": "乔治亚"
@@ -1028,104 +1144,152 @@
"name": "瑞士"
},
{
- "name": "苏丹"
- },
- {
- "name": "塞尔维亚"
- },
- {
- "name": "圣基茨和尼维斯"
- },
- {
- "name": "斯洛伐克"
- },
- {
- "name": "塞拉利昂"
- },
- {
- "name": "斯里兰卡"
- },
- {
- "name": "所罗门群岛"
- },
- {
- "name": "苏里南"
- },
- {
- "name": "斯洛文尼亚"
- },
- {
- "name": "圣马力诺"
+ "name": "萨尔瓦多"
},
{
"name": "萨摩亚"
},
+ {
+ "name": "塞尔维亚"
+ },
+ {
+ "name": "塞拉利昂"
+ },
{
"name": "塞内加尔"
},
+ {
+ "name": "塞浦路斯"
+ },
{
"name": "塞舌尔"
},
{
"name": "沙特阿拉伯"
},
+ {
+ "name": "圣诞岛"
+ },
+ {
+ "name": "圣多美和普林西比"
+ },
+ {
+ "name": "圣赫勒拿"
+ },
+ {
+ "name": "圣基茨和尼维斯"
+ },
+ {
+ "name": "圣卢西亚"
+ },
+ {
+ "name": "圣马力诺"
+ },
+ {
+ "name": "圣皮埃尔和密克隆"
+ },
+ {
+ "name": "圣文森特和格林纳丁斯"
+ },
+ {
+ "name": "斯里兰卡"
+ },
+ {
+ "name": "斯洛伐克"
+ },
+ {
+ "name": "斯洛文尼亚"
+ },
{
"name": "斯威士兰"
},
{
- "name": "土耳其"
+ "name": "苏丹"
},
{
- "name": "泰国"
+ "name": "苏里南"
},
{
- "name": "汤加"
+ "name": "所罗门群岛"
+ },
+ {
+ "name": "索马里"
},
{
"name": "塔吉克斯坦"
},
{
- "name": "特立尼达和多巴哥"
+ "name": "泰国"
},
{
"name": "坦桑尼亚"
},
+ {
+ "name": "汤加"
+ },
+ {
+ "name": "特克斯和凯科斯群岛"
+ },
+ {
+ "name": "特立尼达和多巴哥"
+ },
+ {
+ "name": "突尼斯"
+ },
+ {
+ "name": "图瓦卢"
+ },
+ {
+ "name": "土耳其"
+ },
+ {
+ "name": "土库曼斯坦"
+ },
+ {
+ "name": "托克劳"
+ },
+ {
+ "name": "瓦利斯和富图纳"
+ },
+ {
+ "name": "瓦努阿图"
+ },
{
"name": "危地马拉"
},
+ {
+ "name": "委内瑞拉"
+ },
+ {
+ "name": "文莱"
+ },
{
"name": "乌干达"
},
{
"name": "乌克兰"
},
- {
- "name": "文莱"
- },
{
"name": "乌拉圭"
},
- {
- "name": "瓦努阿图"
- },
- {
- "name": "委内瑞拉"
- },
{
"name": "乌兹别克斯坦"
},
{
"name": "西班牙"
},
+ {
+ "name": "西撒哈拉"
+ },
+ {
+ "name": "希腊"
+ },
{
"name": "新加坡"
},
{
"name": "新喀里多尼亚"
},
- {
- "name": "希腊"
- },
{
"name": "新西兰"
},
@@ -1133,28 +1297,7 @@
"name": "匈牙利"
},
{
- "name": "印度"
- },
- {
- "name": "约旦"
- },
- {
- "name": "意大利"
- },
- {
- "name": "印度尼西亚"
- },
- {
- "name": "英国"
- },
- {
- "name": "伊朗"
- },
- {
- "name": "伊拉克"
- },
- {
- "name": "也门"
+ "name": "叙利亚"
},
{
"name": "牙买加"
@@ -1163,24 +1306,60 @@
"name": "亚美尼亚"
},
{
- "name": "越南"
+ "name": "也门"
+ },
+ {
+ "name": "伊拉克"
+ },
+ {
+ "name": "伊朗"
},
{
"name": "以色列"
},
{
- "name": "直布罗陀"
+ "name": "意大利"
+ },
+ {
+ "name": "印度"
+ },
+ {
+ "name": "印度尼西亚"
+ },
+ {
+ "name": "英国"
+ },
+ {
+ "name": "英国属地曼岛"
+ },
+ {
+ "name": "英属维尔京群岛"
+ },
+ {
+ "name": "英属印度洋领地"
+ },
+ {
+ "name": "约旦"
+ },
+ {
+ "name": "越南"
},
{
"name": "赞比亚"
},
{
- "name": "中非共和国"
+ "name": "泽西岛"
+ },
+ {
+ "name": "乍得"
+ },
+ {
+ "name": "直布罗陀"
},
{
"name": "智利"
},
{
- "name": "泽西岛"
+ "name": "中非共和国"
}
]
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment.java b/app/src/main/java/com/gh/base/fragment/BaseFragment.java
index 6f5366e269..ece1663629 100644
--- a/app/src/main/java/com/gh/base/fragment/BaseFragment.java
+++ b/app/src/main/java/com/gh/base/fragment/BaseFragment.java
@@ -116,7 +116,7 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB
@Override
public void onResume() {
super.onResume();
- isEverPause = false;
+ isEverPause = false; // TODO 导致根据isEverPause判断的方法无法执行
}
@Override
diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java
index b3c9a9d82c..d7691cf4a7 100644
--- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java
@@ -236,13 +236,13 @@ public class GameDetailActivity extends BaseActivity {
mKaifuHint.setVisibility(View.VISIBLE);
}
mTanBarFuLiTv.setTextColor(Color.WHITE);
- mTanBarFuLiTv.setBackgroundResource(R.drawable.gamedetail_tag_select_bg);
+ mTanBarFuLiTv.setBackgroundResource(R.drawable.tabbar_left_bg);
mTanBarXinXiTv.setTextColor(Color.BLACK);
mTanBarXinXiTv.setBackgroundDrawable(new ColorDrawable(0));
} else {
mKaifuHint.setVisibility(View.GONE);
mTanBarXinXiTv.setTextColor(Color.WHITE);
- mTanBarXinXiTv.setBackgroundResource(R.drawable.gamedetail_tag_unselect_bg);
+ mTanBarXinXiTv.setBackgroundResource(R.drawable.tabbar_right_bg);
mTanBarFuLiTv.setTextColor(Color.BLACK);
mTanBarFuLiTv.setBackgroundDrawable(new ColorDrawable(0));
}
diff --git a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java
index 1880dbe633..2d73ac47bb 100644
--- a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java
@@ -1,111 +1,43 @@
package com.gh.gamecenter;
-import android.animation.Animator;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
-import android.view.KeyEvent;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v4.content.ContextCompat;
+import android.view.Gravity;
import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.BaseActivity;
-import com.gh.base.OnRequestCallBackListener;
-import com.gh.common.util.DownloadItemUtils;
+import com.gh.common.util.DisplayUtils;
import com.gh.common.util.EntranceUtils;
-import com.gh.common.view.VerticalItemDecoration;
-import com.gh.download.DownloadManager;
-import com.gh.gamecenter.adapter.KaiFuAdapter;
-import com.gh.gamecenter.adapter.KaiFuDialogAdapter;
-import com.gh.gamecenter.entity.ApkEntity;
-import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.eventbus.EBDownloadStatus;
-import com.gh.gamecenter.eventbus.EBNetworkState;
-import com.gh.gamecenter.eventbus.EBPackage;
-import com.jakewharton.rxbinding.view.RxView;
-import com.lightgame.download.DataWatcher;
-import com.lightgame.download.DownloadEntity;
+import com.gh.gamecenter.eventbus.EBKaiFuReset;
+import com.gh.gamecenter.kaifu.KaiFuFragment;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
-import java.util.ArrayList;
-import java.util.concurrent.TimeUnit;
-
import butterknife.BindView;
-import rx.functions.Action1;
/**
- * Created by khy on 2017/3/16.
- * 首页-开服表
+ * Created by khy on 18/08/17.
*/
-public class KaiFuActivity extends BaseActivity implements OnRequestCallBackListener,
- KaiFuDialogAdapter.OnKaiFuDialogCallBackListener, KaiFuAdapter.OnScrollToKaiFuIndexListener,
- SwipeRefreshLayout.OnRefreshListener {
- @BindView(R.id.kaifu_rv)
- RecyclerView mRecyclerView;
- @BindView(R.id.kaifu_pb)
- ProgressBarCircularIndeterminate mPbLoading;
- @BindView(R.id.kaifu_refresh)
- SwipeRefreshLayout mRefreshLayout;
- @BindView(R.id.kaifu_game_name)
- TextView mGameName;
- @BindView(R.id.popup_bg)
- View mPopupBg;
- @BindView(R.id.kaifu_select_game_rl)
- RelativeLayout mSelectGameRl;
- @BindView(R.id.reuse_no_connection)
- LinearLayout mNoConnection;
- @BindView(R.id.reuse_none_data)
- LinearLayout mNoData;
- private PopupWindow mPopupWindow;
+public class KaiFuActivity extends BaseActivity {
- private KaiFuAdapter mAdapter;
+ @BindView(R.id.reuse_actionbar)
+ RelativeLayout mReuseActionbar;
- private LinearLayoutManager layoutManager;
+ private TextView mResetTv;
- private boolean isEverpause = false;
- private boolean move = false;
- private boolean smoothMove = false;
+ private KaiFuFragment mKaiFuFragment;
+ private KaiFuFragment mGameKaiFuFragment;
- private String kaifuType;
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- mAdapter = new KaiFuAdapter(KaiFuActivity.this, KaiFuActivity.this, KaiFuActivity.this, kaifuType);
- mRecyclerView.setAdapter(mAdapter);
- }
- };
- private int mDialogGamePosition; // 顶部弹窗过滤位置
- private int kaifuOffset = 0;
- private int mInitMovePosition; // 首次进入移动的位置
- private int mMovePosition; // 移动位置
- private DataWatcher dataWatcher = new DataWatcher() {
- @Override
- public void onDataChanged(DownloadEntity downloadEntity) {
- ArrayList locationList = mAdapter.getLocationMap().get(downloadEntity.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
- gameEntity = mAdapter.getSubjectList().get(location - getGameEntityIndex());
- if (gameEntity != null) {
- DownloadItemUtils.processDate(KaiFuActivity.this, gameEntity, downloadEntity,
- mAdapter, location);
- }
- }
- }
- }
- };
+ public static final String SINGLE_GAME_KAIFU = "SINGLE_GAME_KAIFU";
+ public static final String ALL_GAME_KAIFU = "ALL_GAME_KAIFU";
@NonNull
public static Intent getIntent(Context context, String entrance) {
@@ -114,373 +46,71 @@ public class KaiFuActivity extends BaseActivity implements OnRequestCallBackList
return intent;
}
+
@Override
protected int getLayoutId() {
- return R.layout.activity_kaifu;
+ return R.layout.activity_kaifu2;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- initTitle(getString(R.string.title_kaifu));
+ initTitle("开服表");
- kaifuType = "全部";
-
- mRefreshLayout.setColorSchemeResources(R.color.theme);
- mRefreshLayout.setOnRefreshListener(this);
- mRefreshLayout.setEnabled(false);
-
- mAdapter = new KaiFuAdapter(this, this, this, kaifuType);
- layoutManager = new LinearLayoutManager(this);
- ((DefaultItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
- mRecyclerView.addItemDecoration(new VerticalItemDecoration(this, 8, false));
- mRecyclerView.setLayoutManager(layoutManager);
- mRecyclerView.setAdapter(mAdapter);
-
- mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
-
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
- if (smoothMove && newState == RecyclerView.SCROLL_STATE_IDLE) {
- smoothMove = false;
- int n = mMovePosition - layoutManager.findFirstVisibleItemPosition();
- if (0 <= n && n < mRecyclerView.getChildCount()) {
- View view = layoutManager.findViewByPosition(n);
- if (view != null) {
- int top = view.getTop();
- mRecyclerView.smoothScrollBy(0, top);
- }
- }
- }
-
- //上拉加载
- if (mAdapter.isLoadedBottom() && newState == RecyclerView.SCROLL_STATE_IDLE
- && mAdapter.getItemCount() == layoutManager.findLastVisibleItemPosition() + 1) {
- mAdapter.initListBottom(kaifuOffset + mAdapter.loadCountBottom());
- }
- //下拉加载
- if (kaifuOffset > 0 && mAdapter.isLoadedTop() && newState == RecyclerView.SCROLL_STATE_IDLE
- && layoutManager.findFirstVisibleItemPosition() == 0) {
- int countTop = mAdapter.loadCountTop();
-// if (countTop % 20 == 0) { // 不是20的倍数 证明加载完毕
- int offset = kaifuOffset - countTop;
- int limit = 20;
- if (offset < 0) {
- limit = limit + offset;
- offset = 0;
- }
- if (limit == 0) return;
-
- mAdapter.initListTop(offset, limit);
-// }
- }
- }
-
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- if (move) {
- move = false;
- int n = mMovePosition - layoutManager.findFirstVisibleItemPosition();
- if (0 <= n && n < mRecyclerView.getChildCount()) {
- int top = mRecyclerView.getChildAt(n).getTop();
- mRecyclerView.scrollBy(0, top);
- }
- }
- }
- });
+ mResetTv = new TextView(this);
+ mResetTv.setText("重置");
+ mResetTv.setTextColor(ContextCompat.getColor(this, R.color.title));
+ mResetTv.setGravity(Gravity.CENTER);
+ mResetTv.setVisibility(View.GONE);
+ mResetTv.setBackgroundResource(R.drawable.border_black_bg);
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
+ DisplayUtils.dip2px(this, 48), DisplayUtils.dip2px(this, 28));
+ params.addRule(RelativeLayout.CENTER_VERTICAL);
+ params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ params.setMargins(0, 0, DisplayUtils.dip2px(this, 8), 0);
+ mReuseActionbar.addView(mResetTv, params);
- // 防抖处理
- RxView.clicks(mSelectGameRl)
- .throttleFirst(1, TimeUnit.SECONDS)
- .subscribe(new Action1() {
- @Override
- public void call(Void aVoid) {
- initSelectGameDialog();
- }
- });
-
- mNoConnection.setOnClickListener(new View.OnClickListener() {
+ FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
+ mKaiFuFragment = new KaiFuFragment();
+ fragmentTransaction.add(R.id.layout_fragment_content, mKaiFuFragment);
+ fragmentTransaction.commit();
+ mResetTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- mAdapter.initKaiFuOffset();
- mNoConnection.setVisibility(View.GONE);
- mPbLoading.setVisibility(View.VISIBLE);
- }
- });
-
- }
-
- private void initSelectGameDialog() {
- isShowPopupBg(true);
-
- View contentView = View.inflate(this, R.layout.dialog_kaifu_select_game, null);
- RecyclerView selectGameRv = (RecyclerView) contentView.findViewById(R.id.dialog_kaifu_select_game_rv);
- final TextView selectGameTitle = (TextView) contentView.findViewById(R.id.dialog_kaifu_title);
-
- final LinearLayoutManager layout = new LinearLayoutManager(this);
- selectGameRv.setLayoutManager(layout);
- selectGameRv.setAdapter(new KaiFuDialogAdapter(this, this, mDialogGamePosition));
-
-
- mPopupWindow = new PopupWindow(contentView, LinearLayout.LayoutParams.MATCH_PARENT
- , LinearLayout.LayoutParams.MATCH_PARENT, true);
- mPopupWindow.setAnimationStyle(R.style.scale_popwindow_anim_style);
- mPopupWindow.showAtLocation(mSelectGameRl, 0, 0, 0);
-
- selectGameRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
-
- if (layout.findFirstVisibleItemPosition() >= 5) {
- selectGameTitle.setVisibility(View.VISIBLE);
- } else {
- selectGameTitle.setVisibility(View.GONE);
- }
-
- }
- });
-
- selectGameRv.setOnKeyListener(new View.OnKeyListener() {
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK
- && event.getRepeatCount() == 0
- && mPopupWindow != null
- && mPopupWindow.isShowing()) {
- isShowPopupBg(false);
- }
- return false;
- }
- });
-
- contentView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- isShowPopupBg(false);
+ resetFragment();
}
});
}
- private void moveToPosition(int n, boolean isSmooth) {
- int firstItem = layoutManager.findFirstVisibleItemPosition();
- int lastItem = layoutManager.findLastVisibleItemPosition();
- if (n <= firstItem) {
- if (isSmooth) {
- mRecyclerView.smoothScrollToPosition(n);
- } else {
- mRecyclerView.scrollToPosition(n);
- }
- } else if (n <= lastItem) {
- int top = layoutManager.findViewByPosition(n).getTop();
- if (isSmooth) {
- mRecyclerView.smoothScrollBy(0, top);
- } else {
- mRecyclerView.scrollBy(0, top);
- }
- } else {
- if (isSmooth) {
- mRecyclerView.smoothScrollToPosition(n);
- smoothMove = true;
- } else {
- mRecyclerView.scrollToPosition(n);
- move = true;
- }
- }
-
+ private void resetFragment() {
+ mResetTv.setVisibility(View.GONE);
+ FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
+ fragmentTransaction.remove(mGameKaiFuFragment);
+ fragmentTransaction.show(mKaiFuFragment);
+ fragmentTransaction.commit();
}
- public void isShowPopupBg(boolean isShow) {
- if (isShow) {
- mPopupBg.setVisibility(View.VISIBLE);
- mPopupBg.animate()
- .alpha(1f)
- .setDuration(300)
- .setListener(null);
- } else {
- mPopupWindow.dismiss();
- mPopupBg.animate()
- .alpha(0f)
- .setDuration(300)
- .setListener(new Animator.AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animation) {
-
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- mPopupBg.setVisibility(View.GONE);
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
-
- }
-
- @Override
- public void onAnimationRepeat(Animator animation) {
-
- }
-
- });
- }
-
- }
-
- @Override
- public void onPause() {
- super.onPause();
- isEverpause = true;
- DownloadManager.getInstance(getApplicationContext()).removeObserver(dataWatcher);
- }
-
- @Override
- public void onResume() {
- super.onResume();
- if (isEverpause) {
- for (GameEntity entity : mAdapter.getSubjectList()) {
- entity.setEntryMap(DownloadManager.getInstance(this).getEntryMap(entity.getName()));
- }
- }
- isEverpause = false;
- DownloadManager.getInstance(getApplicationContext()).addObserver(dataWatcher);
- }
-
- @Override
- public void loadDone() {
- mNoData.setVisibility(View.GONE);
- if (mPbLoading != null && mPbLoading.getVisibility() == View.VISIBLE) {
- mPbLoading.setVisibility(View.GONE);
- }
-
- if (mRefreshLayout.isRefreshing()) {
- mRefreshLayout.setRefreshing(false);
- }
- }
-
- @Override
- public void loadDone(Object obj) {
- kaifuOffset = (int) obj;
- }
-
- @Override
- public void loadError() {
- if (mPbLoading != null && mPbLoading.getVisibility() == View.VISIBLE) {
- mPbLoading.setVisibility(View.GONE);
- }
- toast("加载失败,请检查网络状态");
- mPbLoading.setVisibility(View.GONE);
- mNoData.setVisibility(View.GONE);
- mNoConnection.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void loadEmpty() {
- mNoData.setVisibility(View.VISIBLE);
- mNoConnection.setVisibility(View.GONE);
- }
-
- @Override
- public void selectPosition(int position, String tag, String gameName) {
- mDialogGamePosition = position;
- if (!TextUtils.isEmpty(gameName)) {
- mGameName.setText(gameName);
- } else {
- mGameName.setText(tag);
- }
- isShowPopupBg(false);
-
- kaifuOffset = 0;
- kaifuType = tag;
-
- mRecyclerView.setVisibility(View.VISIBLE);
- mPbLoading.setVisibility(View.VISIBLE);
- mNoConnection.setVisibility(View.GONE);
- mNoData.setVisibility(View.GONE);
-
- mAdapter = new KaiFuAdapter(this, this, this, kaifuType);
- mRecyclerView.setAdapter(mAdapter);
-
- }
-
- // 下载被删除事件
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onEventMainThread(EBDownloadStatus status) {
- if ("delete".equals(status.getStatus())) {
- DownloadManager.getInstance(this).removePlatform(status.getName(), status.getPlatform());
-
- ArrayList locationList = mAdapter.getLocationMap().get(status.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
-
- gameEntity = mAdapter.getSubjectList().get(location - getGameEntityIndex());
- if (gameEntity != null && gameEntity.getEntryMap() != null) {
- gameEntity.getEntryMap().remove(status.getPlatform());
- }
- mAdapter.notifyItemChanged(location);
- }
- }
- }
- }
-
- private int getGameEntityIndex() {
- if (kaifuOffset != 0) {
- return 1;
- }
- return 0;
- }
@Subscribe(threadMode = ThreadMode.MAIN)
- public void onEventMainThread(EBPackage busFour) {
- ArrayList locationList = mAdapter.getLocationMap().get(busFour.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
- if ("安装".equals(busFour.getType())) {
- gameEntity = mAdapter.getSubjectList().get(location - getGameEntityIndex());
- for (ApkEntity apkEntity : gameEntity.getApk()) {
- if (apkEntity.getPackageName().equals(busFour.getPackageName())) {
- if (gameEntity.getEntryMap() != null) {
- gameEntity.getEntryMap().remove(apkEntity.getPlatform());
- }
- mAdapter.notifyItemChanged(location + getGameEntityIndex());
- break;
- }
- }
- } else if ("卸载".equals(busFour.getType())) {
- mAdapter.notifyItemChanged(location + getGameEntityIndex());
- }
- }
+ public void onEventMainThread(EBKaiFuReset reset) {
+ if (SINGLE_GAME_KAIFU.equals(reset.getControl())) {
+ mResetTv.setVisibility(View.VISIBLE);
+
+ FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
+ fragmentTransaction.hide(mKaiFuFragment);
+
+ Bundle args = new Bundle();
+ args.putString("gameId", reset.getGameId());
+
+ mGameKaiFuFragment = new KaiFuFragment();
+ mGameKaiFuFragment.setArguments(args);
+
+ fragmentTransaction.add(R.id.layout_fragment_content, mGameKaiFuFragment, KaiFuFragment.class.getSimpleName());
+ fragmentTransaction.commit();
+ } else if (ALL_GAME_KAIFU.equals(reset.getControl())) {
+ resetFragment();
}
}
- //连接上网络事件
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onEventMainThread(EBNetworkState busNetworkState) {
- if (busNetworkState.isNetworkConnected()) {
- if (mNoConnection.getVisibility() == View.VISIBLE) {
- mRecyclerView.setVisibility(View.VISIBLE);
- mPbLoading.setVisibility(View.VISIBLE);
- mNoConnection.setVisibility(View.GONE);
- mAdapter = new KaiFuAdapter(this, this, this, kaifuType);
- mRecyclerView.setAdapter(mAdapter);
- }
- }
- }
-
- @Override
- public void onScroll(int scrollPosition) {
- mInitMovePosition = scrollPosition + getGameEntityIndex() + 1;
- moveToPosition(mInitMovePosition, false);
- }
-
- @Override
- public void onRefresh() {
- mRecyclerView.postDelayed(runnable, 1000);
- }
}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java
deleted file mode 100644
index 67b92af434..0000000000
--- a/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java
+++ /dev/null
@@ -1,596 +0,0 @@
-package com.gh.gamecenter.adapter;
-
-import android.support.v4.util.ArrayMap;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.text.TextUtils;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-import android.widget.Toast;
-
-import com.gh.base.OnRequestCallBackListener;
-import com.gh.common.constant.ItemViewType;
-import com.gh.common.util.ApkActiveUtils;
-import com.gh.common.util.DataCollectionUtils;
-import com.gh.common.util.DataUtils;
-import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.ImageUtils;
-import com.gh.common.util.KaiFuUtils;
-import com.gh.common.util.StringUtils;
-import com.gh.download.DownloadManager;
-import com.gh.gamecenter.GameDetailActivity;
-import com.gh.gamecenter.KaiFuActivity;
-import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
-import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
-import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder;
-import com.gh.gamecenter.entity.ApkEntity;
-import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.entity.KaiFuServerEntity;
-import com.gh.gamecenter.manager.GameManager;
-import com.gh.gamecenter.retrofit.JSONObjectResponse;
-import com.gh.gamecenter.retrofit.Response;
-import com.gh.gamecenter.retrofit.RetrofitManager;
-import com.lightgame.adapter.BaseRecyclerAdapter;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import retrofit2.HttpException;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
-
-/**
- * Created by khy on 2017/3/16.
- */
-public class KaiFuAdapter extends BaseRecyclerAdapter {
-
- private OnRequestCallBackListener mOnRequestCallBackListener;
- private OnScrollToKaiFuIndexListener mOnScrollToKaiFuIndexListener;
-
- private List mSubjectList;
-
- private ArrayMap> mLocationMap;
-
- private String mKaifuType;
-
- private int mKaifuIndex = 0; // 开服零界点
- private int mInitOffset;
- private int mLoadCountTop; // 记录加载数量 上
- private int mLoadCountBottom;// 记录加载数量 下
-
- private long mTopLastTime;
- private long mBottomLastTime;
-
- private boolean mIsRemoveBottom;
- private boolean mIsRemoveTop;
- private boolean mIsNetworkError;
- private boolean mIsLoadedBottom;
- private boolean mIsLoadedTop;
-
- public KaiFuAdapter(KaiFuActivity context, OnRequestCallBackListener callBackListener,
- OnScrollToKaiFuIndexListener scrollToKaiFuIndexListener, String kaifuType) {
- super(context);
- mOnRequestCallBackListener = callBackListener;
- mKaifuType = kaifuType;
- mOnScrollToKaiFuIndexListener = scrollToKaiFuIndexListener;
-
- mLocationMap = new ArrayMap<>();
-
- mSubjectList = new ArrayList<>();
- mIsLoadedTop = false;
- mIsLoadedBottom = false;
- mIsNetworkError = false;
-
- mKaifuIndex = 0;
- mLoadCountBottom = 0;
- mLoadCountTop = 0;
-
- if ("全部".equals(kaifuType)) {
- this.mKaifuType = "all";
- }
-
- initKaiFuOffset();
- }
-
- public void initKaiFuOffset() {
- RetrofitManager.getApi()
- .getKaiFuOffset(mKaifuType)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new JSONObjectResponse() {
- @Override
- public void onResponse(JSONObject response) {
- super.onResponse(response);
- JSONObject jsonObject = response;
- int offset = 0;
- try {
- offset = jsonObject.getInt("offset");
- } catch (JSONException e) {
- e.printStackTrace();
- }
- mInitOffset = offset;
- mOnRequestCallBackListener.loadDone(offset);
- initListBottom(offset);
- }
-
- @Override
- public void onFailure(HttpException e) {
- super.onFailure(e);
- mOnRequestCallBackListener.loadError();
- }
- });
-
- }
-
- public void initListTop(final int offset, int limit) {
-
- mIsLoadedTop = false;
- RetrofitManager.getApi().getKaiFuData(mKaifuType, offset, limit)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Response>() {
- @Override
- public void onResponse(List response) {
-
- GameManager manager = new GameManager(mContext);
- if (response.size() != 0) {
- for (int i = 0; i < response.size(); i++) {
- GameEntity entity = response.get(i);
-// if (i < response.size() - 1) {
-// GameEntity lastEntity = response.get(i + 1);
-//
-// KaiFuServerEntity curServerEntity = entity.getServerEntity();
-// KaiFuServerEntity lastServerEntity = lastEntity.getServerEntity();
-//
-// if (i == 0 && curServerEntity != null && mTopLastTime > 0) {
-// KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mTopLastTime, entity, true);
-// }
-// if (curServerEntity == null || lastServerEntity == null) return;
-//
-// long curTime = curServerEntity.getTime() * 1000;
-// long lastTime = lastServerEntity.getTime() * 1000;
-// KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, entity, true);
-// } else { // response.size == 1
-// KaiFuServerEntity curServerEntity = entity.getServerEntity();
-// if (i == 0 && curServerEntity != null && mTopLastTime > 0) {
-// KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mTopLastTime, entity, true);
-// }
-// }
-
-
- // 黄壮华 初始化游戏状态 修改2015/8/15
- entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName()));
- manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName());
-
- ApkActiveUtils.filterHideApk(entity);
- }
- mTopLastTime = response.get(0).getServerEntity().getTime() * 1000;
-
- mSubjectList.addAll(0, response);
- notifyItemRangeInserted(0, response.size());
-
- if (response.size() < 20 || offset == 0) {
- mIsRemoveTop = true;
- notifyItemChanged(getItemCount() - 1);
- }
-
- mLoadCountTop = mLoadCountTop + response.size();
- } else {
- mIsRemoveTop = true;
- notifyDataSetChanged();
- }
-
- initLocationMap();
- mIsLoadedTop = true;
- }
-
- @Override
- public void onFailure(HttpException e) {
- if (offset == mInitOffset) {
- if (mOnRequestCallBackListener != null) {
- mOnRequestCallBackListener.loadError();
- }
- } else {
- Toast.makeText(mContext, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
-
- mIsNetworkError = true;
- notifyDataSetChanged();
- }
- }
- });
- }
-
- public void initListBottom(final int offset) {
-
- mIsLoadedBottom = false;
- RetrofitManager.getApi().getKaiFuData(mKaifuType, offset, 20)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Response>() {
- @Override
- public void onResponse(List response) {
-
- GameManager manager = new GameManager(mContext);
- if (response.size() != 0) {
-
- if (offset == mInitOffset) {
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.HOUR_OF_DAY, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- long curTime = calendar.getTimeInMillis() / 1000;
-
- for (int i = 0; i < response.size(); i++) {
- long time = response.get(i).getServerEntity().getTime();
- long l = time - curTime;
- if (l > 0) {
- mKaifuIndex = i;
- break;
- }
-
- if (mKaifuIndex == 0 && i == response.size() - 1) {
- mKaifuIndex = i + 1;
- }
- }
- }
-
- for (int i = 0; i < response.size(); i++) {
- GameEntity entity = response.get(i);
- if (i < response.size() - 1) {
- GameEntity lastEntity = response.get(i + 1);
- KaiFuServerEntity curServerEntity = entity.getServerEntity();
- KaiFuServerEntity lastServerEntity = lastEntity.getServerEntity();
-
- if (i == 0 && curServerEntity != null && mBottomLastTime > 0) {
- KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mBottomLastTime, entity, true);
- entity.setShowTop(true);
- }
- if (curServerEntity == null || lastServerEntity == null) return;
-
- long curTime = curServerEntity.getTime() * 1000;
- long lastTime = lastServerEntity.getTime() * 1000;
-
-
- if (offset == mInitOffset) {
-// if (mKaifuIndex >= i + 1) {
-//// KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, entity, true);
-// } else if (mKaifuIndex <= i - 1) {
- KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, lastEntity, false);
- lastEntity.setShowTop(true);
-// } else {
-//// KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, lastEntity, false);
-//// KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, entity, true);
-//// entity.setShowTop(true);
-// }
-
- } else {
- KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, lastEntity, false);
- lastEntity.setShowTop(true);
- }
- } else {
- KaiFuServerEntity curServerEntity = entity.getServerEntity();
- if (i == 0 && curServerEntity != null && mBottomLastTime > 0) {
- KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mBottomLastTime, entity, true);
- entity.setShowTop(true);
- }
- }
-
- // 黄壮华 初始化游戏状态 修改2015/8/15
- entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName()));
- manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName());
- ApkActiveUtils.filterHideApk(entity);
- }
-
- mBottomLastTime = response.get(response.size() - 1).getServerEntity().getTime() * 1000;
- mTopLastTime = response.get(0).getServerEntity().getTime() * 1000;
-
- mSubjectList.addAll(response);
- notifyItemRangeInserted(getItemCount() - 1 - response.size(), response.size());
-
- if (offset == mInitOffset) {
- mIsLoadedTop = true; //首次加载 手动设置下拉加载完成
- mLoadCountTop = response.size();//首次加载 下拉加载减去初始加载值 获取正确偏移量
-
- mSubjectList.add(mKaifuIndex, new GameEntity()); // 添加一个空的实体当做 零界点ITEM
-
- int locationTop = mKaifuIndex - 1;
- if (locationTop > 0) {
- GameEntity gameEntity = mSubjectList.get(locationTop);
- gameEntity.setShowTop(false);
- if (gameEntity.getKaifuTimeHint() == null) {
- gameEntity.setKaifuTimeHint(gameEntity.getServerEntity().getTime() * 1000);
- }
- }
-
- int locationBottom = mKaifuIndex + 1;
- if (locationBottom < mSubjectList.size()) {
- GameEntity gameEntity = mSubjectList.get(locationBottom);
- if (gameEntity.getKaifuTimeHint() == null) {
- gameEntity.setKaifuTimeHint(gameEntity.getServerEntity().getTime() * 1000);
- gameEntity.setShowTop(true);
- }
- }
-
- }
-
- if (response.size() < 20) {
- mIsRemoveBottom = true;
- notifyItemChanged(getItemCount() - 1);
- }
-
- mLoadCountBottom = mLoadCountBottom + response.size();
- } else {
- mIsRemoveBottom = true;
- notifyDataSetChanged();
- }
-
- initLocationMap();
-
- if (mOnRequestCallBackListener != null) {
- if (mSubjectList.size() == 0) {
- mOnRequestCallBackListener.loadEmpty();
- } else {
- mOnRequestCallBackListener.loadDone();
- }
- }
-
- mIsLoadedBottom = true;
-
- if (offset == mInitOffset) { //定位到开服零界点
- mOnScrollToKaiFuIndexListener.onScroll(mKaifuIndex - 1);
- }
- }
-
- @Override
- public void onFailure(HttpException e) {
- if (offset == mInitOffset) {
- if (mOnRequestCallBackListener != null) {
- mOnRequestCallBackListener.loadError();
- }
- } else {
- Toast.makeText(mContext, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
-
- mIsNetworkError = true;
- notifyDataSetChanged();
- }
- }
- });
- }
-
- private void initLocationMap() {
-
- ArrayList list;
- GameEntity gameEntity;
- for (int i = 0, size = mSubjectList.size(); i < size; i++) {
-
- int index = 0;
- if (mInitOffset != 0) {
- index++;
- }
-
- gameEntity = mSubjectList.get(i);
- if (gameEntity.getApk() != null && gameEntity.getApk().size() != 0) {
- for (ApkEntity apkEntity : gameEntity.getApk()) {
- list = mLocationMap.get(apkEntity.getPackageName());
- if (list == null) {
- list = new ArrayList<>();
- mLocationMap.put(apkEntity.getPackageName(), list);
- }
- list.add(i + index);
- }
- }
-
- }
- }
-
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
- View view;
- switch (viewType) {
- case ItemViewType.LOADING:
- view = mLayoutInflater.inflate(R.layout.refresh_footerview, viewGroup, false);
- return new FooterViewHolder(view);
- case ItemViewType.GAME_TEST:
- view = mLayoutInflater.inflate(R.layout.game_test_item, viewGroup, false);
- return new GameTestViewHolder(view);
- case 100:
- view = new View(mContext);
- view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(mContext, 4)));
- return new ReuseViewHolder(view);
- default:
- return null;
- }
- }
-
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
- int index = 0;
- if (mInitOffset != 0) {
- index++;
- }
-
- if (viewHolder instanceof GameTestViewHolder) {
- initGameTestViewHolder((GameTestViewHolder) viewHolder, position - index);
- } else if (viewHolder instanceof FooterViewHolder) {
- initFooterViewHolder((FooterViewHolder) viewHolder, position);
- }
- }
-
- @Override
- public int getItemViewType(int position) {
-
- int index = 0;
- if (mInitOffset != 0) {
- index++;
- }
-
- if (position == getItemCount() - 1 || (position == 0 && mInitOffset != 0)) {
- return ItemViewType.LOADING;
- }
- if (TextUtils.isEmpty(mSubjectList.get(position - index).getId())) {
- return 100;
- } else {
- return ItemViewType.GAME_TEST;
- }
- }
-
- @Override
- public int getItemCount() {
- if (mSubjectList.size() < 1) {
- return 0;
- }
- if (mInitOffset != 0) {
- return mSubjectList.size() + 2;
- }
- return mSubjectList.size() + 1;
- }
-
- private void initGameTestViewHolder(final GameTestViewHolder holder, int position) {
-
- holder.gameOrder.setVisibility(View.GONE);
-
- final GameEntity gameEntity = mSubjectList.get(position);
-
- KaiFuUtils.setKaiFuTimeHint(holder.kaifuTop, holder.kaifuBottom, mSubjectList, position);
-
- if (gameEntity.getKaifuTimeHint() != null) {
- if (gameEntity.isShowTop()) {
- holder.kaifuTop.setVisibility(View.VISIBLE);
- holder.kaifuBottom.setVisibility(View.GONE);
- KaiFuUtils.initKaiFuTimeHintView(holder.kaifuTop, gameEntity.getKaifuTimeHint());
- } else {
- holder.kaifuBottom.setVisibility(View.VISIBLE);
- holder.kaifuTop.setVisibility(View.GONE);
- KaiFuUtils.initKaiFuTimeHintView(holder.kaifuBottom, gameEntity.getKaifuTimeHint());
- }
- } else {
- holder.kaifuBottom.setVisibility(View.GONE);
- holder.kaifuTop.setVisibility(View.GONE);
- }
-
- ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon());
- holder.gameName.setText(gameEntity.getName());
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- holder.gameDes.setText(gameEntity.getBrief());
- } else {
- holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
- }
-
- KaiFuUtils.setKaiFuTime(holder.gameTestType, gameEntity.getServerEntity().getTime());
- String type = gameEntity.getServerEntity().getType();
- if ("不删档内测".equals(type) || "删档内测".equals(type)) {
- KaiFuUtils.setKaiFuType(holder.gameTestTime, gameEntity.getServerEntity().getType());
- } else if ("公测".equals(type)) {
- String note = gameEntity.getServerEntity().getNote();
- if (TextUtils.isEmpty(note)) {
- KaiFuUtils.setKaiFuType(holder.gameTestTime, gameEntity.getServerEntity().getType());
- } else {
- KaiFuUtils.setKaiFuType(holder.gameTestTime, gameEntity.getServerEntity().getType() + ":" + note);
- }
- } else {
- KaiFuUtils.setKaiFuType(holder.gameTestTime, gameEntity.getServerEntity().getNote());
- }
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Map kv = new HashMap<>();
- kv.put("名字", gameEntity.getName());
- kv.put("位置", String.valueOf(holder.getPosition() + 1));
- DataUtils.onEvent(mContext, "点击", "开服表", kv);
-
- DataCollectionUtils.uploadClick(mContext, "列表", "开服表", gameEntity.getName());
-
- GameDetailActivity.startGameDetailActivity(mContext, gameEntity, StringUtils.buildString("主页-游戏", "+("
- , "开服表", "[", String.valueOf(holder.getPosition()), "])"));
- }
- });
-
- DownloadItemUtils.setOnClickListener(mContext,
- holder.gameDownloadBtn, gameEntity, position,
- KaiFuAdapter.this, StringUtils.buildString("主页游戏", "+(", "开服表", "[", String.valueOf(holder.getPosition()), "])")
- , "开服表 :" + gameEntity.getName());
-
- DownloadItemUtils.updateItem(mContext, gameEntity, holder, true);
- }
-
- private void initFooterViewHolder(FooterViewHolder viewHolder, final int position) {
- viewHolder.initItemPadding();
- if (mIsNetworkError) {
- viewHolder.loading.setVisibility(View.GONE);
- viewHolder.hint.setText("加载失败,点击重试");
- viewHolder.itemView.setClickable(true);
- viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mIsNetworkError = false;
- notifyDataSetChanged();
- if (position == getItemCount() - 1) {
- initListBottom(mKaifuIndex + mLoadCountBottom);
- } else {
- int offset = mKaifuIndex - mLoadCountTop;
- int limit = 20;
- if (offset < 0) {
- limit = limit + offset;
- offset = 0;
- }
- initListTop(offset, limit);
- }
- }
- });
- } else if ((mIsRemoveBottom && position == getItemCount() - 1)
- || (mIsRemoveTop && position == 0)) {
- viewHolder.loading.setVisibility(View.GONE);
- viewHolder.hint.setText("加载完毕");
- viewHolder.itemView.setClickable(false);
- viewHolder.lineLeft.setVisibility(View.VISIBLE);
- viewHolder.lineRight.setVisibility(View.VISIBLE);
- } else {
- viewHolder.loading.setVisibility(View.VISIBLE);
- viewHolder.hint.setText(R.string.loading);
- viewHolder.itemView.setClickable(false);
- }
- }
-
- public List getSubjectList() {
- return mSubjectList;
- }
-
- public ArrayMap> getLocationMap() {
- return mLocationMap;
- }
-
- public boolean isLoadedBottom() {
- return mIsLoadedBottom;
- }
-
- public boolean isLoadedTop() {
- return mIsLoadedTop;
- }
-
- public int loadCountTop() {
- return mLoadCountTop;
- }
-
- public int loadCountBottom() {
- return mLoadCountBottom;
- }
-
- public int getLoadCountTop() {
- return mLoadCountTop;
- }
-
- public interface OnScrollToKaiFuIndexListener {
- void onScroll(int scrollPosition);
- }
-}
diff --git a/app/src/main/java/com/gh/gamecenter/eventbus/EBKaiFuReset.java b/app/src/main/java/com/gh/gamecenter/eventbus/EBKaiFuReset.java
new file mode 100644
index 0000000000..0358febdbf
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/eventbus/EBKaiFuReset.java
@@ -0,0 +1,32 @@
+package com.gh.gamecenter.eventbus;
+
+/**
+ * Created by khy on 20/08/17.
+ */
+
+public class EBKaiFuReset {
+
+ private String control;
+ private String gameId;
+
+ public EBKaiFuReset(String control, String gameId) {
+ this.control = control;
+ this.gameId = gameId;
+ }
+
+ public String getControl() {
+ return control;
+ }
+
+ public void setControl(String control) {
+ this.control = control;
+ }
+
+ public String getGameId() {
+ return gameId;
+ }
+
+ public void setGameId(String gameId) {
+ this.gameId = gameId;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java
index c6b568c5ec..06acde7b55 100644
--- a/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java
@@ -239,11 +239,6 @@ public class GameFragment extends BaseFragment implements SwipeRefreshLayout.OnR
final ApkEntity normalApkEntity = apkEntities.get(0);
if (normalApkEntity.getPackageName().equals(busFour.getPackageName())) {
-// if ("卸载".equals(busFour.getType())
-// && DownloadManager.getInstance(getContext()).getDownloadEntityByUrl(
-// normalApkEntity.getUrl()) != null) {
-// adapter.notifyItemChanged(1); // TODO 有任务正在下载中,就算删除依然保留插件化??但是刷新好像也没什么用 @苏哥
-// } else {
// 安装完成 插件化区域消失
list.remove(i);
if (list.isEmpty()) {
diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java
new file mode 100644
index 0000000000..1553a4440a
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java
@@ -0,0 +1,115 @@
+package com.gh.gamecenter.kaifu;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.view.ViewPager;
+import android.view.View;
+import android.widget.CheckedTextView;
+import android.widget.LinearLayout;
+
+import com.gh.base.adapter.FragmentAdapter;
+import com.gh.base.fragment.BaseFragment;
+import com.gh.gamecenter.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+/**
+ * Created by khy on 20/08/17.
+ */
+
+public class KaiFuFragment extends BaseFragment {
+
+ @BindView(R.id.kaifu_tabbar_today)
+ CheckedTextView mKaifuTabbarToday;
+ @BindView(R.id.kaifu_tabbar_tomorrow)
+ CheckedTextView mKaifuTabbarTomorrow;
+ @BindView(R.id.kaifu_tabbar_future)
+ CheckedTextView mKaifuTabbarFuture;
+ @BindView(R.id.kaifu_tabbar)
+ LinearLayout mKaifuTabbar;
+ @BindView(R.id.kaifu_content_vp)
+ ViewPager mKaifuContentVp;
+
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.fragment_kaifu;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ List fragments = new ArrayList<>();
+ for (int i = 0; i < 3; i++) {
+ KaiFuVpFragment kaiFuVpFragment = new KaiFuVpFragment();
+ if (getArguments() != null) {
+ kaiFuVpFragment.setArguments(getArguments());
+ }
+ fragments.add(kaiFuVpFragment);
+ }
+ FragmentAdapter fragmentAdapter = new FragmentAdapter(getChildFragmentManager(), fragments);
+
+ setTabbarPosition(0);
+ mKaifuContentVp.setAdapter(fragmentAdapter);
+ mKaifuContentVp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ setTabbarPosition(position);
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+
+ }
+ });
+ }
+
+ @OnClick({R.id.kaifu_tabbar_today, R.id.kaifu_tabbar_tomorrow, R.id.kaifu_tabbar_future})
+ public void onViewClicked(View view) {
+ switch (view.getId()) {
+ case R.id.kaifu_tabbar_today:
+ setTabbarPosition(0);
+ mKaifuContentVp.setCurrentItem(0);
+ break;
+ case R.id.kaifu_tabbar_tomorrow:
+ setTabbarPosition(1);
+ mKaifuContentVp.setCurrentItem(1);
+ break;
+ case R.id.kaifu_tabbar_future:
+ setTabbarPosition(2);
+ mKaifuContentVp.setCurrentItem(2);
+ break;
+ }
+ }
+
+ private void setTabbarPosition(int index) {
+ switch (index) {
+ case 0:
+ mKaifuTabbarToday.setChecked(true);
+ mKaifuTabbarFuture.setChecked(false);
+ mKaifuTabbarTomorrow.setChecked(false);
+ break;
+ case 1:
+ mKaifuTabbarToday.setChecked(false);
+ mKaifuTabbarFuture.setChecked(false);
+ mKaifuTabbarTomorrow.setChecked(true);
+ break;
+ case 2:
+ mKaifuTabbarToday.setChecked(false);
+ mKaifuTabbarFuture.setChecked(true);
+ mKaifuTabbarTomorrow.setChecked(false);
+ break;
+ }
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuTimeViewHolder.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuTimeViewHolder.java
new file mode 100644
index 0000000000..55f6c11a2b
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuTimeViewHolder.java
@@ -0,0 +1,23 @@
+package com.gh.gamecenter.kaifu;
+
+import android.view.View;
+import android.widget.TextView;
+
+import com.gh.base.BaseRecyclerViewHolder;
+import com.gh.gamecenter.R;
+
+import butterknife.BindView;
+
+/**
+ * Created by khy on 18/08/17.
+ */
+
+public class KaiFuTimeViewHolder extends BaseRecyclerViewHolder {
+
+ @BindView(R.id.kaifu_item_time_tv)
+ TextView time;
+
+ public KaiFuTimeViewHolder(View itemView) {
+ super(itemView);
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java
new file mode 100644
index 0000000000..738127d87a
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java
@@ -0,0 +1,384 @@
+package com.gh.gamecenter.kaifu;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.Color;
+import android.support.v4.content.ContextCompat;
+import android.support.v4.util.ArrayMap;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.gh.base.OnRequestCallBackListener;
+import com.gh.common.util.ApkActiveUtils;
+import com.gh.common.util.DisplayUtils;
+import com.gh.common.util.DownloadItemUtils;
+import com.gh.common.util.KaiFuUtils;
+import com.gh.common.util.StringUtils;
+import com.gh.download.DownloadManager;
+import com.gh.gamecenter.GameDetailActivity;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
+import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
+import com.gh.gamecenter.entity.ApkEntity;
+import com.gh.gamecenter.entity.GameEntity;
+import com.gh.gamecenter.entity.KaiFuServerEntity;
+import com.gh.gamecenter.eventbus.EBKaiFuReset;
+import com.gh.gamecenter.manager.GameManager;
+import com.gh.gamecenter.retrofit.Response;
+import com.gh.gamecenter.retrofit.RetrofitManager;
+import com.lightgame.adapter.BaseRecyclerAdapter;
+
+import org.greenrobot.eventbus.EventBus;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import retrofit2.HttpException;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
+
+import static com.gh.gamecenter.KaiFuActivity.ALL_GAME_KAIFU;
+import static com.gh.gamecenter.KaiFuActivity.SINGLE_GAME_KAIFU;
+
+
+/**
+ * Created by khy on 18/08/17.
+ */
+
+public class KaiFuVpAdapter extends BaseRecyclerAdapter {
+
+ private OnRequestCallBackListener mOnCallBackListener;
+
+ private List mEntityList;
+ private ArrayMap> mLocationMap;
+
+ private int mDataCount;
+ private String mGameId;
+
+ private boolean mIsRemove;
+ private boolean mIsNetworkError;
+ private boolean mIsLoaded;
+
+ public KaiFuVpAdapter(Context context, OnRequestCallBackListener onCallBackListener, String gameId) {
+ super(context);
+
+ mGameId = gameId;
+ mOnCallBackListener = onCallBackListener;
+ mLocationMap = new ArrayMap<>();
+ mEntityList = new ArrayList<>();
+ addList(0);
+ }
+
+ public void addList(int offset) {
+ mIsLoaded = false;
+ RetrofitManager.getApi()
+ .getKaiFuData(mGameId, offset, 20)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Response>(){
+ @Override
+ public void onResponse(List response) {
+ super.onResponse(response);
+ mDataCount += response.size();
+
+ if (mEntityList.size() == 0) { // TODO 获取开服表当前整点时间位置
+
+ }
+
+ if (response.size() < 20) mIsRemove = true;
+
+ GameManager manager = new GameManager(mContext);
+ for (int i = 0; i < response.size(); i++) {
+ // 初始化游戏状态
+ response.get(i).setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(response.get(i).getName()));
+ manager.addOrUpdate(response.get(i).getApk(), response.get(i).getId(), response.get(i).getName());
+ ApkActiveUtils.filterHideApk(response.get(i)); // 过滤隐藏apk
+ // 设置时间断点
+ if (i == 0) {
+ if (mEntityList.size() == 0) {
+ GameEntity kaiFuTimeEntity = new GameEntity();
+ kaiFuTimeEntity.setKaifuTimeHint(response.get(i).getServerEntity().getTime());
+ response.add(i, kaiFuTimeEntity);
+ i++;
+ continue;
+ } else {
+ GameEntity gameEntity = mEntityList.get(mEntityList.size() - 1);
+ long time = gameEntity.getServerEntity().getTime();
+ long nextTime = response.get(i).getServerEntity().getTime();
+ if (time != nextTime) {
+ GameEntity kaiFuTimeEntity = new GameEntity();
+ kaiFuTimeEntity.setKaifuTimeHint(nextTime);
+ response.add(i, kaiFuTimeEntity);
+ i++;
+ continue;
+ }
+ }
+ }
+
+ if (i < response.size() - 1) {
+ KaiFuServerEntity serverEntity = response.get(i).getServerEntity();
+ KaiFuServerEntity nextServerEntity = response.get(i + 1).getServerEntity();
+ if (serverEntity == null || nextServerEntity == null) continue;
+
+ long time = serverEntity.getTime();
+ long nextTime = nextServerEntity.getTime();
+
+ if (time != nextTime) {
+ GameEntity kaiFuTimeEntity = new GameEntity();
+ kaiFuTimeEntity.setKaifuTimeHint(nextTime);
+ response.add(i + 1,kaiFuTimeEntity);
+ i++;
+ }
+ }
+
+ }
+
+ mEntityList.addAll(response);
+ notifyItemRangeInserted(mEntityList.size() - response.size(), response.size());
+
+ initLocationMap();
+
+ if (mEntityList.size() == 0) {
+ mOnCallBackListener.loadEmpty();
+ } else {
+ mOnCallBackListener.loadDone();
+ }
+
+ mIsLoaded = true;
+ }
+
+ @Override
+ public void onFailure(HttpException e) {
+ super.onFailure(e);
+
+ mIsLoaded = true;
+ if (mEntityList.size() == 0) {
+ mOnCallBackListener.loadError();
+ } else {
+ mIsNetworkError = true;
+ }
+ }
+ });
+ }
+
+ private void initLocationMap() {
+ ArrayList list;
+ GameEntity gameEntity;
+ for (int i = 0, size = mEntityList.size(); i < size; i++) {
+ gameEntity = mEntityList.get(i);
+ if (gameEntity.getApk() != null && gameEntity.getApk().size() != 0) {
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ list = mLocationMap.get(apkEntity.getPackageName());
+ if (list == null) {
+ list = new ArrayList<>();
+ mLocationMap.put(apkEntity.getPackageName(), list);
+ }
+ list.add(i);
+ }
+ }
+ }
+ }
+
+
+ @Override
+ public int getItemViewType(int position) {
+
+ if (mEntityList.size() == position) {
+ return 0;
+ }
+
+ GameEntity gameEntity = mEntityList.get(position);
+ if (gameEntity.getKaifuTimeHint() != null && gameEntity.getKaifuTimeHint() != 0) {
+ return 1;
+ }
+ return 2;
+ }
+
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ if (viewType == 0) {
+ return new FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false));
+ } else if (viewType == 1) {
+ return new KaiFuTimeViewHolder(mLayoutInflater.inflate(R.layout.kaifu_item_time, parent, false));
+ } else {
+ return new GameTestViewHolder(mLayoutInflater.inflate(R.layout.game_test_item, parent, false));
+ }
+ }
+
+ @Override
+ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+
+ if (holder instanceof GameTestViewHolder) {
+ GameEntity gameEntity = mEntityList.get(position);
+ GameTestViewHolder viewHolder = (GameTestViewHolder) holder;
+ initGameTestViewHolder(gameEntity, viewHolder);
+ } else if (holder instanceof KaiFuTimeViewHolder){
+ GameEntity gameEntity = mEntityList.get(position);
+ SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd (EEEE) HH: mm", Locale.CHINA);
+ ((KaiFuTimeViewHolder) holder).time.setText(dateFm.format(gameEntity.getKaifuTimeHint() * 1000));
+ } else if (holder instanceof FooterViewHolder) {
+ FooterViewHolder viewHolder = (FooterViewHolder) holder;
+ initFooterViewHolder(viewHolder);
+ }
+ }
+
+
+
+ @Override
+ public int getItemCount() {
+ if (mEntityList.size() == 0) {
+ return 0;
+ }
+ return mEntityList.size() + 1;
+ }
+
+ private void initGameTestViewHolder(final GameEntity gameEntity, GameTestViewHolder viewHolder) {
+ viewHolder.gameName.setText(gameEntity.getName());
+ viewHolder.gameThumb.setImageURI(gameEntity.getIcon());
+
+ String type = gameEntity.getServerEntity().getType();
+ if ("不删档内测".equals(type) || "删档内测".equals(type)) {
+ KaiFuUtils.setKaiFuType(viewHolder.gameTestTime, gameEntity.getServerEntity().getType());
+ } else if ("公测".equals(type)) {
+ String note = gameEntity.getServerEntity().getNote();
+ if (TextUtils.isEmpty(note)) {
+ KaiFuUtils.setKaiFuType(viewHolder.gameTestTime, gameEntity.getServerEntity().getType());
+ } else {
+ KaiFuUtils.setKaiFuType(viewHolder.gameTestTime, gameEntity.getServerEntity().getType() + ":" + note);
+ }
+ } else {
+ KaiFuUtils.setKaiFuType(viewHolder.gameTestTime, gameEntity.getServerEntity().getNote());
+ }
+
+ if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
+ viewHolder.gameDes.setText(gameEntity.getBrief());
+ } else {
+ viewHolder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
+ }
+
+ KaiFuUtils.setKaiFuTime(viewHolder.gameTestType, gameEntity.getServerEntity().getTime());
+
+ DownloadItemUtils.setOnClickListener(mContext,
+ viewHolder.gameDownloadBtn, gameEntity, viewHolder.getAdapterPosition(), KaiFuVpAdapter.this,
+ StringUtils.buildString("首页-推荐入口", "+(", "开服表", "[", String.valueOf(viewHolder.getAdapterPosition() + 1), "])"),
+ StringUtils.buildString("开服表", ":", gameEntity.getName()));
+
+ DownloadItemUtils.updateItem(mContext, gameEntity, viewHolder, true);
+
+ viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showSkiptDialog(gameEntity);
+ }
+ });
+ }
+
+ private void showSkiptDialog(final GameEntity gameEntity) {
+
+ final Dialog dialog = new Dialog(mContext);
+
+ LinearLayout container = new LinearLayout(mContext);
+ container.setOrientation(LinearLayout.VERTICAL);
+ container.setBackgroundColor(Color.WHITE);
+ container.setPadding(0, DisplayUtils.dip2px(mContext, 12), 0, DisplayUtils.dip2px(mContext, 12));
+
+ final List dialogType = new ArrayList<>();
+
+ if (TextUtils.isEmpty(mGameId)) {
+ dialogType.add("只看这个游戏");
+ } else {
+ dialogType.add("返回所有游戏");
+ }
+ dialogType.add("进入游戏详情");
+
+ for (String s : dialogType) {
+ final TextView skipTv = new TextView(mContext);
+ skipTv.setText(s);
+ skipTv.setTextSize(17);
+ skipTv.setTextColor(ContextCompat.getColor(mContext, R.color.title));
+ skipTv.setBackgroundResource(R.drawable.textview_white_style);
+ int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels;
+ skipTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10,
+ LinearLayout.LayoutParams.WRAP_CONTENT));
+ skipTv.setPadding(DisplayUtils.dip2px(mContext, 20), DisplayUtils.dip2px(mContext, 12),
+ 0, DisplayUtils.dip2px(mContext, 12));
+ container.addView(skipTv);
+
+ skipTv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.cancel();
+ switch (skipTv.getText().toString()) {
+ case "只看这个游戏":
+ EventBus.getDefault().post(new EBKaiFuReset(SINGLE_GAME_KAIFU, gameEntity.getId()));
+ break;
+ case "进入游戏详情":
+ GameDetailActivity.startGameDetailActivity(mContext, gameEntity, "");
+ break;
+ case "返回所有游戏":
+ EventBus.getDefault().post(new EBKaiFuReset(ALL_GAME_KAIFU, gameEntity.getId()));
+ break;
+ }
+ }
+ });
+ }
+
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dialog.setContentView(container);
+ dialog.show();
+
+ }
+
+ private void initFooterViewHolder(FooterViewHolder viewHolder) {
+ if (mIsNetworkError) {
+ viewHolder.loading.setVisibility(View.GONE);
+ viewHolder.hint.setText("加载失败,点击重试");
+ viewHolder.itemView.setClickable(true);
+ viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mIsNetworkError = false;
+ notifyItemChanged(getItemCount() - 1);
+ addList(mDataCount);
+ }
+ });
+ } else if (mIsRemove) {
+ viewHolder.loading.setVisibility(View.GONE);
+ viewHolder.hint.setText("加载完毕");
+ viewHolder.itemView.setClickable(false);
+ viewHolder.lineLeft.setVisibility(View.VISIBLE);
+ viewHolder.lineRight.setVisibility(View.VISIBLE);
+ } else {
+ viewHolder.loading.setVisibility(View.VISIBLE);
+ viewHolder.hint.setText(R.string.loading);
+ viewHolder.itemView.setClickable(false);
+ }
+ }
+
+ public boolean isLoaded() {
+ return mIsLoaded;
+ }
+
+ public boolean isRemove() {
+ return mIsRemove;
+ }
+
+ public int getDataListCount() {
+ return mDataCount;
+ }
+
+ public List getDataList() {
+ return mEntityList;
+ }
+
+ public ArrayMap> getLocationMap() {
+ return mLocationMap;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java
new file mode 100644
index 0000000000..726e432bf7
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java
@@ -0,0 +1,224 @@
+package com.gh.gamecenter.kaifu;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
+import com.gh.base.fragment.BaseFragment;
+import com.gh.common.util.DisplayUtils;
+import com.gh.common.util.DownloadItemUtils;
+import com.gh.download.DownloadManager;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.entity.GameEntity;
+import com.gh.gamecenter.entity.KaiFuServerEntity;
+import com.gh.gamecenter.eventbus.EBDownloadStatus;
+import com.lightgame.download.DataWatcher;
+import com.lightgame.download.DownloadEntity;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+/**
+ * Created by khy on 18/08/17.
+ */
+
+public class KaiFuVpFragment extends BaseFragment {
+
+ @BindView(R.id.kaifu_rv)
+ RecyclerView mRecyclerView;
+ @BindView(R.id.kaifu_item_time_tv)
+ TextView mKaifuItemTimeTv;
+ @BindView(R.id.kaifu_item_time)
+ LinearLayout mKaiFuTimeLl;
+ @BindView(R.id.kaifu_pb_loading)
+ ProgressBarCircularIndeterminate mLoading;
+ @BindView(R.id.reuse_no_connection)
+ LinearLayout mNoConn;
+ @BindView(R.id.reuse_none_data)
+ LinearLayout mNoneData;
+
+ private KaiFuVpAdapter mAdapter;
+ private LinearLayoutManager mLayoutManager;
+
+ private RelativeLayout.LayoutParams mLlparams;
+
+ private String mGameId;
+
+ private DataWatcher dataWatcher = new DataWatcher() {
+ @Override
+ public void onDataChanged(DownloadEntity downloadEntity) {
+ ArrayList locationList = mAdapter.getLocationMap().get(downloadEntity.getPackageName());
+ if (locationList != null) {
+ GameEntity gameEntity;
+ for (int location : locationList) {
+ gameEntity = mAdapter.getDataList().get(location);
+ if (gameEntity != null) {
+ DownloadItemUtils.processDate(getContext(), gameEntity, downloadEntity,
+ mAdapter, location);
+ }
+ }
+ }
+ }
+ };
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.fragment_kaifu_vp;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Bundle arguments = getArguments();
+ if (arguments != null) {
+ mGameId = arguments.getString("gameId", "");
+ } else {
+ mGameId = "";
+ }
+
+
+ mLlparams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ DisplayUtils.dip2px(getContext(), 40));
+
+ ((DefaultItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
+ mLayoutManager = new LinearLayoutManager(getContext());
+ mRecyclerView.setLayoutManager(mLayoutManager);
+ mAdapter = new KaiFuVpAdapter(getContext(), this, mGameId);
+ mRecyclerView.setAdapter(mAdapter);
+
+ mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+ super.onScrollStateChanged(recyclerView, newState);
+ if (mLayoutManager.findLastVisibleItemPosition() == mAdapter.getItemCount() - 1
+ && newState == RecyclerView.SCROLL_STATE_IDLE && !mAdapter.isRemove() && mAdapter.isLoaded()) {
+ mAdapter.addList(mAdapter.getDataListCount());
+ }
+ }
+
+ @Override
+ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
+ super.onScrolled(recyclerView, dx, dy);
+ int position = mLayoutManager.findFirstVisibleItemPosition();
+ List dataList = mAdapter.getDataList();
+ GameEntity gameEntity = dataList.get(position + 1);
+ Long kaifuTimeHint = gameEntity.getKaifuTimeHint();
+
+ // 悬挂的文案
+ GameEntity timeGameEntity = dataList.get(position);
+ Long timeHint = timeGameEntity.getKaifuTimeHint();
+ SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd (EEEE) HH: mm", Locale.CHINA);
+ if (timeHint == null || timeHint == 0) {
+ KaiFuServerEntity serverEntity = timeGameEntity.getServerEntity();
+ if (serverEntity != null) {
+ mKaifuItemTimeTv.setText(dateFm.format(serverEntity.getTime() * 1000));
+ }
+ } else {
+ mKaifuItemTimeTv.setText(dateFm.format(timeHint * 1000));
+ }
+
+ // 悬挂界面移动
+ if (kaifuTimeHint != null && kaifuTimeHint != 0) {
+ int buttom = mLayoutManager.findViewByPosition(position).getBottom();
+ if (buttom <= mKaiFuTimeLl.getHeight()) {
+ mLlparams.topMargin = buttom - mKaiFuTimeLl.getHeight();
+ mKaiFuTimeLl.setLayoutParams(mLlparams);
+ } else {
+ mLlparams.topMargin = 0;
+ mKaiFuTimeLl.setLayoutParams(mLlparams);
+ }
+ } else {
+ mLlparams.topMargin = 0;
+ mKaiFuTimeLl.setLayoutParams(mLlparams);
+ }
+ }
+ });
+
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mAdapter.notifyDataSetChanged();
+ DownloadManager.getInstance(getContext()).addObserver(dataWatcher);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ DownloadManager.getInstance(getContext()).removeObserver(dataWatcher);
+ }
+
+ @OnClick(R.id.reuse_no_connection)
+ public void onClick() {
+ mLoading.setVisibility(View.VISIBLE);
+ mNoConn.setVisibility(View.GONE);
+ mNoneData.setVisibility(View.GONE);
+ mAdapter = new KaiFuVpAdapter(getContext(), this, mGameId);
+ mRecyclerView.setAdapter(mAdapter);
+ }
+
+ // 下载被删除事件
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onEventMainThread(EBDownloadStatus status) {
+ if ("delete".equals(status.getStatus())) {
+ DownloadManager.getInstance(getContext()).removePlatform(status.getName(), status.getPlatform());
+
+ ArrayList locationList = mAdapter.getLocationMap().get(status.getPackageName());
+ if (locationList != null) {
+ GameEntity gameEntity;
+ for (int location : locationList) {
+ gameEntity = mAdapter.getDataList().get(location);
+ if (gameEntity != null && gameEntity.getEntryMap() != null) {
+ gameEntity.getEntryMap().remove(status.getPlatform());
+ }
+ mAdapter.notifyItemChanged(location);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void loadDone() {
+ super.loadDone();
+ mKaiFuTimeLl.setVisibility(View.VISIBLE);
+ mNoConn.setVisibility(View.GONE);
+ mNoneData.setVisibility(View.GONE);
+ mLoading.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void loadError() {
+ super.loadError();
+ toast("加载失败,请检查网络状态");
+ mNoConn.setVisibility(View.VISIBLE);
+ mNoneData.setVisibility(View.GONE);
+ mLoading.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void loadEmpty() {
+ super.loadEmpty();
+ mNoConn.setVisibility(View.GONE);
+ mNoneData.setVisibility(View.VISIBLE);
+ mLoading.setVisibility(View.GONE);
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java
index 00a68df0d0..f18abc5eb5 100644
--- a/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java
@@ -189,7 +189,7 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap
switch (view.getId()) {
case R.id.subject_tabbar_hot_tv:
mTabbarHotTv.setTextColor(Color.WHITE);
- mTabbarHotTv.setBackgroundResource(R.drawable.gamedetail_tag_select_bg);
+ mTabbarHotTv.setBackgroundResource(R.drawable.tabbar_left_bg);
mTabbarNewTv.setTextColor(Color.BLACK);
mTabbarNewTv.setBackgroundDrawable(new ColorDrawable(0));
mListOrder = "";
@@ -199,7 +199,7 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap
mTabbarHotTv.setTextColor(Color.BLACK);
mTabbarHotTv.setBackgroundDrawable(new ColorDrawable(0));
mTabbarNewTv.setTextColor(Color.WHITE);
- mTabbarNewTv.setBackgroundResource(R.drawable.gamedetail_tag_unselect_bg);
+ mTabbarNewTv.setBackgroundResource(R.drawable.tabbar_right_bg);
mListOrder = "latest";
loadData();
break;
diff --git a/app/src/main/res/color/tabbar_textcolor_selector.xml b/app/src/main/res/color/tabbar_textcolor_selector.xml
new file mode 100644
index 0000000000..db76aa5c0d
--- /dev/null
+++ b/app/src/main/res/color/tabbar_textcolor_selector.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xhdpi/kaifu_time_icon.png b/app/src/main/res/drawable-xhdpi/kaifu_time_icon.png
new file mode 100644
index 0000000000..0cf26d96a4
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/kaifu_time_icon.png differ
diff --git a/app/src/main/res/drawable-xhdpi/tabbar_right_selector.xml b/app/src/main/res/drawable-xhdpi/tabbar_right_selector.xml
new file mode 100644
index 0000000000..fe14da9d5f
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/tabbar_right_selector.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/tabbar_center_bg.xml b/app/src/main/res/drawable/tabbar_center_bg.xml
new file mode 100644
index 0000000000..bf6acba0f9
--- /dev/null
+++ b/app/src/main/res/drawable/tabbar_center_bg.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/tabbar_center_selector.xml b/app/src/main/res/drawable/tabbar_center_selector.xml
new file mode 100644
index 0000000000..42d1e86c7c
--- /dev/null
+++ b/app/src/main/res/drawable/tabbar_center_selector.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gamedetail_tag_select_bg.xml b/app/src/main/res/drawable/tabbar_left_bg.xml
similarity index 100%
rename from app/src/main/res/drawable/gamedetail_tag_select_bg.xml
rename to app/src/main/res/drawable/tabbar_left_bg.xml
diff --git a/app/src/main/res/drawable/tabbar_left_selector.xml b/app/src/main/res/drawable/tabbar_left_selector.xml
new file mode 100644
index 0000000000..5d1fa4a05c
--- /dev/null
+++ b/app/src/main/res/drawable/tabbar_left_selector.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gamedetail_tag_unselect_bg.xml b/app/src/main/res/drawable/tabbar_right_bg.xml
similarity index 100%
rename from app/src/main/res/drawable/gamedetail_tag_unselect_bg.xml
rename to app/src/main/res/drawable/tabbar_right_bg.xml
diff --git a/app/src/main/res/layout/activity_kaifu2.xml b/app/src/main/res/layout/activity_kaifu2.xml
new file mode 100644
index 0000000000..58aa60dd14
--- /dev/null
+++ b/app/src/main/res/layout/activity_kaifu2.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_kaifu.xml b/app/src/main/res/layout/fragment_kaifu.xml
new file mode 100644
index 0000000000..830e7e8d7d
--- /dev/null
+++ b/app/src/main/res/layout/fragment_kaifu.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_kaifu_vp.xml b/app/src/main/res/layout/fragment_kaifu_vp.xml
new file mode 100644
index 0000000000..44a0761e27
--- /dev/null
+++ b/app/src/main/res/layout/fragment_kaifu_vp.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/gamedetail_body.xml b/app/src/main/res/layout/gamedetail_body.xml
index 5cbbd1104b..bfd81106ec 100644
--- a/app/src/main/res/layout/gamedetail_body.xml
+++ b/app/src/main/res/layout/gamedetail_body.xml
@@ -82,7 +82,7 @@
android:id = "@+id/gamedetail_tabbar_fuli_tv"
android:layout_width = "90dp"
android:layout_height = "25dp"
- android:background = "@drawable/gamedetail_tag_select_bg"
+ android:background = "@drawable/tabbar_left_bg"
android:gravity = "center"
android:text = "@string/game_detail_dongtai"
android:textColor = "@android:color/white"
diff --git a/app/src/main/res/layout/kaifu_item_time.xml b/app/src/main/res/layout/kaifu_item_time.xml
new file mode 100644
index 0000000000..c5f47e8a30
--- /dev/null
+++ b/app/src/main/res/layout/kaifu_item_time.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/subject_tiled_body.xml b/app/src/main/res/layout/subject_tiled_body.xml
index b1e22ce1ff..21006b58be 100644
--- a/app/src/main/res/layout/subject_tiled_body.xml
+++ b/app/src/main/res/layout/subject_tiled_body.xml
@@ -31,7 +31,7 @@
android:id = "@+id/subject_tabbar_hot_tv"
android:layout_width = "123dp"
android:layout_height = "29dp"
- android:background = "@drawable/gamedetail_tag_select_bg"
+ android:background = "@drawable/tabbar_left_bg"
android:gravity = "center"
android:text = "最热"
android:textColor = "@android:color/white"