diff --git a/app/src/main/assets/lottie/tab_community.json b/app/src/main/assets/lottie/tab_community.json new file mode 100644 index 0000000000..91f48d3d94 --- /dev/null +++ b/app/src/main/assets/lottie/tab_community.json @@ -0,0 +1 @@ +{"v":"5.5.9","fr":30,"ip":0,"op":30,"w":66,"h":66,"nm":"tab_question","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"路径","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33.324,44.369,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.54,0.54,0.333],"y":[0,0,0]},"t":7,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.555,0.555,0.333],"y":[0,0,0]},"t":12,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.674,0.674,0.333],"y":[0,0,0]},"t":16,"s":[90,90,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.42,0],[0,0.41],[-0.42,0],[0,-0.41]],"o":[[-0.42,0],[0,-0.43],[0.42,0],[0,0.43]],"v":[[0,0.75],[-0.75,0.01],[0,-0.75],[0.75,-0.01]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"路径","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"路径 19","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33.188,29.563,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.543,0.543,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.488,0.488,0.333],"y":[0,0,0]},"t":5,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.485,0.485,0.333],"y":[0,0,0]},"t":10,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.517,0.517,0.333],"y":[0,0,0]},"t":15,"s":[110,110,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.73,0.41],[-0.51,-1.15],[0.66,-0.46],[0,0]],"o":[[0,0],[0.73,-0.42],[0.51,1.14],[-0.67,0.47],[0,0]],"v":[[-2,-0.87],[-0.99,-2.26],[1.87,-1.48],[0.62,0.94],[0,2.5]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"路径 19","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.517],"y":[0]},"t":0,"s":[0]},{"t":10,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"路径备份","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33.188,34.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.508,0.508,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.488,0.488,0.333],"y":[0,0,0]},"t":3,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.502,0.502,0.333],"y":[0,0,0]},"t":8,"s":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.534,0.534,0.333],"y":[0,0,0]},"t":12,"s":[95,95,100]},{"t":15,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.51,0],[0,-4.71],[-2.13,-1.58],[0,-0.18],[0,0],[-0.38,0.22],[0,0],[-0.12,-0.03],[-0.57,0],[0,4.68]],"o":[[-5.54,0],[0,2.6],[0.16,0.12],[0,0],[0,0.43],[0,0],[0.13,-0.06],[0.55,0.09],[5.51,0],[-0.03,-4.77]],"v":[[0,-9.5],[-10,-1.01],[-6.5,5.46],[-6.24,5.92],[-6.24,8.93],[-5.35,9.42],[-2.04,7.47],[-1.66,7.41],[0,7.54],[10,-0.95]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.266,0.638,1,0.5,0.242,0.595,1,1,0.217,0.552,1],"ix":9}},"s":{"a":0,"k":[-5.446,-4.43],"ix":5},"e":{"a":0,"k":[9.065,8.214],"ix":6},"t":1,"nm":"Gradient Fill 4","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"路径备份","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/tab_game.json b/app/src/main/assets/lottie/tab_game.json new file mode 100644 index 0000000000..925165f2ff --- /dev/null +++ b/app/src/main/assets/lottie/tab_game.json @@ -0,0 +1 @@ +{"v":"5.5.9","fr":30,"ip":0,"op":25,"w":66,"h":66,"nm":"tab_game","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"椭圆形 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.498],"y":[0]},"t":8,"s":[0]},{"t":13,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[44.328,37.618,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.55,0.55,0.333],"y":[0,0,0]},"t":8,"s":[0,0,100]},{"t":13,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3,3],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"椭圆形备份 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.629],"y":[0]},"t":5,"s":[0]},{"t":10,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[48.317,25.362,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":-4.5,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.507,0.507,0.333],"y":[0,0,0]},"t":5,"s":[0,0,100]},{"t":10,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2,2],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形备份 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"椭圆形","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[21.839,33.222,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.508,0.508,0.333],"y":[0,0,0]},"t":0,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.54,0.54,0.333],"y":[0,0,0]},"t":5,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.52,0.52,0.333],"y":[0,0,0]},"t":10,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.552,0.552,0.333],"y":[0,0,0]},"t":15,"s":[110,110,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5,5],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.464],"y":[0]},"t":0,"s":[100]},{"t":10,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"矩形","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,33.031,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.508,0.508,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.488,0.488,0.333],"y":[0,0,0]},"t":3,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.502,0.502,0.333],"y":[0,0,0]},"t":8,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.534,0.534,0.333],"y":[0,0,0]},"t":12,"s":[90,90,100]},{"t":16,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[22,18],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":9,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.266,0.638,1,0.5,0.242,0.595,1,1,0.217,0.552,1],"ix":9}},"s":{"a":0,"k":[-5.991,-4.197],"ix":5},"e":{"a":0,"k":[9.971,7.782],"ix":6},"t":1,"nm":"Gradient Fill 2","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/tab_index.json b/app/src/main/assets/lottie/tab_index.json new file mode 100644 index 0000000000..74ef796eaf --- /dev/null +++ b/app/src/main/assets/lottie/tab_index.json @@ -0,0 +1 @@ +{"v":"5.5.9","fr":30,"ip":0,"op":25,"w":66,"h":66,"nm":"tab_index","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"椭圆形备份","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,40.493,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.54,0.54,0.333],"y":[0,0,0]},"t":5,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.555,0.555,0.333],"y":[0,0,0]},"t":10,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.552,0.552,0.333],"y":[0,0,0]},"t":15,"s":[110,110,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5,5],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.596],"y":[0]},"t":0,"s":[100]},{"t":10,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形备份","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-0.5,"op":59.5,"st":-0.5,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"路径备份","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,32.993,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.508,0.508,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.488,0.488,0.333],"y":[0,0,0]},"t":3,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.502,0.502,0.333],"y":[0,0,0]},"t":8,"s":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.534,0.534,0.333],"y":[0,0,0]},"t":12,"s":[95,95,100]},{"t":15,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.24,-1.21],[-1.93,-1.89],[-0.24,-0.57],[0,-0.06],[0,-2.63],[1.76,0],[0,0],[0,1.72],[0,2.63],[-0.24,0.61],[-0.03,0.02],[-1.93,1.89]],"o":[[1.92,1.89],[0.02,0.02],[0.24,0.57],[0,2.63],[0,1.72],[0,0],[-1.76,0],[0,-2.62],[0,-0.07],[0.25,-0.61],[1.92,-1.89],[1.24,-1.21]],"v":[[2.26,-9.09],[8.03,-3.42],[8.76,-2.38],[9,-1.02],[9,6.88],[5.82,10],[-5.82,10],[-9,6.88],[-9,-0.99],[-8.71,-2.38],[-8.01,-3.43],[-2.23,-9.09]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.266,0.638,1,0.5,0.242,0.595,1,1,0.217,0.552,1],"ix":9}},"s":{"a":0,"k":[-4.902,-4.663],"ix":5},"e":{"a":0,"k":[8.159,8.646],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"路径备份","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/tab_mine.json b/app/src/main/assets/lottie/tab_mine.json new file mode 100644 index 0000000000..34bf652b3f --- /dev/null +++ b/app/src/main/assets/lottie/tab_mine.json @@ -0,0 +1 @@ +{"v":"5.5.9","fr":30,"ip":0,"op":25,"w":66,"h":66,"nm":"tab_my","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"mouth","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32.947,34.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.455,0.42,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.418,0.435,0.333],"y":[0,0,0]},"t":5,"s":[110,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.432,0.467,0.333],"y":[0,0,0]},"t":10,"s":[100,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.499,0.333],"y":[0,0,0]},"t":15,"s":[100,120,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.631,"y":0},"t":0,"s":[{"i":[[4.314,0],[0,-2.71],[-4.314,0],[0,2.71]],"o":[[-4.314,0],[0,2.71],[4.314,0],[0,-2.71]],"v":[[-0.004,4.562],[-7.815,9.469],[-0.004,14.375],[7.807,9.469]],"c":true}]},{"t":5,"s":[{"i":[[4.547,0],[0,-2.856],[-4.547,0],[0,2.856]],"o":[[-4.547,0],[0,2.856],[4.547,0],[0,-2.856]],"v":[[-0.061,-5.625],[-8.294,-0.453],[-0.061,4.719],[8.173,-0.453]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.38,0],[0,1.01],[1.38,0],[0,-1.02]],"o":[[1.38,0],[0,-1.02],[-1.38,0],[0,1.01]],"v":[[0,1.5],[2.5,-0.34],[0,-1.5],[-2.5,-0.34]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"头","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32.812,27,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.508,0.508,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.488,0.488,0.333],"y":[0,0,0]},"t":3,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.502,0.502,0.333],"y":[0,0,0]},"t":8,"s":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.534,0.534,0.333],"y":[0,0,0]},"t":12,"s":[95,95,100]},{"t":15,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[14,14],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.266,0.638,1,0.5,0.242,0.595,1,1,0.217,0.552,1],"ix":9}},"s":{"a":0,"k":[-3.812,-3.264],"ix":5},"e":{"a":0,"k":[6.345,6.052],"ix":6},"t":1,"nm":"Gradient Fill 5","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形备份 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"身","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-0.043,28.579,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":4,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":8,"s":[100,72,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.22,0],[1.03,-1.82]],"o":[[-1.04,-1.79],[-2.25,0],[0,0]],"v":[[5.217,1.474],[0.017,-1.526],[-5.213,1.524]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":1.5,"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0.259,0.627,1,0.5,0.241,0.596,1,1,0.224,0.565,1],"ix":8}},"s":{"a":0,"k":[-1.759,-1.526],"ix":4},"e":{"a":0,"k":[5.213,1.526],"ix":5},"t":1,"lc":2,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"路径备份 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/tab_video.json b/app/src/main/assets/lottie/tab_video.json new file mode 100644 index 0000000000..9daad79ae0 --- /dev/null +++ b/app/src/main/assets/lottie/tab_video.json @@ -0,0 +1 @@ +{"v":"5.5.9","fr":30,"ip":0,"op":25,"w":66,"h":66,"nm":"tab_video","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"路径","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32.997,33,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.648,0.648,0.333],"y":[0,0,0]},"t":0,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.488,0.488,0.333],"y":[0,0,0]},"t":5,"s":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.52,0.52,0.333],"y":[0,0,0]},"t":10,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.552,0.552,0.333],"y":[0,0,0]},"t":15,"s":[100,100,100]},{"t":20,"s":[90,90,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.36,0.45],[0.33,-0.2],[0.06,-0.4],[-0.21,-1.56],[-0.33,-0.21],[-0.36,0.13],[-1.03,1.03],[0,0],[0,0.44],[0.31,0.3]],"o":[[-1.03,-1.03],[-0.36,-0.13],[-0.33,0.21],[-0.21,1.56],[0.06,0.4],[0.33,0.2],[1.36,-0.45],[0,0],[0.31,-0.3],[0,-0.44],[0,0]],"v":[[2.5,-1.19],[-1.14,-3.43],[-2.23,-3.31],[-2.84,-2.35],[-2.84,2.35],[-2.23,3.31],[-1.14,3.43],[2.5,1.19],[2.52,1.17],[3,0],[2.52,-1.17]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.526],"y":[0]},"t":0,"s":[0]},{"t":10,"s":[100]}],"ix":2},"o":{"a":0,"k":-10,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"路径","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"路径 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,33.004,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.508,0.508,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.488,0.488,0.333],"y":[0,0,0]},"t":3,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.502,0.502,0.333],"y":[0,0,0]},"t":8,"s":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.534,0.534,0.333],"y":[0,0,0]},"t":12,"s":[95,95,100]},{"t":15,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.16,0.38],[3.22,-0.55],[0.38,-2.16],[-0.55,-3.22],[-2.16,-0.38],[-1.63,0],[-1.61,0.27],[-0.38,2.16],[0.55,3.22]],"o":[[-0.38,-2.16],[-3.22,-0.55],[-2.16,0.38],[-0.55,3.22],[0.38,2.16],[1.61,0.27],[1.63,0],[2.16,-0.38],[0.55,-3.22],[0,0]],"v":[[9.09,-4.86],[4.86,-9.09],[-4.86,-9.09],[-9.09,-4.86],[-9.09,4.86],[-4.86,9.09],[0,9.5],[4.86,9.09],[9.09,4.86],[9.09,-4.86]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.266,0.638,1,0.5,0.242,0.595,1,1,0.217,0.552,1],"ix":9}},"s":{"a":0,"k":[-5.174,-4.43],"ix":5},"e":{"a":0,"k":[8.612,8.214],"ix":6},"t":1,"nm":"Gradient Fill 3","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"路径","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index e935c113f4..b852681d86 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -460,13 +460,14 @@ object DirectUtils { * @param fromLocation 可见 [VideoDetailContainerViewModel.Location] */ @JvmStatic - fun directToVideoDetail(context: Context, videoId: String, fromLocation: String, showComment: Boolean = false, entrance: String? = null, path: String? = "", referer: String = "") { + fun directToVideoDetail(context: Context, videoId: String, fromLocation: String, showComment: Boolean = false, gameId: String = "", entrance: String? = null, path: String? = "", referer: String = "") { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { val bundle = Bundle() bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) bundle.putString(KEY_TO, VideoDetailActivity::class.java.name) bundle.putString(KEY_PATH, path) bundle.putString(KEY_ID, videoId) + bundle.putString(KEY_GAMEID, gameId) bundle.putString(KEY_LOCATION, fromLocation) bundle.putBoolean(KEY_SHOW_COMMENT, showComment) bundle.putString(KEY_REFERER, referer) diff --git a/app/src/main/java/com/gh/common/view/GridSpacingItemColorDecoration.java b/app/src/main/java/com/gh/common/view/GridSpacingItemColorDecoration.java new file mode 100644 index 0000000000..fab435d51a --- /dev/null +++ b/app/src/main/java/com/gh/common/view/GridSpacingItemColorDecoration.java @@ -0,0 +1,142 @@ +package com.gh.common.view; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.view.View; + +import androidx.annotation.ColorRes; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; + +public class GridSpacingItemColorDecoration extends RecyclerView.ItemDecoration { + + private int dividerWidth; + private int dividerHeight; + private int dividerWidthTop; + private int dividerWidthBot; + private Paint dividerPaint; + + /** + * @param dividerDp 分割块宽高,单位:dp + * @param dividerColor 分割块颜色 + */ + public GridSpacingItemColorDecoration(Context context, int dividerDp, @ColorRes int dividerColor) { + this(context, dividerDp, dividerDp, dividerColor); + } + + /** + * @param dividerWidthDp 分割块宽,单位:dp + * @param dividerHeightDp 分割块高,单位:dp + * @param dividerColor 分割块颜色 + */ + public GridSpacingItemColorDecoration(Context context, int dividerWidthDp, int dividerHeightDp, @ColorRes int dividerColor) { + this.dividerPaint = new Paint(); + this.dividerPaint.setColor(ContextCompat.getColor(context, dividerColor)); + + this.dividerWidth = dip2px(context, dividerWidthDp); + this.dividerHeight = dip2px(context, dividerHeightDp); + this.dividerWidthTop = dividerHeight / 2; + this.dividerWidthBot = dividerHeight - dividerWidthTop; + } + + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + drawHorizontal(c, parent); + drawVertical(c, parent); + } + + private void drawHorizontal(Canvas c, RecyclerView parent) { + int childCount = parent.getChildCount(); + for (int i = 0; i < childCount; i++) { + if (!isLastRaw(parent, i, getSpanCount(parent), childCount)) {//最后一行不设置颜色 + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child + .getLayoutParams(); + final int left = child.getLeft() - params.leftMargin; + final int right = !isLastColum(parent, i, getSpanCount(parent)) ? child.getRight() + params.rightMargin + + dividerWidth : child.getRight() + params.rightMargin; + final int top = child.getBottom() + params.bottomMargin; + final int bottom = top + dividerHeight; + c.drawRect(left, top, right, bottom, dividerPaint); + } + } + } + + private void drawVertical(Canvas c, RecyclerView parent) { + final int childCount = parent.getChildCount(); + for (int i = 0; i < childCount; i++) { + if (!isLastColum(parent, i, getSpanCount(parent)) && i != childCount - 1) {//最后一列和最后个item后面不设置颜色 + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child + .getLayoutParams(); + final int top = child.getTop() - params.topMargin; + final int bottom = child.getBottom() + params.bottomMargin; + final int left = child.getRight() + params.rightMargin; + final int right = left + dividerWidth; + c.drawRect(left, top, right, bottom, dividerPaint); + } + } + } + + @Override + public void getItemOffsets(Rect outRect, View child, RecyclerView parent, RecyclerView.State state) { + super.getItemOffsets(outRect, child, parent, state); + int spanCount = getSpanCount(parent); + int pos = parent.getChildAdapterPosition(child); + int childCount = parent.getAdapter().getItemCount(); + int column = (pos) % spanCount;// 计算这个child 处于第几列 + + outRect.top = isFirstRaw(parent, pos, spanCount) ? 0 : dividerWidthTop; + outRect.bottom = isLastRaw(parent, pos, spanCount, childCount) ? 0 : dividerWidthBot; + + outRect.left = (column * dividerWidth / spanCount); + outRect.right = dividerWidth - (column + 1) * dividerWidth / spanCount; + + } + + private boolean isLastColum(RecyclerView parent, int pos, int spanCount) { + RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); + return layoutManager instanceof GridLayoutManager && (pos + 1) % spanCount == 0; + } + + private boolean isFirstRaw(RecyclerView parent, int pos, int spanCount) { + RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); + return layoutManager instanceof GridLayoutManager && pos < spanCount; + } + + private boolean isLastRaw(RecyclerView parent, int pos, int spanCount, + int childCount) { + RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); + if (layoutManager instanceof GridLayoutManager) { + int rawChildCount = childCount - childCount % spanCount; + if (rawChildCount == childCount) { + return pos >= rawChildCount - spanCount; + } + return pos >= rawChildCount; + } + return false; + } + + private int getSpanCount(RecyclerView parent) { + // 列数 + int spanCount = -1; + RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); + if (layoutManager instanceof GridLayoutManager) { + + spanCount = ((GridLayoutManager) layoutManager).getSpanCount(); + } else if (layoutManager instanceof StaggeredGridLayoutManager) { + spanCount = ((StaggeredGridLayoutManager) layoutManager) + .getSpanCount(); + } + return spanCount; + } + + private int dip2px(Context context, float dpValue) { + float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 7670b26b79..1f2200bdf3 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -73,11 +73,12 @@ public class SkipActivity extends BaseActivity { } String host = uri.getHost(); String path = uri.getPath(); - + String to = uri.getQueryParameter("to"); String type = uri.getQueryParameter("type"); String name = uri.getQueryParameter("name"); String referer = uri.getQueryParameter("referer"); + String id = uri.getQueryParameter("id"); if (!TextUtils.isEmpty(path)) { path = path.substring(1); } @@ -160,7 +161,7 @@ public class SkipActivity extends BaseActivity { break; case HOST_VIDEO: DirectUtils.directToVideoDetail(this, path, VideoDetailContainerViewModel.Location.HOTTEST_GAME_VIDEO.getValue(), - false, ENTRANCE_BROWSER, "浏览器", TextUtils.isEmpty(referer) ? "" : referer); + false, id, ENTRANCE_BROWSER, "浏览器", TextUtils.isEmpty(referer) ? "" : referer); break; case HOST_UPLOAD_VIDEO://跳转上传视频 if (CheckLoginUtils.isLogin()) { diff --git a/app/src/main/java/com/gh/gamecenter/entity/MyVideoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/MyVideoEntity.kt index 7ffb2e24d1..ef0daf41bc 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MyVideoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/MyVideoEntity.kt @@ -2,6 +2,7 @@ package com.gh.gamecenter.entity import android.os.Parcelable import androidx.room.Entity +import androidx.room.Ignore import androidx.room.PrimaryKey import com.google.gson.annotations.SerializedName import kotlinx.android.parcel.Parcelize @@ -16,6 +17,9 @@ class MyVideoEntity( var url: String = "", var vote: Int = 0, var length: Long = 0, + @Ignore + @SerializedName("game_id") + var gameId: String = "", var time: Long = 0,//浏览时间 var videoStreamRecord: Int = 0//是否在视频流中记录的,1是 0不是 diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java index 366cc57d1e..70a01baad8 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java @@ -3,12 +3,14 @@ package com.gh.gamecenter.fragment; import android.os.Bundle; import android.view.View; +import com.airbnb.lottie.LottieAnimationView; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.OnDoubleTapListener; import com.gh.base.fragment.BaseFragment_ViewPager_Checkable; import com.gh.common.constant.Config; import com.gh.common.util.DataUtils; import com.gh.common.util.EntranceUtils; +import com.gh.common.util.ExtensionsKt; import com.gh.common.util.ImageUtils; import com.gh.download.DownloadManager; import com.gh.gamecenter.MainActivity; @@ -31,6 +33,7 @@ import com.gh.gamecenter.qa.CommunityFragment; import com.gh.gamecenter.video.detail.VideoDetailContainerFragment; import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; import com.lightgame.listeners.OnBackPressedListener; +import com.lightgame.view.CheckableLinearLayout; import com.lightgame.view.NoScrollableViewPager; import org.greenrobot.eventbus.EventBus; @@ -64,6 +67,16 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem View mTabCommunity; @BindView(R.id.main_tab_game_icon) SimpleDraweeView mTabGameIcon; + @BindView(R.id.lottieHome) + LottieAnimationView mLottieHome; + @BindView(R.id.lottieGame) + LottieAnimationView mLottieGame; + @BindView(R.id.lottieVideo) + LottieAnimationView mLottieVideo; + @BindView(R.id.lottieCommunity) + LottieAnimationView mLottieCommunity; + @BindView(R.id.lottieMine) + LottieAnimationView mLottieMine; // @BindView(R.id.iv_discovery_hint_dot) // protected View mDiscoveryHintIv; @@ -82,6 +95,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem private MainWrapperViewModel mViewModel; private GameTrendsDao mGameTrendsDao; private VideoDetailContainerFragment videoDetailContainerFragment; + private String[] lottieAssets = {"lottie/tab_index.json", "lottie/tab_game.json", "lottie/tab_video.json", "lottie/tab_community.json", "lottie/tab_mine.json"}; @Override protected int getLayoutId() { @@ -208,13 +222,82 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem protected boolean handleOnClick(View view) { final int toCheck = mCheckableGroup.indexOfChild(view); if (toCheck == 2) { - mCheckableGroup.setBackgroundColor(ContextCompat.getColor(requireContext(),R.color.transparent)); + mCheckableGroup.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent)); } else { - mCheckableGroup.setBackgroundColor(ContextCompat.getColor(requireContext(),R.color.white)); + mCheckableGroup.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.white)); } + playTabAnimation(toCheck); return super.handleOnClick(view); } + private void playTabAnimation(int toCheck) { + switch (toCheck) { + case 0: + stopAnimation(mLottieGame); + stopAnimation(mLottieVideo); + stopAnimation(mLottieCommunity); + stopAnimation(mLottieMine); + playAnimation(mLottieHome,toCheck); + break; + case 1: + if (mViewModel.getNavBar().getValue() == null) { + stopAnimation(mLottieHome); + stopAnimation(mLottieVideo); + stopAnimation(mLottieCommunity); + stopAnimation(mLottieMine); + playAnimation(mLottieGame,toCheck); + } + break; + case 2: + stopAnimation(mLottieHome); + stopAnimation(mLottieGame); + stopAnimation(mLottieCommunity); + stopAnimation(mLottieMine); + playAnimation(mLottieVideo,toCheck); + break; + case 3: + stopAnimation(mLottieHome); + stopAnimation(mLottieGame); + stopAnimation(mLottieVideo); + stopAnimation(mLottieMine); + playAnimation(mLottieCommunity,toCheck); + break; + case 4: + stopAnimation(mLottieHome); + stopAnimation(mLottieGame); + stopAnimation(mLottieVideo); + stopAnimation(mLottieCommunity); + playAnimation(mLottieMine,toCheck); + break; + default: + break; + } + } + + private void playAnimation(LottieAnimationView lottieView, int position) { + CheckableLinearLayout checkableGroupChild = (CheckableLinearLayout) mCheckableGroup.getChildAt(position); + View checkableView = checkableGroupChild.findCheckableView(checkableGroupChild); + if (checkableView != null) checkableView.setVisibility(View.INVISIBLE); + lottieView.setVisibility(View.VISIBLE); + lottieView.setAnimation(lottieAssets[position]); + lottieView.playAnimation(); + ExtensionsKt.doOnAnimationEnd(lottieView, () -> { + lottieView.setVisibility(View.GONE); + if (checkableView != null) checkableView.setVisibility(View.VISIBLE); + return null; + }); + } + + private void stopAnimation(LottieAnimationView lottieView) { + if (lottieView.isAnimating()) { + lottieView.cancelAnimation(); + int currentItem = mViewPager.getCurrentItem(); + CheckableLinearLayout checkableGroupChild = (CheckableLinearLayout) mCheckableGroup.getChildAt(currentItem); + View checkableView = checkableGroupChild.findCheckableView(checkableGroupChild); + if (checkableView != null) checkableView.setVisibility(View.VISIBLE); + lottieView.setVisibility(View.GONE); + } + } @Override protected void onPageChanged(int index) { diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java index f96789f666..fc3299dcd2 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java @@ -10,8 +10,6 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; -import androidx.recyclerview.widget.RecyclerView; - import com.facebook.drawee.generic.GenericDraweeHierarchy; import com.facebook.drawee.generic.RoundingParams; import com.facebook.drawee.view.SimpleDraweeView; @@ -46,6 +44,8 @@ import com.lightgame.utils.Utils; import java.util.ArrayList; import java.util.List; +import androidx.recyclerview.widget.RecyclerView; + /** * Created by khy on 2017/4/10. * 消息-客服适配器 @@ -321,7 +321,7 @@ public class KeFuFragmentAdapter extends ListAdapter { break; case "视频": if (!TextUtils.isEmpty(data.getId())) { - DirectUtils.directToVideoDetail(mContext, data.getId(), VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), false, mEntrance, "系统_二级列表", ""); + DirectUtils.directToVideoDetail(mContext, data.getId(), VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), false, "", mEntrance, "系统_二级列表", ""); } break; case "安利墙评论": diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java index 883180a410..1d96ff4b42 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java @@ -566,6 +566,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder entity.getVideo().getId(), VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), false, + "", entrance, outerInfo, "" @@ -584,6 +585,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder entity.getVideo().getId(), VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), showComment, + "", entrance, outerInfo, ""); @@ -595,6 +597,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder entity.getVideo().getId(), VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), false, + "", entrance, outerInfo, ""); diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt index 84488a0e70..951fc68d74 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt @@ -6,8 +6,7 @@ import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.gh.common.util.dip2px -import com.gh.common.view.SpacingItemDecoration +import com.gh.common.view.GridSpacingItemColorDecoration import com.gh.gamecenter.R import com.gh.gamecenter.entity.FunctionalGroupEntity import com.lightgame.adapter.BaseRecyclerAdapter @@ -39,7 +38,7 @@ class PersonalFunctionGroupAdapter(val context: Context) : BaseRecyclerAdapter? = null @@ -172,12 +173,24 @@ class VideoDetailContainerViewModel(application: Application) : AndroidViewModel UrlFilterUtils.getFilterQuery("location", location, "next", "0", "last", "0") } else { if (mIsFirstLoad) { - UrlFilterUtils.getFilterQuery("location", location, "next", "20", "last", "20") + if (location == Location.HOTTEST_GAME_VIDEO.value || location == Location.NEWEST_GAME_VIDEO.value) { + UrlFilterUtils.getFilterQuery("location", location, "next", "20", "last", "20", "game_id", gameId) + } else { + UrlFilterUtils.getFilterQuery("location", location, "next", "20", "last", "20") + } } else { if (isLoadNext) { - UrlFilterUtils.getFilterQuery("location", location, "next", "20") + if (location == Location.HOTTEST_GAME_VIDEO.value || location == Location.NEWEST_GAME_VIDEO.value) { + UrlFilterUtils.getFilterQuery("location", location, "next", "20", "game_id", gameId) + } else { + UrlFilterUtils.getFilterQuery("location", location, "next", "20") + } } else { - UrlFilterUtils.getFilterQuery("location", location, "last", "20") + if (location == Location.HOTTEST_GAME_VIDEO.value || location == Location.NEWEST_GAME_VIDEO.value) { + UrlFilterUtils.getFilterQuery("location", location, "last", "20", "game_id", gameId) + } else { + UrlFilterUtils.getFilterQuery("location", location, "last", "20") + } } } } diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt index 02169700df..6ab78e74e2 100644 --- a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt @@ -62,7 +62,7 @@ class GameVideoAdapter(context: Context, fromLocation = VideoDetailContainerViewModel.Location.NEWEST_GAME_VIDEO.value path = "视频合集-最新" } - DirectUtils.directToVideoDetail(mContext, entity.id, fromLocation, false, mEntrance, path = path) + DirectUtils.directToVideoDetail(mContext, entity.id, fromLocation, false, gameId = entity.gameId, entrance = mEntrance, path = path) } } else if (holder is FooterViewHolder) { holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 1984453c89..7db0c7ed56 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -1,4 +1,5 @@ @@ -22,8 +23,7 @@ android:gravity="center_vertical" android:orientation="horizontal" android:paddingTop="6dp" - android:paddingBottom="8dp" - android:clickable="true"> + android:paddingBottom="8dp"> - + + + + + + - + + + + + + + - + + + + + + + - + + + + + + - + + + + + + + android:visibility="visible" /> diff --git a/app/src/main/res/layout/item_personal_fun_group.xml b/app/src/main/res/layout/item_personal_fun_group.xml index 396f03ff96..85a4e78611 100644 --- a/app/src/main/res/layout/item_personal_fun_group.xml +++ b/app/src/main/res/layout/item_personal_fun_group.xml @@ -5,7 +5,10 @@ android:layout_height="wrap_content" android:background="@drawable/personal_card_bg" android:orientation="vertical" - android:padding="16dp"> + android:paddingLeft="16dp" + android:paddingTop="16dp" + android:paddingRight="16dp" + android:paddingBottom="28dp"> + android:layout_marginTop="16dp"/> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_video_detail_surface.xml b/app/src/main/res/layout/layout_video_detail_surface.xml index 7972320634..7f299e9650 100644 --- a/app/src/main/res/layout/layout_video_detail_surface.xml +++ b/app/src/main/res/layout/layout_video_detail_surface.xml @@ -337,15 +337,15 @@ android:max="100" android:progressDrawable="@drawable/progressbar_video_detail" /> - + android:layout_height="wrap_content" />--> diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 3102cf07a9..12387a013c 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 3102cf07a90023cf7ccb4e5c9ccc2ca143bf79ee +Subproject commit 12387a013c83cb4472959f4fd22e6b96f12eec00