Explorar o código

绵羊新游、免费道具、绵羊推荐、游戏排行

zengjiebin %!s(int64=7) %!d(string=hai) anos
pai
achega
d1f9c5764d
Modificáronse 26 ficheiros con 741 adicións e 76 borrados
  1. 8 0
      app/src/main/AndroidManifest.xml
  2. 4 4
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  3. 22 0
      app/src/main/java/com/sheep/gamegroup/model/entity/GameEntity.java
  4. 42 0
      app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGameCenterType.java
  5. 38 0
      app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGameRank.java
  6. 9 14
      app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpGameCenter4_0.java
  7. 32 0
      app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpGameCenterType.java
  8. 68 0
      app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpGameCenterTypeList.java
  9. 9 1
      app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtDownloadManager.java
  10. 1 5
      app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameCenter.java
  11. 160 0
      app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameCenterType.java
  12. 127 0
      app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameRank.java
  13. 20 1
      app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtPlayGame.java
  14. 26 0
      app/src/main/java/com/sheep/gamegroup/module/game/model/GameCenterType.java
  15. 40 0
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  16. 5 0
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  17. 5 4
      app/src/main/java/com/sheep/gamegroup/util/string/SpannableSb.java
  18. 4 19
      app/src/main/java/com/sheep/gamegroup/view/activity/GamemakeMoneyAct.java
  19. 4 19
      app/src/main/java/com/sheep/gamegroup/view/activity/TryMakeMoneyact.java
  20. 6 3
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java
  21. 2 3
      app/src/main/java/com/sheep/jiuyan/samllsheep/utils/TitleBarUtils.java
  22. 4 0
      app/src/main/java/org/afinal/simplecache/ApiKey.java
  23. 7 1
      app/src/main/res/layout/fgt_play_game.xml
  24. 0 2
      app/src/main/res/layout/homepage_item_banner.xml
  25. 30 0
      app/src/main/res/layout/item_game_center_type.xml
  26. 68 0
      app/src/main/res/layout/item_game_center_type_list.xml

+ 8 - 0
app/src/main/AndroidManifest.xml

@@ -943,6 +943,14 @@
             android:name="com.sheep.gamegroup.module.game.activity.ActDownloadManager"
             android:theme="@style/AppActionTheme"
             android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.module.game.activity.ActGameCenterType"
+            android:theme="@style/AppActionTheme"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.module.game.activity.ActGameRank"
+            android:theme="@style/AppActionTheme"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 4 - 4
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -1682,11 +1682,11 @@ public interface ApiService {
      * 获取游戏组列表
      * page * integer (query) 页码
      * per_page * integer (query) 每页显示条数默认10条
-     * tag * integer (query) 类型 0:所有 1:绵羊新游 2:绵羊推荐 2:免费道具
+     * tag * integer (query) 类型 0:所有 1:绵羊新游 2:绵羊推荐 3:免费道具
      * 返回 GameGroup 列表
      */
-    @GET("app/game_group")
-    Observable<BaseMessage> getGameGroupByTag(@Query("tag") String tag, @Query("page") int page, @Query("per_page") int per_page);
+    @GET(ApiKey.getGameGroup)
+    Observable<BaseMessage> getGameGroupByTag(@Query("tag") int tag, @Query("page") int page, @Query("per_page") int per_page);
     /**
      * 获取游戏组详情
      * id * integer (path) 游戏组ID
@@ -1704,7 +1704,7 @@ public interface ApiService {
      * 获取游戏排行
      * 返回 GameEntity 列表
      */
-    @GET("app/find/rank")
+    @GET(ApiKey.getFindRank)
     Observable<BaseMessage> getFindRank();
     /**
      * 根据用户喜好推荐

+ 22 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/GameEntity.java

@@ -204,4 +204,26 @@ public class GameEntity implements Serializable {
         }
         return null;
     }
+
+    /**
+     * 获取游戏下载次数
+     * @return
+     */
+    public int getDownload_count() {
+        if (app != null) {
+            return app.getDownload_count();
+        }
+        return 0;
+    }
+
+    /**
+     * 获取平台
+     * @return
+     */
+    public String getManufacturer() {
+        if (app != null) {
+            return app.getManufacturer();
+        }
+        return "";
+    }
 }

+ 42 - 0
app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGameCenterType.java

@@ -0,0 +1,42 @@
+package com.sheep.gamegroup.module.game.activity;
+
+import android.support.v4.app.Fragment;
+
+import com.sheep.gamegroup.absBase.BaseContainerActivity;
+import com.sheep.gamegroup.module.game.fragment.FgtGameCenterType;
+import com.sheep.gamegroup.module.game.model.GameCenterType;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+/**
+ * Created by realicing on 2019/1/21.
+ * realicing@sina.com
+ * 小绵羊3.4.10新增 -- 绵羊新游、免费道具、绵羊推荐 界面
+ */
+public class ActGameCenterType extends BaseContainerActivity {
+    private int type;
+    @Override
+    public void initView() {
+        GameCenterType gameCenterType = DataUtil.getObject(getIntent(), GameCenterType.class);
+        if(gameCenterType != null)
+            type = gameCenterType.getId();
+        super.initView();
+        if(gameCenterType == null)
+            return;
+        TitleBarUtils
+                .getInstance()
+                .setShowOrHide(this, true)
+                .setTitle(this, gameCenterType.getName())
+                .setRightImgBotton(this, R.drawable.index_download, view -> Jump2View.getInstance().goActDownloadManager(this))
+                .setRightSecondBtn(this, R.drawable.search_black_img, view -> Jump2View.getInstance().goAppSearch(this, null))
+                .setTitleFinish(this);
+    }
+
+
+    @Override
+    protected Fragment initFragment() {
+        return FgtGameCenterType.newInstance(type);
+    }
+}

+ 38 - 0
app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGameRank.java

@@ -0,0 +1,38 @@
+package com.sheep.gamegroup.module.game.activity;
+
+import android.support.v4.app.Fragment;
+
+import com.sheep.gamegroup.absBase.BaseContainerActivity;
+import com.sheep.gamegroup.module.game.fragment.FgtGameRank;
+import com.sheep.gamegroup.module.game.model.GameCenterType;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+/**
+ * Created by realicing on 2019/1/21.
+ * realicing@sina.com
+ * 小绵羊3.4.10新增 -- 游戏排行榜 界面
+ */
+public class ActGameRank extends BaseContainerActivity {
+    @Override
+    public void initView() {
+        super.initView();
+        GameCenterType gameCenterType = DataUtil.getObject(getIntent(), GameCenterType.class);
+        if(gameCenterType == null)
+            return;
+        TitleBarUtils
+                .getInstance()
+                .setShowOrHide(this, true)
+                .setTitle(this, gameCenterType.getName())
+                .setRightImgBotton(this, R.drawable.index_download, view -> Jump2View.getInstance().goActDownloadManager(this))
+                .setRightSecondBtn(this, R.drawable.search_black_img, view -> Jump2View.getInstance().goAppSearch(this, null))
+                .setTitleFinish(this);
+    }
+
+
+    @Override
+    protected Fragment initFragment() {
+        return new FgtGameRank();
+    }
+}

+ 9 - 14
app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpGameCenter4_0.java

@@ -1,13 +1,13 @@
 package com.sheep.gamegroup.module.game.adapter;
 
-import android.content.Context;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.ViewUtil;
-import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 import com.sheep.jiuyan.samllsheep.R;
 
 import java.util.List;
@@ -18,28 +18,23 @@ import static com.sheep.gamegroup.view.adapter.PlayGameListAdapter.setOnClickGam
  * Created by realicing on 2019/1/21.
  * realicing@sina.com
  */
-public class AdpGameCenter4_0 extends AdbCommonRecycler<GameEntity> {
+public class AdpGameCenter4_0 extends BaseQuickAdapter<GameEntity, BaseViewHolder> {
 
-    public AdpGameCenter4_0(Context context, List<GameEntity> list) {
-        super(context, list);
+    public AdpGameCenter4_0(List<GameEntity> list) {
+        super(R.layout.item_game_center_4_0, list);
     }
 
     @Override
-    public int getViewIdByType(int type) {
-        return R.layout.item_game_center_4_0;
-    }
-
-    @Override
-    public void convert(com.sheep.gamegroup.util.ViewHolder holder, GameEntity item) {
-        ImageView item_hot_welfare_iv = holder.itemView.findViewById(R.id.item_hot_welfare_iv);
-        TextView item_hot_welfare_tv = holder.itemView.findViewById(R.id.item_hot_welfare_tv);
+    protected void convert(BaseViewHolder helper, GameEntity item) {
+        ImageView item_hot_welfare_iv = helper.itemView.findViewById(R.id.item_hot_welfare_iv);
+        TextView item_hot_welfare_tv = helper.itemView.findViewById(R.id.item_hot_welfare_tv);
         if (item == null) {
             ViewUtil.setDefaultText(item_hot_welfare_tv);
         } else {
             // 加载数据
             ViewUtil.setText(item_hot_welfare_tv, item.getApp().getName());
             GlideImageLoader.setGameImage(item_hot_welfare_iv, item.getApp().getIcon());
-            setOnClickGameEntity(holder.itemView, item);
+            setOnClickGameEntity(helper.itemView, item);
         }
     }
 }

+ 32 - 0
app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpGameCenterType.java

@@ -0,0 +1,32 @@
+package com.sheep.gamegroup.module.game.adapter;
+
+import android.support.annotation.Nullable;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.module.game.model.GameCenterType;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.List;
+
+/**
+ * Created by realicing on 2019/1/21.
+ * realicing@sina.com
+ */
+public class AdpGameCenterType extends BaseQuickAdapter<GameCenterType, BaseViewHolder> {
+    public AdpGameCenterType(@Nullable List<GameCenterType> data) {
+        super(R.layout.item_game_center_type, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, GameCenterType item) {
+        ImageView item_gct_bg_iv = helper.itemView.findViewById(R.id.item_gct_bg_iv);
+        TextView item_gct_name_tv = helper.itemView.findViewById(R.id.item_gct_name_tv);
+
+        ViewUtil.setImage(item_gct_bg_iv, item.getIconUrl());
+        ViewUtil.setText(item_gct_name_tv, item.getName());
+    }
+}

+ 68 - 0
app/src/main/java/com/sheep/gamegroup/module/game/adapter/AdpGameCenterTypeList.java

@@ -0,0 +1,68 @@
+package com.sheep.gamegroup.module.game.adapter;
+
+import android.support.annotation.Nullable;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.absBase.AbsObserver;
+import com.sheep.gamegroup.helper.DownloadHelper;
+import com.sheep.gamegroup.model.api.IDownload;
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.module.game.model.GameCenterType;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.util.string.SpannableSb;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import java.util.List;
+import java.util.Locale;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import rx.functions.Action1;
+
+import static com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST;
+
+/**
+ * Created by realicing on 2019/1/21.
+ * realicing@sina.com
+ */
+public class AdpGameCenterTypeList extends BaseQuickAdapter<GameEntity, BaseViewHolder> {
+    public AdpGameCenterTypeList(@Nullable List<GameEntity> data) {
+        super(R.layout.item_game_center_type_list, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, GameEntity item) {
+        ImageView item_dm_icon_iv = helper.getView(R.id.item_dm_icon_iv);
+        TextView item_dm_name_tv = helper.getView(R.id.item_dm_name_tv);
+        TextView item_dm_info_tv = helper.getView(R.id.item_dm_info_tv);
+        TextView item_dm_btn_tv = helper.getView(R.id.item_dm_btn_tv);
+
+        IDownload download = item.getDownload();
+        if(download == null){
+            ViewUtil.setDefaultText(item_dm_name_tv);
+            ViewUtil.setDefaultText(item_dm_info_tv);
+        } else {
+            ViewUtil.setImage(item_dm_icon_iv, download.getIcon());
+            ViewUtil.setText(item_dm_name_tv, download.getTask_name());
+            String info = String.format(Locale.CHINA, "人在玩\u0020%sM\u3000", download.getPackage_size());
+            ViewUtil.setText(item_dm_info_tv, new SpannableSb().append(item.getDownload_count(), "#2EBEF2").append(info, "#8E8E8E")
+//                    .append(item.getManufacturer(), "#FD2D54")
+                    .getSsb());
+
+            item_dm_btn_tv.setTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + download.getDownload_link());
+            DownloadHelper downloadHelper = item.getDownloadHelper(download.getDownload_link());
+            if(downloadHelper != null){
+                downloadHelper.updateDownloadTaskView(SheepApp.getInstance().getCurrentActivity(), download, item_dm_btn_tv, o -> {
+
+                });
+            }
+        }
+    }
+}

+ 9 - 1
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtDownloadManager.java

@@ -160,7 +160,7 @@ public class FgtDownloadManager extends BaseListFragment6<String> {
                 updateView(getActivity(), item, item_dm_btn_tv);
             }
         };
-        appFormGameCenterAdapter = new AdpGameCenter4_0(SheepApp.getInstance(), apiRefresh2.getList());
+        appFormGameCenterAdapter = new AdpGameCenter4_0(apiRefresh2.getList());
         return new BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_play_game_list, tagList) {
 
             @Override
@@ -246,6 +246,14 @@ public class FgtDownloadManager extends BaseListFragment6<String> {
         super.onDestroyView();
     }
 
+    @Override
+    public void clear() {
+        downloadInfoHelperMap.clear();
+        super.clear();
+    }
+
+
+
 
     //更新下载进度
     private Map<String, DownloadInfoHelper> downloadInfoHelperMap = new HashMap<>();

+ 1 - 5
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameCenter.java

@@ -1,15 +1,12 @@
 package com.sheep.gamegroup.module.game.fragment;
 
-import android.content.Intent;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageButton;
 
-import com.sheep.gamegroup.module.game.activity.ActDownloadManager;
 import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.view.activity.ActMain;
 import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter;
 import com.sheep.gamegroup.view.fragment.FgtWelfareCenter;
@@ -98,8 +95,7 @@ public class FgtGameCenter extends BaseFragment {
 
     @OnClick(R.id.download_btn)
     public void doDownload(View v) {
-        startActivity(new Intent(getContext(), ActDownloadManager.class));
-        UMConfigUtils.onEvent(UMConfigUtils.Event.GAME_DOWNLOAD_MANAGER);
+        Jump2View.getInstance().goActDownloadManager(getActivity());
     }
 
     @OnClick(R.id.search_btn)

+ 160 - 0
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameCenterType.java

@@ -0,0 +1,160 @@
+package com.sheep.gamegroup.module.game.fragment;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.absBase.AbsGetDownloadListener;
+import com.sheep.gamegroup.absBase.IApiRefresh;
+import com.sheep.gamegroup.absBase.NetApiRefresh;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.helper.DownloadHelper;
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.api.IDownload;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.module.game.adapter.AdpGameCenterTypeList;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.fragment.BaseListFragment6;
+
+import org.afinal.simplecache.ApiKey;
+import org.greenrobot.eventbus.Subscribe;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.Observable;
+
+import static com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST;
+
+/**
+ * Created by realicing on 2019/1/21.
+ * realicing@sina.com
+ * 小绵羊3.4.10新增 -- 绵羊新游、免费道具、绵羊推荐 界面
+ */
+public class FgtGameCenterType extends BaseListFragment6<GameEntity> {
+
+
+    private int type;
+    public static FgtGameCenterType newInstance(int type) {
+        FgtGameCenterType fgt = new FgtGameCenterType();
+        Bundle bundle = new Bundle();
+        bundle.putInt("type", type);
+        fgt.setArguments(bundle);
+        return fgt;
+    }
+//    homepage_item_banner
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = super.onCreateView(inflater, container, savedInstanceState);
+        Bundle bundle = getArguments();
+        if (bundle != null) {
+            type = bundle.getInt("type", 0);
+        }
+        return rootView;
+    }
+
+    private NetApiRefresh<GameEntity> apiRefresh;
+    @Override
+    protected void addApiRefresh(List<IApiRefresh> apiRefreshList) {
+        apiRefresh = new NetApiRefresh<GameEntity>(this) {
+            @Override
+            public String getKey(int page, int per_page) {
+                return ApiKey.pageKeyUrl(ApiKey.getGameGroup, page, per_page);
+            }
+
+            @Override
+            public Observable<BaseMessage> getApi(ApiService apiService) {
+                return apiService.getGameGroupByTag(type, page, per_page);
+            }
+
+            @Override
+            public Class<GameEntity> getTClass() {
+                return GameEntity.class;
+            }
+
+            @Override
+            protected void loadList(List<GameEntity> addList) {
+                if(addList != null) {
+                    for (GameEntity item : addList) {
+                        IDownload download = item.getDownload();
+                        if (download != null) {
+                            gameEntityMap.put(download.getDownload_link(), item);
+                            gameEntityMap.put(download.getPackage_names(), item);
+                        }
+                    }
+                }
+                super.loadList(addList);
+            }
+        };
+        apiRefreshList.add(apiRefresh);
+    }
+
+    @Override
+    protected BaseQuickAdapter<GameEntity, BaseViewHolder> getAdapter() {
+        return new AdpGameCenterTypeList(apiRefresh.getList());
+    }
+
+    @Override
+    public void clear() {
+        gameEntityMap.clear();
+        super.clear();
+    }
+
+
+
+    //更新下载进度
+    private Map<String, GameEntity> gameEntityMap = new HashMap<>();
+
+    private AbsGetDownloadListener absGetDownloadListener = new AbsGetDownloadListener(true) {
+        @Override
+        public String getDownloadUrl(String packageName) {
+            GameEntity item = gameEntityMap.get(packageName);
+            return item != null && item.getDownload() != null ? item.getDownload().getDownload_link() : null;
+        }
+
+        @Override
+        public TextView getTextView2(String packageName) {
+            return recyclerView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + getDownloadUrl(packageName));
+        }
+
+        @Override
+        public TextView getTextView(String downloadUrl) {
+            return recyclerView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + downloadUrl);
+        }
+
+        @Override
+        public DownloadHelper getDownloadHelper(String downloadUrl) {
+            GameEntity item = gameEntityMap.get(downloadUrl);
+            return item != null ? item.getDownloadHelper(downloadUrl) : null;
+        }
+    };
+
+    @Subscribe
+    public void onEventMainThread(Intent intent) {
+        absGetDownloadListener.onEventMainThread(intent);
+    }
+
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        absGetDownloadListener.onEventMainThread(event);
+    }
+
+    @Override
+    public void initView() {
+        super.initView();
+        ViewUtil.register(this);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        ViewUtil.unregister(this);
+    }
+}

+ 127 - 0
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGameRank.java

@@ -0,0 +1,127 @@
+package com.sheep.gamegroup.module.game.fragment;
+
+import android.content.Intent;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.absBase.AbsGetDownloadListener;
+import com.sheep.gamegroup.absBase.IApiRefresh;
+import com.sheep.gamegroup.absBase.NetApiRefresh;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.helper.DownloadHelper;
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.module.game.adapter.AdpGameCenterTypeList;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.fragment.BaseListFragment6;
+
+import org.afinal.simplecache.ApiKey;
+import org.greenrobot.eventbus.Subscribe;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.Observable;
+
+import static com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST;
+
+/**
+ * Created by realicing on 2019/1/21.
+ * realicing@sina.com
+ * 小绵羊3.4.10新增 -- 游戏排行榜 界面
+ */
+public class FgtGameRank extends BaseListFragment6<GameEntity> {
+    private NetApiRefresh<GameEntity> apiRefresh;
+    @Override
+    protected void addApiRefresh(List<IApiRefresh> apiRefreshList) {
+        apiRefresh = new NetApiRefresh<GameEntity>(this) {
+            @Override
+            public String getKey(int page, int per_page) {
+                return ApiKey.getFindRank;
+            }
+
+            @Override
+            public Observable<BaseMessage> getApi(ApiService apiService) {
+                return apiService.getFindRank();
+            }
+
+            @Override
+            public Class<GameEntity> getTClass() {
+                return GameEntity.class;
+            }
+
+            @Override
+            protected boolean hasMore() {
+                return false;
+            }
+        };
+        apiRefreshList.add(apiRefresh);
+    }
+
+    @Override
+    protected BaseQuickAdapter<GameEntity, BaseViewHolder> getAdapter() {
+        return new AdpGameCenterTypeList(apiRefresh.getList());
+    }
+
+
+
+    @Override
+    public void clear() {
+        gameEntityMap.clear();
+        super.clear();
+    }
+
+
+
+    //更新下载进度
+    private Map<String, GameEntity> gameEntityMap = new HashMap<>();
+
+    private AbsGetDownloadListener absGetDownloadListener = new AbsGetDownloadListener(true) {
+        @Override
+        public String getDownloadUrl(String packageName) {
+            GameEntity item = gameEntityMap.get(packageName);
+            return item != null && item.getDownload() != null ? item.getDownload().getDownload_link() : null;
+        }
+
+        @Override
+        public TextView getTextView2(String packageName) {
+            return recyclerView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + getDownloadUrl(packageName));
+        }
+
+        @Override
+        public TextView getTextView(String downloadUrl) {
+            return recyclerView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + downloadUrl);
+        }
+
+        @Override
+        public DownloadHelper getDownloadHelper(String downloadUrl) {
+            GameEntity item = gameEntityMap.get(downloadUrl);
+            return item != null ? item.getDownloadHelper(downloadUrl) : null;
+        }
+    };
+
+    @Subscribe
+    public void onEventMainThread(Intent intent) {
+        absGetDownloadListener.onEventMainThread(intent);
+    }
+
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        absGetDownloadListener.onEventMainThread(event);
+    }
+
+    @Override
+    public void initView() {
+        super.initView();
+        ViewUtil.register(this);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        ViewUtil.unregister(this);
+    }
+}

+ 20 - 1
app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtPlayGame.java

@@ -27,10 +27,12 @@ import com.sheep.gamegroup.model.entity.GameRecommend;
 import com.sheep.gamegroup.model.entity.ListTypeList;
 import com.sheep.gamegroup.model.entity.SlideshowEty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.module.game.adapter.AdpGameCenterType;
 import com.sheep.gamegroup.module.game.model.GameCenterType;
 import com.sheep.gamegroup.module.game.model.PackageTypes;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ObservableUtil;
 import com.sheep.gamegroup.util.RefreshUtil;
@@ -68,6 +70,8 @@ import io.reactivex.schedulers.Schedulers;
 public class FgtPlayGame extends BaseFragment {
     @BindView(R.id.banner)
     Banner banner;
+    @BindView(R.id.play_game_center_type_list)
+    RecyclerView play_game_center_type_list;
     @BindView(R.id.play_game_list_x_rv)
     RecyclerView play_game_list_x_rv;
     @BindView(R.id.refresh)
@@ -75,6 +79,8 @@ public class FgtPlayGame extends BaseFragment {
 
     //绵羊新游、免费道具、绵羊推荐、排行榜
     private List<GameCenterType> gameCenterList = new ArrayList<>();
+    public static final String[] GAME_CENTER_TYPE_NAME = {"绵羊新游", "免费道具", "绵羊推荐", "排行榜"};
+    public static final int[] GAME_CENTER_TYPE_ID = {1, 2, 3, -1};//1:绵羊新游 2:绵羊推荐 3:免费道具
     //预下载和tag列表的数据
     private List<ListTypeList<GameEntity, GameListType>> gameEntityListx = new ArrayList<>();
     private List<SlideshowEty> slideshowEtyLists = new ArrayList<>();
@@ -94,7 +100,20 @@ public class FgtPlayGame extends BaseFragment {
         banner.setLayoutParams(bannerLayoutParams);
 
         //绵羊新游、免费道具、绵羊推荐、排行榜
-
+        int i = 0;
+        for (String name : GAME_CENTER_TYPE_NAME) {
+            GameCenterType item = new GameCenterType();
+            item.setName(name);
+            item.setId(GAME_CENTER_TYPE_ID[i]);
+            gameCenterList.add(item);
+            i++;
+        }
+        play_game_center_type_list.setHasFixedSize(true);
+        play_game_center_type_list.setNestedScrollingEnabled(false);
+        play_game_center_type_list.setLayoutManager(new GridLayoutManager(SheepApp.getInstance(), 2));
+        BaseQuickAdapter baseQuickAdapter = new AdpGameCenterType(gameCenterList);
+        baseQuickAdapter.bindToRecyclerView(play_game_center_type_list);
+        baseQuickAdapter.setOnItemClickListener((adapter, view, position) -> Jump2View.getInstance().goActGameCenterType(getActivity(), ListUtil.getItem(gameCenterList, position)));
         //预下载与其它列表
         play_game_list_x_rv.setHasFixedSize(true);
         play_game_list_x_rv.setNestedScrollingEnabled(false);

+ 26 - 0
app/src/main/java/com/sheep/gamegroup/module/game/model/GameCenterType.java

@@ -1,9 +1,35 @@
 package com.sheep.gamegroup.module.game.model;
 
+import com.sheep.gamegroup.util.ViewUtil;
+
 /**
  * Created by realicing on 2019/1/18.
  * realicing@sina.com
  * 小绵羊3.4.10新增 -- 游戏中心4个模块类型 绵羊新游、免费道具、绵羊推荐、排行榜
  */
 public class GameCenterType {
+    private String name;
+    private int id;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+
+
+    public String getIconUrl() {
+        return ViewUtil.getNetImgByName(name);
+    }
 }

+ 40 - 0
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Bundle;
+import android.support.v4.app.FragmentActivity;
 import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.View;
@@ -52,7 +53,11 @@ import com.sheep.gamegroup.model.entity.XianWanEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.module.ad_htxd.model.ArticleAd;
 import com.sheep.gamegroup.module.find.activity.ActMediaChoose;
+import com.sheep.gamegroup.module.game.activity.ActDownloadManager;
+import com.sheep.gamegroup.module.game.activity.ActGameCenterType;
 import com.sheep.gamegroup.module.game.activity.ActGameGroupMore;
+import com.sheep.gamegroup.module.game.activity.ActGameRank;
+import com.sheep.gamegroup.module.game.model.GameCenterType;
 import com.sheep.gamegroup.module.login.ChangePasswordAct;
 import com.sheep.gamegroup.module.login.LoginAct;
 import com.sheep.gamegroup.module.plugin.model.Plugin;
@@ -165,6 +170,7 @@ import com.sheep.jiuyan.samllsheep.ui.activity.SignActivity;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.youmi.android.offer.BaseActYmPermissionCheck;
 import com.youmi.android.offer.YmConfig;
 import com.zhy.http.okhttp.OkHttpUtils;
@@ -2717,4 +2723,38 @@ public class Jump2View {
             goWeb(activity, webParams);
         });
     }
+
+    /**
+     * 小绵羊3.4.10新增 -- 跳转  界面 绵羊新游、免费道具、绵羊推荐、排行榜 界面
+     * @param activity
+     * @param item
+     */
+    public void goActGameCenterType(Activity activity, GameCenterType item) {
+        if(item == null){
+            return;
+        }
+        if(activity == null){
+            activity = SheepApp.getInstance().getCurrentActivity();
+        }
+        Intent intent;
+        switch (item.getId()){
+            case -1:
+                intent = new Intent(activity, ActGameRank.class);
+                break;
+            default:
+                intent = new Intent(activity, ActGameCenterType.class);
+                break;
+        }
+        DataUtil.putObject(intent, item);
+        activity.startActivity(intent);
+    }
+    /**
+     * 小绵羊3.4.10新增 -- 跳转  下载管理 界面
+     * @param activity
+     */
+    public void goActDownloadManager(Activity activity) {
+        TitleBarUtils.getInstance().setRightRedPoint(activity, View.GONE);
+        activity.startActivity(new Intent(activity, ActDownloadManager.class));
+        UMConfigUtils.onEvent(UMConfigUtils.Event.GAME_DOWNLOAD_MANAGER);
+    }
 }

+ 5 - 0
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -2049,6 +2049,11 @@ public class ViewUtil {
             view.setVisibility(isVisible ? View.VISIBLE : View.GONE);
         }
     }
+    public static void setVisibility(View view, int visible) {
+        if (view != null) {
+            view.setVisibility(visible);
+        }
+    }
 
     public static void toggleVisibility(View view) {
         if (view != null) {

+ 5 - 4
app/src/main/java/com/sheep/gamegroup/util/string/SpannableSb.java

@@ -25,7 +25,8 @@ public class SpannableSb {
     private int start;
     private int end;
 
-    public SpannableSb append(String text) {
+    public SpannableSb append(Object object) {
+        String text = object.toString();
         if(TextUtils.isEmpty(text)){
             return this;
         }
@@ -70,13 +71,13 @@ public class SpannableSb {
         ssb.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
         return this;
     }
-    public SpannableSb append(String text, @DimenRes int textSize) {
+    public SpannableSb append(Object text, @DimenRes int textSize) {
         return append(text).setTextSize(textSize);
     }
-    public SpannableSb append(String text, String textColor) {
+    public SpannableSb append(Object text, String textColor) {
         return append(text).setTextColor(textColor);
     }
-    public SpannableSb append(String text, @DimenRes int textSize, String textColor) {
+    public SpannableSb append(Object text, @DimenRes int textSize, String textColor) {
         return append(text).setTextSize(textSize).setTextColor(textColor);
     }
 

+ 4 - 19
app/src/main/java/com/sheep/gamegroup/view/activity/GamemakeMoneyAct.java

@@ -1,7 +1,6 @@
 package com.sheep.gamegroup.view.activity;
 
 import android.app.Activity;
-import android.content.Intent;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.view.View;
@@ -10,9 +9,8 @@ import android.widget.LinearLayout;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.model.entity.DialogConfig;
-import com.sheep.gamegroup.module.game.activity.ActDownloadManager;
 import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.UMConfigUtils;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdpTryMakemoney;
 import com.sheep.gamegroup.view.fragment.FgtGameConsumptionMyGame;
@@ -66,22 +64,9 @@ public class GamemakeMoneyAct extends BaseActivity {
                 .setShowOrHide(this, true)
                 .setTitle(activity, getString(R.string.game_task))
                 .setTitleFinish(activity)
-                .setRightSecondBtn(activity, R.mipmap.question_black_img, new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                        ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("温馨提示").setBtnLeftText("我知道了")
-                                .setMsg("该栏目为日常福利,不可提现,不参与好友提成。"));
-                    }
-                })
-                .setRightImgBotton(activity, R.drawable.index_download, new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                        TitleBarUtils.getInstance()
-                                .setRightRedPoint(activity, View.GONE);
-                        startActivity(new Intent(activity, ActDownloadManager.class));
-                        UMConfigUtils.onEvent(UMConfigUtils.Event.GAME_DOWNLOAD_MANAGER);
-                    }
-                });
+                .setRightSecondBtn(activity, R.mipmap.question_black_img, view -> ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("温馨提示").setBtnLeftText("我知道了")
+                        .setMsg("该栏目为日常福利,不可提现,不参与好友提成。")))
+                .setRightImgBotton(activity, R.drawable.index_download, view -> Jump2View.getInstance().goActDownloadManager(this));
 
         mAdapter = new AdpTryMakemoney(getSupportFragmentManager(), this);
         mAdapter.add(FgtTryMakeMoney.newInstance(0), getString(R.string.recommend_task));

+ 4 - 19
app/src/main/java/com/sheep/gamegroup/view/activity/TryMakeMoneyact.java

@@ -1,7 +1,6 @@
 package com.sheep.gamegroup.view.activity;
 
 import android.app.Activity;
-import android.content.Intent;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.view.View;
@@ -9,8 +8,7 @@ import android.view.View;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.model.entity.DialogConfig;
-import com.sheep.gamegroup.module.game.activity.ActDownloadManager;
-import com.sheep.gamegroup.util.UMConfigUtils;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdpTryMakemoney;
 import com.sheep.gamegroup.view.fragment.FgtTryMakeMoney;
@@ -61,22 +59,9 @@ public class TryMakeMoneyact extends BaseActivity {
                 .getInstance()
                 .setTitle(activity, title).setTitleFinish(activity)
                 .setShowOrHide(this, true)
-                .setRightSecondBtn(activity, R.mipmap.question_black_img, new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                        ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("温馨提示").setBtnLeftText("我知道了")
-                                .setMsg(getString(R.string.cash_task_and_share_friend_benefit)));
-                    }
-                })
-                .setRightImgBotton(activity, R.drawable.index_download, new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                        TitleBarUtils.getInstance()
-                                .setRightRedPoint(activity, View.GONE);
-                        startActivity(new Intent(TryMakeMoneyact.this, ActDownloadManager.class));
-                        UMConfigUtils.onEvent(UMConfigUtils.Event.GAME_DOWNLOAD_MANAGER);
-                    }
-                });
+                .setRightSecondBtn(activity, R.mipmap.question_black_img, view -> ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("温馨提示").setBtnLeftText("我知道了")
+                        .setMsg(getString(R.string.cash_task_and_share_friend_benefit))))
+                .setRightImgBotton(activity, R.drawable.index_download, view -> Jump2View.getInstance().goActDownloadManager(this));
 
         mAdapter = new AdpTryMakemoney(getSupportFragmentManager(), this);
         mAdapter.add(FgtTryMakeMoney.newInstance(0), "");

+ 6 - 3
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java

@@ -58,6 +58,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BulletinEnty;
 import com.sheep.gamegroup.model.entity.CashAwarsEntity;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
+import com.sheep.gamegroup.model.entity.Lp;
 import com.sheep.gamegroup.model.entity.MessageUnReadEntity;
 import com.sheep.gamegroup.model.entity.MoreDataEntity;
 import com.sheep.gamegroup.model.entity.RecyleObj;
@@ -91,6 +92,7 @@ import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.string.SpannableSb;
+import com.sheep.gamegroup.util.viewHelper.LayoutParamsUtil;
 import com.sheep.gamegroup.view.activity.ActMsg;
 import com.sheep.gamegroup.view.activity.NotificationsUtils;
 import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
@@ -640,11 +642,12 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                 .build()
                 .inject(this);
         recyclerInitView();
-        ViewGroup.LayoutParams bannerLayoutParams = banner.getLayoutParams();
+//        ViewGroup.LayoutParams bannerLayoutParams = banner.getLayoutParams();
         initBannerHeight();
-        bannerLayoutParams.height = bannerHeight;//图片比例发生变化 :306*720
+//        bannerLayoutParams.height = bannerHeight;//图片比例发生变化 :306*720
 //        bannerLayoutParams.height = G.WIDTH * 25 / 72;
-        banner.setLayoutParams(bannerLayoutParams);
+//        banner.setLayoutParams(bannerLayoutParams);
+        LayoutParamsUtil.resetLayoutParams(banner, new Lp().setHeight(bannerHeight).setLrMargin(G.getRealPix(13)));
 
         /**
          * tablayout

+ 2 - 3
app/src/main/java/com/sheep/jiuyan/samllsheep/utils/TitleBarUtils.java

@@ -396,8 +396,7 @@ public class TitleBarUtils {
      * @param visibility
      */
     public void setRightRedPoint(Activity activity, int visibility) {
-
-        activity.getWindow().getDecorView().findViewById(R.id.img_download_manager_dots).setVisibility(visibility);
+        ViewUtil.setVisibility(activity.getWindow().getDecorView().findViewById(R.id.img_download_manager_dots), visibility);
     }
 
     /**
@@ -416,7 +415,7 @@ public class TitleBarUtils {
      * @param visibility
      */
     public void setRightImgBtnVisibility(Activity activity, int visibility) {
-        activity.getWindow().getDecorView().findViewById(R.id.ibtn_baseactivity_right).setVisibility(visibility);
+        ViewUtil.setVisibility(activity.getWindow().getDecorView().findViewById(R.id.ibtn_baseactivity_right), visibility);
     }
 
     /**

+ 4 - 0
app/src/main/java/org/afinal/simplecache/ApiKey.java

@@ -84,6 +84,10 @@ public class ApiKey {
     public static final String getMyGmeList = "app/game_consumption/my_games_v2";
     //获取下载管理界面中的猜你喜欢 3.4.10新增
     public static final String getFindUserLike = "app/find/user_like";
+    //获取 游戏排行榜列表 3.4.10新增
+    public static final String getFindRank = "app/find/rank";
+    //获取 获取游戏组列表 3.4.10新增
+    public static final String getGameGroup = "app/game_group";
 
     public static final String getPackageVersion(String package_name, String type, int version){
         return String.format(Locale.CHINA, "%s?package_name=%s&type=%s&version=%d", getPackageVersion, package_name, type, version);

+ 7 - 1
app/src/main/res/layout/fgt_play_game.xml

@@ -19,7 +19,13 @@
 
             <include layout="@layout/homepage_item_banner" />
 
-            <include layout="@layout/include_game_group_type"/>
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/play_game_center_type_list"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="2dp"
+                android:layout_marginEnd="15dp"/>
+
             <android.support.v7.widget.RecyclerView
                 android:id="@+id/play_game_act"
                 android:layout_width="match_parent"

+ 0 - 2
app/src/main/res/layout/homepage_item_banner.xml

@@ -4,8 +4,6 @@
     android:id="@+id/banner"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginStart="@dimen/content_padding"
-    android:layout_marginEnd="@dimen/content_padding"
     app:indicator_margin="2dp"
     app:indicator_height="5dp"
     app:indicator_width="5dp"

+ 30 - 0
app/src/main/res/layout/item_game_center_type.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginStart="15dp"
+    android:layout_marginEnd="6dp"
+    android:minHeight="52dp">
+
+    <ImageView
+        android:id="@+id/item_gct_bg_iv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:adjustViewBounds="true"
+        android:scaleType="fitXY"
+        android:src="@drawable/loading_01"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/item_gct_name_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="15dp"
+        android:text="绵羊新游"
+        android:textColor="#ffffffff"
+        android:textSize="16sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 68 - 0
app/src/main/res/layout/item_game_center_type_list.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="94dp"
+    android:paddingStart="16dp"
+    android:paddingTop="16dp"
+    android:paddingEnd="16dp">
+
+    <ImageView
+        android:id="@+id/item_dm_icon_iv"
+        android:layout_width="62dp"
+        android:layout_height="62dp"
+        android:layout_marginTop="5dp"
+        android:layout_marginBottom="16dp"
+        android:src="@drawable/loading_01"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/item_dm_name_tv"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="11dp"
+        android:text="永恒仙域"
+        android:textColor="#ff333333"
+        android:textSize="18sp"
+        android:layout_marginEnd="5dp"
+        app:layout_constraintEnd_toStartOf="@id/item_dm_btn_tv"
+        app:layout_constraintStart_toEndOf="@id/item_dm_icon_iv"
+        app:layout_constraintTop_toTopOf="@id/item_dm_icon_iv" />
+
+    <TextView
+        android:id="@+id/item_dm_info_tv"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_marginBottom="16dp"
+        android:gravity="center_vertical"
+        android:text="1.28G"
+        android:textColor="#ff8e8e8e"
+        android:textSize="12sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_marginEnd="5dp"
+        app:layout_constraintEnd_toStartOf="@id/item_dm_btn_tv"
+        app:layout_constraintStart_toStartOf="@id/item_dm_name_tv"
+        app:layout_constraintTop_toBottomOf="@id/item_dm_name_tv" />
+
+
+    <TextView
+        android:id="@+id/item_dm_btn_tv"
+        style="@style/style_button_find"
+        android:layout_marginBottom="16dp"
+        android:text="下载"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="1dp"
+        android:layout_marginStart="10dp"
+        android:layout_marginEnd="8dp"
+        android:background="#F2F2F2"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+</android.support.constraint.ConstraintLayout>