Просмотр исходного кода

功能开发:游戏详情页面开发

Sora 1 год назад
Родитель
Сommit
0ba044063d
29 измененных файлов с 806 добавлено и 593 удалено
  1. 1 1
      app/src/main/AndroidManifest.xml
  2. 17 6
      app/src/main/java/com/kfzs/duanduan/utils/NumberFormatUtils.java
  3. 28 11
      app/src/main/java/com/sheep/gamegroup/model/entity/Applications.java
  4. 8 8
      app/src/main/java/com/sheep/gamegroup/model/entity/ShowAll.java
  5. 192 192
      app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGameGroupOrGameDetail.java
  6. 6 7
      app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGitBagList.java
  7. 1 1
      app/src/main/java/com/sheep/gamegroup/module/game/fragment/FgtGiftBagList.java
  8. 2 1
      app/src/main/java/com/sheep/gamegroup/module/game/model/GameGroup.java
  9. 82 0
      app/src/main/java/com/sheep/gamegroup/module/libao/GiftListDialogFragment.java
  10. 32 30
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  11. 3 3
      app/src/main/java/com/sheep/gamegroup/util/TextViewUtil.java
  12. 43 21
      app/src/main/java/com/sheep/gamegroup/util/string/SpannableSb.java
  13. 2 3
      app/src/main/java/com/sheep/gamegroup/view/adapter/GiftCenterAdapter.java
  14. 10 0
      app/src/main/res/drawable/bg_bottom_sheet_fragment.xml
  15. 3 8
      app/src/main/res/drawable/shape_blue_stroke_rectangle_no_lb.xml
  16. 9 0
      app/src/main/res/drawable/star_full.xml
  17. 9 0
      app/src/main/res/drawable/title_icon_3dp.xml
  18. 236 257
      app/src/main/res/layout/act_game_group_or_game_detail.xml
  19. 39 0
      app/src/main/res/layout/bottom_sheet_fragment.xml
  20. 8 2
      app/src/main/res/layout/fgt_gc_game_app_detail.xml
  21. 3 3
      app/src/main/res/layout/item_download_welfare.xml
  22. 7 5
      app/src/main/res/layout/item_gc_game_app_63.xml
  23. 2 0
      app/src/main/res/layout/item_gc_game_app_channel_list.xml
  24. 12 5
      app/src/main/res/layout/item_gc_game_app_detail_list.xml
  25. 27 15
      app/src/main/res/layout/item_gc_game_app_intro.xml
  26. 8 8
      app/src/main/res/layout/item_gc_game_info.xml
  27. 3 1
      app/src/main/res/layout/item_image.xml
  28. 5 5
      app/src/main/res/layout/item_tag.xml
  29. 8 0
      app/src/main/res/values/styles.xml

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -1059,7 +1059,7 @@
         <activity
             android:name="com.sheep.gamegroup.module.game.activity.ActGitBagList"
             android:screenOrientation="portrait"
-            android:theme="@style/AppActionTheme" />
+            android:theme="@style/MyDialogStyle" />
 
         <provider
             android:name=".provider.TokenRenewalProvider"

+ 17 - 6
app/src/main/java/com/kfzs/duanduan/utils/NumberFormatUtils.java

@@ -140,22 +140,32 @@ public class NumberFormatUtils {
 
     public static String retainMost2W(double bonus) {
         if (bonus < 1_0000f) {
-            return NumberFormatUtils.retainMost2(bonus);
+            return NumberFormatUtils.retainMost1(bonus);
+
         } else if (bonus < 100_0000f) {
             double number = bonus / 1_0000f;
-            return NumberFormatUtils.retainMost2(number) + "万";
+            return NumberFormatUtils.retainMost1(number) + "W";
         } else if (bonus < 10000_0000f) {
             double number = bonus / 100_0000f;
-            return NumberFormatUtils.retainMost2(number) + "百万";
+            return NumberFormatUtils.retainMost1(number) + "百万";
         } else if (bonus < 100_0000_0000f) {
             double number = bonus / 10000_0000f;
-            return NumberFormatUtils.retainMost2(number) + "亿";
+            return NumberFormatUtils.retainMost1(number) + "亿";
         } else if (bonus < 10000_0000_0000f) {
             double number = bonus / 100_0000_0000f;
-            return NumberFormatUtils.retainMost2(number) + "百亿";
+            return NumberFormatUtils.retainMost1(number) + "百亿";
         } else {
             double number = bonus / 10000_0000_0000f;
-            return NumberFormatUtils.retainMost2(number) + "万亿";
+            return NumberFormatUtils.retainMost1(number) + "万亿";
+        }
+    }
+
+    public static String retainMost1W(double bonus) {
+        if (bonus < 1_0000f) {
+            return NumberFormatUtils.retainMost1(bonus);
+        } else {
+            double number = bonus / 1_0000f;
+            return NumberFormatUtils.retainMost1(number) + "W";
         }
     }
 
@@ -169,6 +179,7 @@ public class NumberFormatUtils {
         DecimalFormat df = new DecimalFormat("0.0");
         return df.format(bonus);
     }
+
     /**
      * 保留两位小数
      *

+ 28 - 11
app/src/main/java/com/sheep/gamegroup/model/entity/Applications.java

@@ -11,6 +11,7 @@ import com.sheep.gamegroup.util.string.SpannableSb;
 import com.sheep.jiuyan.samllsheep.R;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 import rx.functions.Action1;
@@ -100,7 +101,7 @@ public class Applications implements IDownload, IGameGroup, Serializable {
     //赏金数量
     private double reward_sum = 0;
     //1下载  2预约
-    private int mobile_appointment=0;
+    private int mobile_appointment = 0;
 
     private int activity_id;
 
@@ -129,6 +130,7 @@ public class Applications implements IDownload, IGameGroup, Serializable {
     public void setMobile_appointment(int mobile_appointment) {
         this.mobile_appointment = mobile_appointment;
     }
+
     public int getGame_discount_id() {
         return game_discount_id;
     }
@@ -434,9 +436,6 @@ public class Applications implements IDownload, IGameGroup, Serializable {
     }
 
 
-
-
-
     @Override
     public String getPackage_names() {
         return package_name;
@@ -456,20 +455,19 @@ public class Applications implements IDownload, IGameGroup, Serializable {
     public String getTask_name() {
         return name;
     }
+
     @Override
     public int getAppId() {
         return Id;
     }
 
 
-
     @Override
     public String getPackageSizeMsg() {
         return package_size + "M";
     }
 
 
-
     /**
      * 是否可以下载
      *
@@ -520,26 +518,45 @@ public class Applications implements IDownload, IGameGroup, Serializable {
     public CharSequence getInfo(Action1<SpannableSb> action1) {
         return new SpannableSb("#999999", R.dimen.text_size_12)
                 .callAction(action1)
-                .append(package_size+"M").defaultTcTs()
+                .append(package_size + "M").defaultTcTs()
                 .kgz().append(NumberFormatUtils.retainMost2W(download_count), "#2EBEF2").defaultTextSize()
                 .append("人在玩").defaultTcTs()
                 .getSsb();
     }
+
     public CharSequence getInfoContainGameFrom() {
-        if(TextUtils.isEmpty(getGameFrom())){
+        if (TextUtils.isEmpty(getGameFrom())) {
             return getInfo();
         }
-        return getInfo(spannableSb -> spannableSb.append("来源:", R.dimen.text_size_11, "#8e8e8e").kgy().kgy().append(getGameFrom(), R.dimen.text_size_11, "#8e8e8e") .br());
+        return getInfo(spannableSb -> spannableSb.append("来源:", R.dimen.text_size_11, "#8e8e8e").kgy().kgy().append(getGameFrom(), R.dimen.text_size_11, "#8e8e8e").br());
     }
+
+    public CharSequence getPlayInfo() {
+        List<GameListTag> tags = getTags();
+        List<String> tagList = new ArrayList<>();
+        for (GameListTag tag : tags) {
+            tagList.add(tag.getName());
+        }
+        String tagStr = String.join("/", tagList);
+        SpannableSb sb = new SpannableSb();
+        if (!tagStr.isEmpty()) {
+            sb.append(tagStr).kgy();
+        }
+        //显示类型的拼接,再是人数的拼接
+        return sb.append(NumberFormatUtils.retainMost1W(download_count))
+                .append("人在玩")
+                .getSsb();
+    }
+
     public CharSequence getSimpleInfo() {
         return new SpannableSb().append(NumberFormatUtils.retainMost2W(download_count), "#2EBEF2").append("人在玩", "#999999").getSsb();
     }
 
     //游戏来源
     public String getGameFrom() {
-        if(TextUtils.isEmpty(package_type_name)){
+        if (TextUtils.isEmpty(package_type_name)) {
             return port_type_name;
-        } else if(TextUtils.isEmpty(port_type_name)){
+        } else if (TextUtils.isEmpty(port_type_name)) {
             return package_type_name;
         }
         return port_type_name + "·" + package_type_name;

+ 8 - 8
app/src/main/java/com/sheep/gamegroup/model/entity/ShowAll.java

@@ -75,7 +75,7 @@ public class ShowAll {
     //显示全部按钮的id
     private int introShowAllId = R.id.intro_show_all;
     //替换显示全部按钮位置的控件的id
-    private int introShowAllNoId = R.id.intro_show_all_no;
+//    private int introShowAllNoId = R.id.intro_show_all_no;
 
     public int getIntroShowAllId() {
         return introShowAllId;
@@ -86,14 +86,14 @@ public class ShowAll {
         return this;
     }
 
-    public int getIntroShowAllNoId() {
-        return introShowAllNoId;
-    }
+//    public int getIntroShowAllNoId() {
+//        return introShowAllNoId;
+//    }
 
-    public ShowAll setIntroShowAllNoId(int introShowAllNoId) {
-        this.introShowAllNoId = introShowAllNoId;
-        return this;
-    }
+//    public ShowAll setIntroShowAllNoId(int introShowAllNoId) {
+//        this.introShowAllNoId = introShowAllNoId;
+//        return this;
+//    }
 
     public int getIntroContentId() {
         return introContentId;

+ 192 - 192
app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGameGroupOrGameDetail.java

@@ -1,24 +1,28 @@
 package com.sheep.gamegroup.module.game.activity;
 
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_SHARE;
+import static com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST;
+import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
+
 import android.content.Intent;
 import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import com.google.android.material.tabs.TabLayout;
-import androidx.fragment.app.Fragment;
-import androidx.viewpager.widget.ViewPager;
-import androidx.appcompat.widget.AppCompatRatingBar;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
 import android.text.TextUtils;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.viewbinding.ViewBinding;
+
 import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.google.android.material.tabs.TabLayout;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
 import com.kfzs.duanduan.utils.StatusBarUtils;
-import com.scwang.smartrefresh.layout.SmartRefreshLayout;
 import com.scwang.smartrefresh.layout.api.RefreshLayout;
 import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
 import com.sheep.gamegroup.absBase.AbsGetDownloadListener;
@@ -34,10 +38,8 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.GameListTag;
 import com.sheep.gamegroup.model.entity.Lp;
-import com.sheep.gamegroup.model.entity.WebParams;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.module.game.adapter.AdpGameGroupGameCompare;
-import com.sheep.gamegroup.module.game.fragment.FgtGameComment;
 import com.sheep.gamegroup.module.game.fragment.FgtGameDetail;
 import com.sheep.gamegroup.module.game.fragment.FgtGameGift;
 import com.sheep.gamegroup.module.game.fragment.FgtGameWelfare;
@@ -57,15 +59,14 @@ import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.viewHelper.LayoutParamsUtil;
 import com.sheep.gamegroup.view.activity.ActPlayVideo;
 import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter2;
-import com.sheep.jiuyan.samllsheep.Config;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.databinding.ActGameGroupOrGameDetailBinding;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.shuyu.gsyvideoplayer.GSYVideoManager;
 import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
 import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack;
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
 
 import org.afinal.simplecache.ApiKey;
 import org.greenrobot.eventbus.EventBus;
@@ -77,15 +78,9 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import butterknife.BindView;
-import butterknife.OnClick;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_SHARE;
-import static com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST;
-import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
-
 
 /**
  * Created by realicing on 2019/1/22.
@@ -108,59 +103,62 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         return R.layout.act_game_group_or_game_detail;
     }
 
-    @BindView(R.id.gc_game_app_discount_desc_btn)
-    View gc_game_app_discount_desc_btn;
-    @BindView(R.id.refresh)
-    SmartRefreshLayout refresh;
-    @BindView(R.id.tabLayout)
-    TabLayout tabLayout;
-    @BindView(R.id.viewPager)
-    ViewPager viewPager;
-    @BindView(R.id.gc_game_app_detail_iv)
-    ImageView gc_game_app_detail_iv;
-    @BindView(R.id.gc_game_app_detail_iv2)
-    ImageView gc_game_app_detail_iv2;
-    @BindView(R.id.detail_player)
-    StandardGSYVideoPlayer videoPlayer;
-    @BindView(R.id.gc_game_app_detail_play_iv)
-    ImageView gc_game_app_detail_play_iv;
-    @BindView(R.id.gc_game_app_detail_icon)
-    ImageView gc_game_app_detail_icon;
-    @BindView(R.id.write_comment)
-    ImageView write_comment;
-    @BindView(R.id.gc_game_app_detail_score_tv)
-    TextView gc_game_app_detail_score_tv;
-    @BindView(R.id.gc_game_app_detail_info_tv)
-    TextView gc_game_app_detail_info_tv;
-    @BindView(R.id.gc_game_app_detail_bt1)
-    TextView gc_game_app_detail_bt1;
-    @BindView(R.id.gc_game_app_detail_name)
-    TextView gc_game_app_detail_name;
-    @BindView(R.id.gc_game_app_detail_line)
-    View gc_game_app_detail_line;
-    @BindView(R.id.gc_game_app_detail_bt2)
-    TextView gc_game_app_detail_bt2;
-    @BindView(R.id.gc_game_app_detail_bt3)
-    TextView gc_game_app_detail_bt3;
-    @BindView(R.id.gc_game_app_detail_bt4)
-    TextView gc_game_app_detail_bt4;
-    @BindView(R.id.gc_game_app_hot_iv)
-    View gc_game_app_hot_iv;
-    @BindView(R.id.gc_game_app_detail_tag_list)
-    RecyclerView recyclerView;
-    //游戏组界面:比一比
-    @BindView(R.id.gc_game_app_detail_game_list)
-    View gc_game_app_detail_game_list;
-    @BindView(R.id.item_gc_game_app_list_bottom)
-    View item_gc_game_app_list_bottom;
-    @BindView(R.id.item_gc_game_app_list_rv)
-    RecyclerView item_gc_game_app_list_rv;
-    @BindView(R.id.item_gc_game_app_list_tv)
-    TextView item_gc_game_app_list_tv;
+    ActGameGroupOrGameDetailBinding binding;
+
+    @Override
+    protected ViewBinding getViewBinding() {
+        binding = ActGameGroupOrGameDetailBinding.inflate(LayoutInflater.from(this));
+        return binding;
+    }
+    //    @BindView(R.id.refresh)
+//    SmartRefreshLayout refresh;
+//    @BindView(R.id.tabLayout)
+//    TabLayout tabLayout;
+//    @BindView(R.id.viewPager)
+//    ViewPager viewPager;
+//    @BindView(R.id.binding.gcGameAppDetailIv)
+//    ImageView binding.gcGameAppDetailIv;
+//    @BindView(R.id.binding.gcGameAppDetailIv2)
+//    ImageView binding.gcGameAppDetailIv2;
+//    @BindView(R.id.detail_player)
+//    StandardGSYVideoPlayer binding.detailPlayer;
+//    @BindView(R.id.binding.gcGameAppDetailPlayIv)
+//    ImageView binding.gcGameAppDetailPlayIv;
+//    @BindView(R.id.gc_game_app_detail_icon)
+//    ImageView gc_game_app_detail_icon;
+//    @BindView(R.id.binding.gcGameAppDetailScoreTv)
+//    TextView binding.gcGameAppDetailScoreTv;
+//    @BindView(R.id.gc_game_app_detail_info_tv)
+//    TextView gc_game_app_detail_info_tv;
+//    @BindView(R.id.gc_game_app_detail_bt1)
+//    TextView gc_game_app_detail_bt1;
+//    @BindView(R.id.gc_game_app_detail_name)
+//    TextView gc_game_app_detail_name;
+//    @BindView(R.id.gc_game_app_detail_line)
+//    View gc_game_app_detail_line;
+//    @BindView(R.id.binding.gcGameAppDetailBt2)
+//    TextView binding.gcGameAppDetailBt2;
+//    @BindView(R.id.gc_game_app_detail_bt3)
+//    TextView gc_game_app_detail_bt3;
+//    @BindView(R.id.gc_game_app_detail_bt4)
+//    TextView gc_game_app_detail_bt4;
+//    @BindView(R.id.gc_game_app_detail_tag_list)
+//    RecyclerView recyclerView;
+//    //游戏组界面:比一比
+//    @BindView(R.id.gc_game_app_detail_game_list)
+//    View gc_game_app_detail_game_list;
+//    @BindView(R.id.item_gc_game_app_list_bottom)
+//    View item_gc_game_app_list_bottom;
+//    @BindView(R.id.binding.gcGameAppDetailGameList.itemGcGameAppListRv)
+//    RecyclerView binding.gcGameAppDetailGameList.itemGcGameAppListRv;
+//    @BindView(R.id.item_gc_game_app_list_tv)
+//    TextView item_gc_game_app_list_tv;
 
     private TitleFragmentListAdapter2 mAdapter;
     private FgtGameDetail fgtGameDetail;
-    private FgtGameComment fgtGameComment;
+    //评论的fragment
+//    @Deprecated
+//    private FgtGameComment fgtGameComment;
 
     private int id;
     private boolean isAutoDownload;
@@ -171,22 +169,24 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
     @Override
     public void initView() {
         Intent intent = getIntent();
+        ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) binding.ivBack.getLayoutParams();
+        params.setMargins(params.leftMargin, StatusBarUtils.getStatusBarHeight(this), params.rightMargin, params.bottomMargin);
         id = intent.getIntExtra("id", 0);
         isAutoDownload = intent.getBooleanExtra(AUTO_DOWNLOAD, false);
         hasWelfare = intent.getBooleanExtra(KEY_HAS_WELFARE, false);//有没有福利
         gameGroup = DataUtil.getObject(intent, GameGroup.class);
         EventBus.getDefault().register(this);
         //tagList
-        TagListUtil.setTagList(recyclerView, tagList);
+        TagListUtil.setTagList(binding.gcGameAppDetailTagList, tagList);
         //viewPager
         mAdapter = new TitleFragmentListAdapter2(getSupportFragmentManager());
-        viewPager.setOffscreenPageLimit(mAdapter.getCount());
-        viewPager.setAdapter(mAdapter);
-        tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
-        tabLayout.setupWithViewPager(viewPager);
-        CommonUtil.getInstance().reflex(tabLayout, this);
+        binding.viewPager.setOffscreenPageLimit(mAdapter.getCount());
+        binding.viewPager.setAdapter(mAdapter);
+        binding.tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(binding.viewPager));
+        binding.tabLayout.setupWithViewPager(binding.viewPager);
+        CommonUtil.getInstance().reflex(binding.tabLayout, this);
         //refresh
-        refresh.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
+        binding.refresh.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
 
             @Override
             public void onRefresh(@NonNull RefreshLayout refreshLayout) {
@@ -198,20 +198,20 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
                 loadMoreData();
             }
         });
-        RefreshUtil.newInstance().publicParameterLoadMore(refresh, this);
+        RefreshUtil.newInstance().publicParameterLoadMore(binding.refresh, this);
 
-        ViewUtil.setImage(write_comment, ViewUtil.getNetImgByName("write_comment"));
+//        ViewUtil.setImage(binding.write_comment, ViewUtil.getNetImgByName("write_comment"));
         boolean isGameGroupNull = gameGroup == null;
-        ViewUtil.setVisibility(gc_game_app_detail_game_list, !isGameGroupNull);
-        ViewUtil.setVisibility(item_gc_game_app_list_bottom, !isGameGroupNull);
-        ViewUtil.setVisibility(gc_game_app_detail_bt2, isGameGroupNull);
-        ViewUtil.setVisibility(gc_game_app_detail_line, isGameGroupNull);
+        ViewUtil.setVisibility(binding.gcGameAppDetailGameList.getRoot(), !isGameGroupNull);
+        ViewUtil.setVisibility(binding.gcGameAppDetailGameList.itemGcGameAppListBottom, !isGameGroupNull);
+        ViewUtil.setVisibility(binding.gcGameAppDetailBt2, isGameGroupNull);
+        ViewUtil.setVisibility(binding.gcGameAppDetailLine, isGameGroupNull);
         if (isGameGroupNull) {
         } else {//游戏组,不显示下载按钮
-            ViewUtil.setText(item_gc_game_app_list_tv, "下载通道");
-            item_gc_game_app_list_rv.setHasFixedSize(true);
-            item_gc_game_app_list_rv.setNestedScrollingEnabled(false);
-            item_gc_game_app_list_rv.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
+            ViewUtil.setText(binding.gcGameAppDetailGameList.itemGcGameAppListTv, "下载通道");
+            binding.gcGameAppDetailGameList.itemGcGameAppListRv.setHasFixedSize(true);
+            binding.gcGameAppDetailGameList.itemGcGameAppListRv.setNestedScrollingEnabled(false);
+            binding.gcGameAppDetailGameList.itemGcGameAppListRv.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
             if (!ListUtil.isEmpty(gameGroup.getApplications())) {
                 if (AdpGameGroupGameCompare.canDownload) {
                     for (Applications item : gameGroup.getApplications()) {
@@ -220,7 +220,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
                     }
                 }
                 BaseQuickAdapter baseQuickAdapter = new AdpGameGroupGameCompare(gameGroup.getApplications());
-                baseQuickAdapter.bindToRecyclerView(item_gc_game_app_list_rv);
+                baseQuickAdapter.bindToRecyclerView(binding.gcGameAppDetailGameList.itemGcGameAppListRv);
                 baseQuickAdapter.setOnItemClickListener((adapter, view, position) -> {
                     Applications item = ListUtil.getItem(gameGroup.getApplications(), position);
                     if (item != null) {
@@ -235,9 +235,9 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
 
     //重置view
     private void resetView() {
-        ViewUtil.setDefaultText(gc_game_app_detail_name);
-        ViewUtil.setDefaultText(gc_game_app_detail_score_tv);
-        ViewUtil.setDefaultText(gc_game_app_detail_info_tv);
+        ViewUtil.setDefaultText(binding.gcGameAppDetailName);
+        ViewUtil.setDefaultText(binding.gcGameAppDetailScoreTv);
+        ViewUtil.setDefaultText(binding.gcGameAppDetailInfoTv);
     }
 
     //检查数据
@@ -251,15 +251,16 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
 
     private GameEntity gameEntity;
 
-    //更新关注状态
+    //更新关注状态,已过时
+    @Deprecated
     private void updateFocusTv() {
-        if (gc_game_app_detail_bt1 != null && gameEntity != null) {
-            gc_game_app_detail_bt1.setText(gameEntity.isIs_focus_game() ? R.string.has_focus : R.string.focus);
-            gc_game_app_detail_bt1.setSelected(gameEntity.isIs_focus_game());
-        }
+//        if (binding.gcGameAppDetailBt1 != null && gameEntity != null) {
+//            binding.gcGameAppDetailBt1.setText(gameEntity.isIs_focus_game() ? R.string.has_focus : R.string.focus);
+//            binding.gcGameAppDetailBt1.setSelected(gameEntity.isIs_focus_game());
+//        }
     }
 
-    private int pingJiaIndex = 1;
+//    private int pingJiaIndex = 1;
 
     //加载游戏数据
     private void loadData(final GameEntity gameEntity) {
@@ -269,126 +270,127 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         tryInitFragment();
         //更新评价数量
         if (gameEntity.getApp().getComment_num() > 0) {
-            TabLayout.Tab tab = tabLayout.getTabAt(pingJiaIndex);
-            if (tab != null)
-                tab.setText(String.format(Locale.CHINA, "评价(%d)", gameEntity.getApp().getComment_num()));
-            CommonUtil.getInstance().reflex(tabLayout, this, true);
+//            TabLayout.Tab tab = binding.tabLayout.getTabAt(pingJiaIndex);
+//            if (tab != null)
+//                tab.setText(String.format(Locale.CHINA, "评价(%d)", gameEntity.getApp().getComment_num()));
+            CommonUtil.getInstance().reflex(binding.tabLayout, this, true);
         }
+        //检查有没有封面图,这个图可能是图片也可能是视频
         String mainBublicize = gameEntity.getApp().getMain_publicize();
         //加载游戏背景
         if (TextUtils.isEmpty(mainBublicize)) {
-            ViewUtil.setImage(gc_game_app_detail_iv, gameEntity.getApp().getPictures());
-            ViewUtil.setVisibility(videoPlayer, false);
-            ViewUtil.setVisibility(gc_game_app_detail_iv, true);
-            ViewUtil.setVisibility(gc_game_app_detail_iv2, false);
+            ViewUtil.setImage(binding.gcGameAppDetailIv, gameEntity.getApp().getPictures());
+            ViewUtil.setVisibility(binding.detailPlayer, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailIv, true);
+            ViewUtil.setVisibility(binding.gcGameAppDetailIv2, false);
 
-            ViewUtil.setVisibility(gc_game_app_detail_play_iv, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailPlayIv, false);
         } else if (gameEntity.getApp().mainPublicizeIsVideo()) {
-            ViewUtil.setVisibility(videoPlayer, false);
-            ViewUtil.setVisibility(gc_game_app_detail_iv, false);
-            ViewUtil.setVisibility(gc_game_app_detail_iv2, true);
-            ViewUtil.setImage(gc_game_app_detail_iv2, ActPlayVideo.getCoverByUrl(mainBublicize));
+            ViewUtil.setVisibility(binding.detailPlayer, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailIv, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailIv2, true);
+            ViewUtil.setImage(binding.gcGameAppDetailIv2, ActPlayVideo.getCoverByUrl(mainBublicize));
             //播放按钮
-            ViewUtil.setVisibility(gc_game_app_detail_play_iv, true);
+            ViewUtil.setVisibility(binding.gcGameAppDetailPlayIv, true);
             String fileName = FileUtil.getLastSplitEnd(mainBublicize, '/') + ".mp4";
             String filePath = new File(DIR, fileName).getAbsolutePath();
             //开始下载视频
             Jump2View.getInstance().startDownloadService(mainBublicize, filePath);
-            gc_game_app_detail_play_iv.setOnClickListener(view -> loadVideo(filePath));
+            binding.gcGameAppDetailPlayIv.setOnClickListener(view -> loadVideo(filePath));
         } else {//否则当做图片显示
-            ViewUtil.setVisibility(videoPlayer, false);
-            ViewUtil.setVisibility(gc_game_app_detail_iv, false);
-            ViewUtil.setVisibility(gc_game_app_detail_iv2, true);
+            ViewUtil.setVisibility(binding.detailPlayer, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailIv, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailIv2, true);
 
-            ViewUtil.setVisibility(gc_game_app_detail_play_iv, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailPlayIv, false);
 
-            ViewUtil.setImage(gc_game_app_detail_iv2, mainBublicize);
+            ViewUtil.setImage(binding.gcGameAppDetailIv2, mainBublicize);
         }
         //加载游戏图标
-        ViewUtil.setGameImage(gc_game_app_detail_icon, gameEntity.getApp().getIcon());
+        ViewUtil.setGameImage(binding.gcGameAppDetailIcon, gameEntity.getApp().getIcon());
         //加载游戏名字
-        ViewUtil.setText(gc_game_app_detail_name, gameGroup == null ? gameEntity.getApp().getName() : gameGroup.getName());
+        ViewUtil.setText(binding.gcGameAppDetailName, gameGroup == null ? gameEntity.getApp().getName() : gameGroup.getName());
         //加载游戏大小与多少人在玩信息
-        ViewUtil.setText(gc_game_app_detail_info_tv, gameGroup == null ? gameEntity.getApp().getInfoContainGameFrom() : gameGroup.getInfo(null));
+        ViewUtil.setText(binding.gcGameAppDetailInfoTv, gameGroup == null ? gameEntity.getApp().getPlayInfo() : gameGroup.getInfo(null));
         //加载游戏标签
         if (gameEntity.getApp().getTags() != null) {
             tagList.clear();
             tagList.addAll(gameEntity.getApp().getTags());
             ListUtil.removeNull(tagList);
-            if (recyclerView.getAdapter() != null)
-                recyclerView.getAdapter().notifyDataSetChanged();
+            if (binding.gcGameAppDetailTagList.getAdapter() != null)
+                binding.gcGameAppDetailTagList.getAdapter().notifyDataSetChanged();
         }
         //下载按钮
         if (gameEntity.getApp().getMobile_appointment() == 1) {
-            CommonUtil.getInstance().palyGameDetailBtnValue(false, gameEntity, gc_game_app_detail_bt2, 0);
+            CommonUtil.getInstance().palyGameDetailBtnValue(false, gameEntity, binding.gcGameAppDetailBt2, 0);
         } else if (gameEntity.getApp().getMobile_appointment() == 2) {
-            ViewUtil.setText(gc_game_app_detail_bt2, "立即预约");
-            ViewUtil.setOnClickListener(gc_game_app_detail_bt2, v -> {
+            ViewUtil.setText(binding.gcGameAppDetailBt2, "立即预约");
+            ViewUtil.setOnClickListener(binding.gcGameAppDetailBt2, v -> {
                 if (gameEntity.getApp().getMobile_appointment() == 3) return;
                 new GameAppointHelper(this, gameEntity, t -> {
-                    ViewUtil.setText(gc_game_app_detail_bt2, "已预约");
+                    ViewUtil.setText(binding.gcGameAppDetailBt2, "已预约");
                     gameEntity.getApp().setMobile_appointment(3);
                 }).showAppointDialog();
             });
         } else if (gameEntity.getApp().getMobile_appointment() == 3) {
-            ViewUtil.setText(gc_game_app_detail_bt2, "已预约");
+            ViewUtil.setText(binding.gcGameAppDetailBt2, "已预约");
         } else {
-            ViewUtil.setVisibility(gc_game_app_detail_bt2, false);
+            ViewUtil.setVisibility(binding.gcGameAppDetailBt2, false);
         }
         fgtGameDetail.loadData(gameEntity);
-        ViewUtil.setVisibility(gc_game_app_detail_bt3, gameEntity.getApp().hasGameDiscountId());
-        ViewUtil.setVisibility(gc_game_app_hot_iv, gameEntity.getApp().getIsHot() == 1);
-        ViewUtil.setVisibility(gc_game_app_discount_desc_btn, gameEntity.getApp().hasGameDiscountId());
+        ViewUtil.setVisibility(binding.gcGameAppDetailBt3, gameEntity.getApp().hasGameDiscountId());
 
         if (isAutoDownload && gameEntity.getApp().getMobile_appointment() == 1) {//可以进行自动下载
             if (!PackageUtil.isAppInstalled(SheepApp.getInstance(), gameEntity.getApp().getPackage_name())) {//未安装的情况才进行下载
-                gc_game_app_detail_bt2.performLongClick();
+                binding.gcGameAppDetailBt2.performLongClick();
             }
         }
         if (gameGroup == null) {
-            ViewUtil.setVisibility(gc_game_app_detail_bt4, gameEntity.getApp().getActivity_id() > 0);
-            ViewUtil.setOnClickListener(gc_game_app_detail_bt4, v -> {
+            ViewUtil.setVisibility(binding.gcGameAppDetailBt4, gameEntity.getApp().getActivity_id() > 0);
+            ViewUtil.setOnClickListener(binding.gcGameAppDetailBt4, v -> {
                 Jump2View.getInstance().goWeb(this, gameEntity.getApp().getActivity_url(), "活动");
             });
         }
+        updateScore(gameEntity.getApp().getScore());
     }
 
     //更新评分
     public void updateScore(float score) {
-        int progress = (int) score;
         //加载游戏评分
-        ViewUtil.setText(gc_game_app_detail_score_tv, NumberFormatUtils.retain1(score));
+        ViewUtil.setText(binding.gcGameAppDetailScoreTv, NumberFormatUtils.retain1(score));
     }
 
+    //礼包的fragment
     private FgtGameGift fgtGameGift;
 
     //重新初始化viewPager的数据
     private void tryInitFragment() {
         mAdapter.clearData();
+        //详情
         fgtGameDetail = FgtGameDetail.newInstance(id);
-        fgtGameComment = FgtGameComment.newInstance(id);
-        fgtGameDetail.setSmartRefreshLayout(refresh);
-        fgtGameComment.setSmartRefreshLayout(refresh);
-        fgtGameComment.setListAction1(fgtGameDetail);
+//        fgtGameComment = FgtGameComment.newInstance(id);
+        fgtGameDetail.setSmartRefreshLayout(binding.refresh);
+//        fgtGameComment.setSmartRefreshLayout(binding.refresh);
+//        fgtGameComment.setListAction1(fgtGameDetail);
         mAdapter.add(fgtGameDetail, "详情");
 
         if (hasWelfare) {
             FgtGameWelfare fgtGameWelfare = FgtGameWelfare.newInstance(id);
-            fgtGameWelfare.setSmartRefreshLayout(refresh);
+            fgtGameWelfare.setSmartRefreshLayout(binding.refresh);
             mAdapter.add(fgtGameWelfare, "福利");
         }
         if (gameEntity.isGift()) {
             fgtGameGift = FgtGameGift.newInstance(id);
-            fgtGameGift.setSmartRefreshLayout(refresh);
+            fgtGameGift.setSmartRefreshLayout(binding.refresh);
             fgtGameGift.loadData(gameEntity);
             mAdapter.add(fgtGameGift, "礼包");
         }
-        mAdapter.add(fgtGameComment, "评价");
-        pingJiaIndex = mAdapter.getCount() - 1;
+//        mAdapter.add(fgtGameComment, "评价");
+//        pingJiaIndex = mAdapter.getCount() - 1;
         mAdapter.notifyDataSetChanged();
-        CommonUtil.getInstance().reflex(tabLayout, this);
-        if (viewPager != null) {
-            viewPager.setOffscreenPageLimit(mAdapter.getCount());
+        CommonUtil.getInstance().reflex(binding.tabLayout, this);
+        if (binding.viewPager != null) {
+            binding.viewPager.setOffscreenPageLimit(mAdapter.getCount());
         }
     }
 
@@ -411,7 +413,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
                             checkData(gameEntity);
                         } else if (gameEntity != null) {
                             //更新下载按钮
-                            CommonUtil.getInstance().palyGameDetailBtnValue(false, gameEntity, gc_game_app_detail_bt2, 0);
+                            CommonUtil.getInstance().palyGameDetailBtnValue(false, gameEntity, binding.gcGameAppDetailBt2, 0);
                         }
                     }
 
@@ -439,7 +441,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
 
     //刷新数据
     public void refreshData() {
-        refreshData(viewPager.getCurrentItem());
+        refreshData(binding.viewPager.getCurrentItem());
     }
 
     //刷新数据
@@ -462,7 +464,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
     //加载更多数据
     private void loadMoreData() {
         if (mAdapter.getCount() == 0) return;
-        Fragment item = mAdapter.getItem(viewPager.getCurrentItem());
+        Fragment item = mAdapter.getItem(binding.viewPager.getCurrentItem());
         if (item instanceof ILoadMore) {//可加载更多,就调用当前fragment刷新数据
             ((ILoadMore) item).loadMoreData();
         } else {
@@ -471,9 +473,9 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
     }
 
     private void notifyDataSetChanged() {
-        if (refresh != null) {
-            refresh.finishRefresh();
-            refresh.finishLoadMore();
+        if (binding.refresh != null) {
+            binding.refresh.finishRefresh();
+            binding.refresh.finishLoadMore();
         }
     }
 
@@ -521,7 +523,10 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         });
     }
 
-    @OnClick(R.id.gc_game_app_detail_bt3)
+    void initClick() {
+        binding.gcGameAppDetailBt3.setOnClickListener(this::onGoDirectionalPay);
+    }
+
     public void onGoDirectionalPay(View v) {
         CommonUtil.getInstance().getUserInfo(false, user -> {
             if (user == null) return;
@@ -533,11 +538,6 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         });
     }
 
-    @OnClick(R.id.gc_game_app_discount_desc_btn)
-    public void onGoDiscountDesc() {
-        Jump2View.getInstance().goWeb(this, new WebParams(Config.getUrlByPath(Config.PATH_DISCOUNT_DESC), "金丹玩法"));
-    }
-
     private AbsGetDownloadListener absGetDownloadListener = new AbsGetDownloadListener(false) {
         @Override
         public String getDownloadUrl(String packageName) {
@@ -546,12 +546,12 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
 
         @Override
         public TextView getTextView2(String packageName) {
-            return getDownloadUrl(packageName) != null ? gc_game_app_detail_bt2 : null;
+            return getDownloadUrl(packageName) != null ? binding.gcGameAppDetailBt2 : null;
         }
 
         @Override
         public TextView getTextView(String downloadUrl) {
-            return gameEntity != null && TextUtils.equals(downloadUrl, gameEntity.downLinks()) ? gc_game_app_detail_bt2 : null;
+            return gameEntity != null && TextUtils.equals(downloadUrl, gameEntity.downLinks()) ? binding.gcGameAppDetailBt2 : null;
         }
 
         @Override
@@ -572,12 +572,12 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
 
         @Override
         public TextView getTextView2(String packageName) {
-            return item_gc_game_app_list_rv.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + getDownloadUrl(packageName));
+            return binding.gcGameAppDetailGameList.itemGcGameAppListRv.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + getDownloadUrl(packageName));
         }
 
         @Override
         public TextView getTextView(String downloadUrl) {
-            return item_gc_game_app_list_rv.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + downloadUrl);
+            return binding.gcGameAppDetailGameList.itemGcGameAppListRv.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + downloadUrl);
         }
 
         @Override
@@ -597,7 +597,7 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
     @Subscribe
     public void onEventMainThread(BigEvent event) {
         if (event.getEventTypes() == EventTypes.COMMENT_REFRESH) {
-            refreshData(pingJiaIndex);
+//            refreshData(pingJiaIndex);
         } else {
             absGetDownloadListener.onEventMainThread(event);
             if (AdpGameGroupGameCompare.canDownload)
@@ -611,8 +611,8 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
         switch (requestCode) {
             case RequestCodeConstants.REQUEST_CODE_REFRESH:
                 if (resultCode == RESULT_OK)//发表评论成功
-                    refreshData(pingJiaIndex);//需要刷新第二页的评论
-                break;
+//                    refreshData(pingJiaIndex);//需要刷新第二页的评论
+                    break;
         }
     }
 
@@ -624,13 +624,13 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
     }
 
     private void loadVideo(String filePath) {
-        ViewUtil.setVisibility(videoPlayer, true);
+        ViewUtil.setVisibility(binding.detailPlayer, true);
         //不显示播放按钮
-        ViewUtil.setVisibility(gc_game_app_detail_play_iv, false);
+        ViewUtil.setVisibility(binding.gcGameAppDetailPlayIv, false);
         video_url = filePath;
         video_title = gameEntity.getApp().getName();
         video_cover_url = ActPlayVideo.getCoverByUrl(gameEntity.getApp().getMain_publicize());
-        LayoutParamsUtil.resetLayoutParams(videoPlayer, new Lp().setHeight(gc_game_app_detail_iv2.getHeight()));
+        LayoutParamsUtil.resetLayoutParams(binding.detailPlayer, new Lp().setHeight(binding.gcGameAppDetailIv2.getHeight()));
         initPlay();
     }
 
@@ -687,8 +687,8 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
                                 long totalSpace = file.getTotalSpace();
                                 LogUtil.println("initPlay", "exists file", totalSpace);
                             }
-                            if (videoPlayer != null)
-                                videoPlayer.startPlayLogic();
+                            if (binding.detailPlayer != null)
+                                binding.detailPlayer.startPlayLogic();
                         }
 
                         @Override
@@ -699,18 +699,18 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
                             LogUtil.println("initPlay", "onPlayError", url, curPosition);
                             if (file.exists()) {
                                 LogUtil.println("initPlay", "retry play");
-                                if (videoPlayer != null) {
+                                if (binding.detailPlayer != null) {
                                     if (curPosition > 0) {
-                                        videoPlayer.setSeekOnStart(curPosition);
-                                        videoPlayer.startPlayLogic();
+                                        binding.detailPlayer.setSeekOnStart(curPosition);
+                                        binding.detailPlayer.startPlayLogic();
                                     } else {
                                         ViewUtil.delay(new AbsObserver<Integer>() {
                                             @Override
                                             public void onNext(Integer integer) {
                                                 super.onNext(integer);
                                                 try {
-                                                    if (videoPlayer != null)
-                                                        videoPlayer.startPlayLogic();
+                                                    if (binding.detailPlayer != null)
+                                                        binding.detailPlayer.startPlayLogic();
                                                 } catch (Exception e) {
                                                     e.printStackTrace();
                                                 }
@@ -720,32 +720,32 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
                                 }
                             }
                         }
-                    }).build(videoPlayer);
+                    }).build(binding.detailPlayer);
             isInit = true;
         } else {
-            videoPlayer.setUp(getVideoUrl(), true, getVideoTitle());
+            binding.detailPlayer.setUp(getVideoUrl(), true, getVideoTitle());
         }
-        if (videoPlayer != null) {
-            videoPlayer.startPlayLogic();
-            ViewUtil.setVisibility(videoPlayer.getThumbImageViewLayout(), true);
-            ViewUtil.setVisibility2(videoPlayer.getTitleTextView(), false);
-            ViewUtil.setVisibility2(videoPlayer.getBackButton(), false);
-            if (videoPlayer.getFullscreenButton() != null)
-                videoPlayer.getFullscreenButton().setOnClickListener(v -> Jump2View.getInstance().goActPlayVideo(video_url, video_title, video_cover_url));//跳转播放
+        if (binding.detailPlayer != null) {
+            binding.detailPlayer.startPlayLogic();
+            ViewUtil.setVisibility(binding.detailPlayer.getThumbImageViewLayout(), true);
+            ViewUtil.setVisibility2(binding.detailPlayer.getTitleTextView(), false);
+            ViewUtil.setVisibility2(binding.detailPlayer.getBackButton(), false);
+            if (binding.detailPlayer.getFullscreenButton() != null)
+                binding.detailPlayer.getFullscreenButton().setOnClickListener(v -> Jump2View.getInstance().goActPlayVideo(video_url, video_title, video_cover_url));//跳转播放
         }
         ViewUtil.setImage(coverImageView, getVideoCoverUrl());
     }
 
     @Override
     protected void onResume() {
-        if (videoPlayer != null)
-            videoPlayer.onVideoResume();
+        if (binding.detailPlayer != null)
+            binding.detailPlayer.onVideoResume();
         super.onResume();
         isPlay = true;
         if (onResumeCount > 0) {
-            if (gameEntity != null && gc_game_app_detail_bt2 != null && gameEntity.getApp().getMobile_appointment() == 1) {
+            if (gameEntity != null && binding.gcGameAppDetailBt2 != null && gameEntity.getApp().getMobile_appointment() == 1) {
                 //强制更新下载按钮
-                CommonUtil.getInstance().palyGameDetailBtnValue(false, gameEntity, gc_game_app_detail_bt2, 0);
+                CommonUtil.getInstance().palyGameDetailBtnValue(false, gameEntity, binding.gcGameAppDetailBt2, 0);
             }
         }
         onResumeCount++;
@@ -755,8 +755,8 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
 
     @Override
     protected void onPause() {
-        if (videoPlayer != null)
-            videoPlayer.onVideoPause();
+        if (binding.detailPlayer != null)
+            binding.detailPlayer.onVideoPause();
         super.onPause();
         isPlay = false;
     }
@@ -764,8 +764,8 @@ public class ActGameGroupOrGameDetail extends BaseActivity {
     @Override
     public void onBackPressed() {
         //释放所有
-        if (videoPlayer != null)
-            videoPlayer.setVideoAllCallBack(null);
+        if (binding.detailPlayer != null)
+            binding.detailPlayer.setVideoAllCallBack(null);
         super.onBackPressed();
     }
 }

+ 6 - 7
app/src/main/java/com/sheep/gamegroup/module/game/activity/ActGitBagList.java

@@ -6,7 +6,6 @@ import com.sheep.gamegroup.absBase.BaseContainerActivity;
 import com.sheep.gamegroup.module.game.fragment.FgtGiftBagList;
 import com.sheep.gamegroup.module.game.model.GiftTags;
 import com.sheep.gamegroup.util.DataUtil;
-import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
 /**
  * Created by realicing on 2019/4/2.
@@ -26,15 +25,15 @@ public class ActGitBagList extends BaseContainerActivity {
             appId = getIntent().getIntExtra("appid", 0);
             appName = getIntent().getStringExtra("appname");
             super.initView();
-            TitleBarUtils.getInstance().setShowOrHide(this, true)
-                    .setTitle(this, appName)
-                    .setTitleFinish(this);
+//            TitleBarUtils.getInstance().setShowOrHide(this, true)
+//                    .setTitle(this, appName)
+//                    .setTitleFinish(this);
         } else {
             data = DataUtil.getObject(getIntent(), GiftTags.class);
             super.initView();
-            TitleBarUtils.getInstance().setShowOrHide(this, true)
-                    .setTitle(this, data != null ? data.getName() : "礼包列表")
-                    .setTitleFinish(this);
+//            TitleBarUtils.getInstance().setShowOrHide(this, true)
+//                    .setTitle(this, data != null ? data.getName() : "礼包列表")
+//                    .setTitleFinish(this);
         }
     }
 

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

@@ -110,7 +110,7 @@ public class FgtGiftBagList extends BaseListFragment2<GiftBagApp> implements Act
     @Override
     public void initView() {
         super.initView();
-        binding.getRoot().setBackground(getActivity().getDrawable(R.drawable.gradient_mine_fragment));
+        binding.getRoot().setBackground(getActivity().getDrawable(android.R.color.transparent));
         int dp12 = WidgetUtil.Dp2Px(getContext(), 12);
         binding.viewList.setPadding(dp12, 0, dp12, 0);
     }

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/module/game/model/GameGroup.java

@@ -183,7 +183,8 @@ public class GameGroup implements IGameGroup {
         return new SpannableSb("#999999", R.dimen.text_size_12)
                 .callAction(action1)
                 .append(package_size+"M").defaultTcTs()
-                .kgz().append(NumberFormatUtils.retainMost2W(online_num), "#2EBEF2").defaultTextSize()
+                .kgz()
+                .append(NumberFormatUtils.retainMost2W(online_num), "#2EBEF2").defaultTextSize()
                 .append("人在玩").defaultTcTs()
                 .getSsb();
     }

+ 82 - 0
app/src/main/java/com/sheep/gamegroup/module/libao/GiftListDialogFragment.java

@@ -0,0 +1,82 @@
+package com.sheep.gamegroup.module.libao;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import com.sheep.gamegroup.module.game.fragment.FgtGiftBagList;
+import com.sheep.gamegroup.module.game.model.GiftTags;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.jiuyan.samllsheep.R;
+
+public class GiftListDialogFragment extends BottomSheetDialogFragment {
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomBottomSheetDialogTheme); // 应用自定义主题
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.bottom_sheet_fragment, container, false);
+    }
+
+    Integer appId;
+    String appName;
+    GiftTags data;
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+//        setupHalfScreenBehavior(view);
+        Bundle bundle = getArguments();
+        if (bundle != null) {
+            appId = bundle.getInt("appId");
+            appName = bundle.getString("appName");
+            data = DataUtil.getObject(bundle, GiftTags.class);
+        }
+        FgtGiftBagList fragment = null;
+        if (appName != null) {
+            TextView tvTitle = view.findViewById(R.id.tvTitle);
+            tvTitle.setText(appName);
+        }
+        view.findViewById(R.id.ivClose).setOnClickListener(v -> dismiss());
+        if (appId != null) {
+            fragment = FgtGiftBagList.newInstanceByAppId(appId);
+        } else if (data != null) {
+            fragment = FgtGiftBagList.newInstanceByTagId(data.getId());
+        }
+        if (fragment != null) {
+            getChildFragmentManager()
+                    .beginTransaction()
+                    .add(R.id.container, fragment, "FgtGiftBagList")
+                    .commit();
+        }
+    }
+
+    public static GiftListDialogFragment newInstance(int appId, String appName) {
+
+        Bundle args = new Bundle();
+        GiftListDialogFragment fragment = new GiftListDialogFragment();
+        args.putInt("appId", appId);
+        args.putString("appName", appName);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    public static GiftListDialogFragment newInstance(GiftTags data) {
+        Bundle args = new Bundle();
+        GiftListDialogFragment fragment = new GiftListDialogFragment();
+        DataUtil.putObject(args, data);
+        fragment.setArguments(args);
+        return fragment;
+    }
+}

+ 32 - 30
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -49,6 +49,8 @@ import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 
+import androidx.fragment.app.FragmentActivity;
+
 import com.kfzs.cfyl.share_library.util.CallBackAPI;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
@@ -105,13 +107,13 @@ import com.sheep.gamegroup.module.game.activity.ActGameCenterType;
 import com.sheep.gamegroup.module.game.activity.ActGameGroupMore;
 import com.sheep.gamegroup.module.game.activity.ActGameGroupOrGameDetail;
 import com.sheep.gamegroup.module.game.activity.ActGameRank;
-import com.sheep.gamegroup.module.game.activity.ActGitBagList;
 import com.sheep.gamegroup.module.game.activity.ActMyGameList;
 import com.sheep.gamegroup.module.game.activity.ActWelfareSpecialArea;
 import com.sheep.gamegroup.module.game.model.GameCenterType;
 import com.sheep.gamegroup.module.game.model.GameGroup;
 import com.sheep.gamegroup.module.game.model.GiftTags;
 import com.sheep.gamegroup.module.game.model.SearchResp;
+import com.sheep.gamegroup.module.libao.GiftListDialogFragment;
 import com.sheep.gamegroup.module.login.ChangePasswordAct;
 import com.sheep.gamegroup.module.login.LoginAct;
 import com.sheep.gamegroup.module.plugin.model.Plugin;
@@ -231,6 +233,7 @@ import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.sheep.jiuyan.samllsheep.wxutil.WXAPIUtil;
 import com.snail.antifake.jni.EmulatorDetectUtil;
 import com.tencent.smtt.sdk.CookieManager;
+import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
 import com.youmi.android.offer.BaseActYmPermissionCheck;
 import com.youmi.android.offer.YmConfig;
 import com.zhy.http.okhttp.OkHttpUtils;
@@ -1784,26 +1787,26 @@ public class Jump2View {
         }
         CommonUtil.getInstance().callActionWithUserInfo(userEntity ->
                 Observable.create((ObservableOnSubscribe<Object>) emitter -> {
-                    if (userEntity.alreadyFinishAllNewTask()) {//已经完成所有新手任务
-                        //没有兑换过优惠券时,显示商城优惠券
-                        SheepApp.getInstance().getNetComponent().getApiService().getYfShopReceiveCouponsCheck(ReceiveCouponsResp.TYPE_NEW_TASK)
-                                .subscribeOn(Schedulers.io())
-                                .observeOn(AndroidSchedulers.mainThread())
-                                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                                    @Override
-                                    public void onNext(BaseMessage baseMessage) {
-                                        emitter.onNext(baseMessage);
-                                    }
-
-                                    @Override
-                                    public void onError(BaseMessage baseMessage) {
-                                        emitter.onNext(1);
-                                    }
-                                });
-                    } else {
-                        emitter.onNext(1);
-                    }
-                }).subscribeOn(Schedulers.io())
+                            if (userEntity.alreadyFinishAllNewTask()) {//已经完成所有新手任务
+                                //没有兑换过优惠券时,显示商城优惠券
+                                SheepApp.getInstance().getNetComponent().getApiService().getYfShopReceiveCouponsCheck(ReceiveCouponsResp.TYPE_NEW_TASK)
+                                        .subscribeOn(Schedulers.io())
+                                        .observeOn(AndroidSchedulers.mainThread())
+                                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                                            @Override
+                                            public void onNext(BaseMessage baseMessage) {
+                                                emitter.onNext(baseMessage);
+                                            }
+
+                                            @Override
+                                            public void onError(BaseMessage baseMessage) {
+                                                emitter.onNext(1);
+                                            }
+                                        });
+                            } else {
+                                emitter.onNext(1);
+                            }
+                        }).subscribeOn(Schedulers.io())
                         .observeOn(AndroidSchedulers.mainThread())
                         .subscribe(new AbsObserver<Object>() {
                             @Override
@@ -3322,10 +3325,11 @@ public class Jump2View {
             G.showToast(R.string.please_contact_customer_service);
             return;
         }
-        Activity activity = SheepApp.getInstance().getCurrentActivity();
-        Intent intent = new Intent(activity, ActGitBagList.class);
-        DataUtil.putObject(intent, item);
-        activity.startActivity(intent);
+        RxAppCompatActivity activity = (RxAppCompatActivity) SheepApp.getInstance().getCurrentActivity();
+        GiftListDialogFragment.newInstance(item).show(activity.getSupportFragmentManager(), "dialog");
+//        Intent intent = new Intent(activity, ActGitBagList.class);
+//        DataUtil.putObject(intent, item);
+//        activity.startActivity(intent);
     }
 
     public void goGameGiftBag(int appId, String appName) {
@@ -3333,11 +3337,9 @@ public class Jump2View {
             G.showToast(R.string.please_contact_customer_service);
             return;
         }
-        Activity activity = SheepApp.getInstance().getCurrentActivity();
-        Intent intent = new Intent(activity, ActGitBagList.class);
-        intent.putExtra("appid", appId);
-        intent.putExtra("appname", appName);
-        activity.startActivity(intent);
+        FragmentActivity activity = (FragmentActivity) SheepApp.getInstance().getCurrentActivity();
+        GiftListDialogFragment.newInstance(appId, appName)
+                .show(activity.getSupportFragmentManager(), "dialog");
     }
 
 

+ 3 - 3
app/src/main/java/com/sheep/gamegroup/util/TextViewUtil.java

@@ -47,7 +47,7 @@ public class TextViewUtil {
     public static void initIntroView(View itemView, final ShowAll showAll) {
         final TextView intro_content = itemView.findViewById(showAll.getIntroContentId());
         final TextView intro_show_all = itemView.findViewById(showAll.getIntroShowAllId());
-        final View intro_show_all_no = itemView.findViewById(showAll.getIntroShowAllNoId());
+//        final View intro_show_all_no = itemView.findViewById(showAll.getIntroShowAllNoId());
         boolean isFirst = showAll.isFirst();
 
         if(showAll.isHasExp())
@@ -65,7 +65,7 @@ public class TextViewUtil {
                     intro_show_all.setText(showAll.getShowAllText());
                     if (canShowAll) {
                         ViewUtil.setVisibility(intro_show_all, true);
-                        ViewUtil.setVisibility(intro_show_all_no, false);
+//                        ViewUtil.setVisibility(intro_show_all_no, false);
                     }
                 }
             });
@@ -75,7 +75,7 @@ public class TextViewUtil {
             intro_content.setEllipsize(hasShowAll ? null : TextUtils.TruncateAt.END);
             intro_show_all.setText(hasShowAll ? "收起" : showAll.getShowAllText());
             ViewUtil.setVisibility(intro_show_all, showAll.isCanShowAll());
-            ViewUtil.setVisibility(intro_show_all_no, !showAll.isCanShowAll());
+//            ViewUtil.setVisibility(intro_show_all_no, !showAll.isCanShowAll());
         }
         intro_show_all.setOnClickListener(new View.OnClickListener() {
             @Override

+ 43 - 21
app/src/main/java/com/sheep/gamegroup/util/string/SpannableSb.java

@@ -1,7 +1,6 @@
 package com.sheep.gamegroup.util.string;
 
 import android.graphics.Color;
-import androidx.annotation.DimenRes;
 import android.text.ParcelableSpan;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
@@ -12,6 +11,8 @@ import android.text.style.ForegroundColorSpan;
 import android.text.style.ImageSpan;
 import android.text.style.StyleSpan;
 
+import androidx.annotation.DimenRes;
+
 import com.sheep.gamegroup.util.ResourceUtils;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
@@ -29,26 +30,30 @@ public class SpannableSb {
     private int end;
     private @DimenRes int defaultTextSize;
     private String defaultTextColor;
-    public SpannableSb(){
+
+    public SpannableSb() {
 
     }
-    public SpannableSb(@DimenRes int defaultTextSize){
+
+    public SpannableSb(@DimenRes int defaultTextSize) {
         this.defaultTextSize = defaultTextSize;
     }
-    public SpannableSb(String defaultTextColor){
+
+    public SpannableSb(String defaultTextColor) {
         this.defaultTextColor = defaultTextColor;
     }
-    public SpannableSb(String defaultTextColor, @DimenRes int defaultTextSize){
+
+    public SpannableSb(String defaultTextColor, @DimenRes int defaultTextSize) {
         this.defaultTextColor = defaultTextColor;
         this.defaultTextSize = defaultTextSize;
     }
 
     public SpannableSb append(Object object) {
-        if(object == null){
+        if (object == null) {
             return this;
         }
         String text = object.toString();
-        if(TextUtils.isEmpty(text)){
+        if (TextUtils.isEmpty(text)) {
             appendText = null;
             return this;
         }
@@ -58,47 +63,59 @@ public class SpannableSb {
         end += text.length();
         return this;
     }
+
     //设置了默认大小的可以直接调用这个来设置大小
-    public SpannableSb defaultTextSize(){
-        if(defaultTextSize == 0){
+    public SpannableSb defaultTextSize() {
+        if (defaultTextSize == 0) {
             return this;
         }
         return setTextSize(defaultTextSize);
     }
+
     //设置了默认颜色的可以直接调用这个来设置颜色
-    public SpannableSb defaultTextColor(){
-        if(TextUtils.isEmpty(defaultTextColor)){
+    public SpannableSb defaultTextColor() {
+        if (TextUtils.isEmpty(defaultTextColor)) {
             return this;
         }
         return setTextColor(defaultTextColor);
     }
+
     //设置默认大小和默认颜色
-    public SpannableSb defaultTcTs(){
+    public SpannableSb defaultTcTs() {
         return defaultTextSize().defaultTextColor();
     }
 
     //前面有内容才换行
     public SpannableSb checkAndBr() {
-        if(TextUtils.isEmpty(ssb)){
+        if (TextUtils.isEmpty(ssb)) {
             return this;
         }
         return append("\n");
     }
-    //换行
+
+    /**
+     * 换行
+     */
     public SpannableSb br() {
         return append("\n");
     }
-    //添加一个中文大小的空格
+
+    /**
+     * 添加一个中文大小的空格
+     */
     public SpannableSb kgz() {
         return append("\u3000");
     }
-    //添加一个英文大小的空格
+
+    /**
+     * 添加一个英文大小的空格
+     */
     public SpannableSb kgy() {
         return append("\u0020");
     }
 
     public SpannableSb setTextSize(@DimenRes int textSize) {
-        if(appendText == null){//无效添加
+        if (appendText == null) {//无效添加
             return this;
         }
         //AbsoluteSizeSpan 参数 dip: size单位为px,true;size单位为dip(默认为false)。
@@ -108,36 +125,41 @@ public class SpannableSb {
     }
 
     public SpannableSb setTextColor(String textColor) {
-        if(appendText == null){//无效添加
+        if (appendText == null) {//无效添加
             return this;
         }
         ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor(textColor));
         ssb.setSpan(colorSpan, start, end, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
         return this;
     }
+
     //设置字体样式: NORMAL正常,BOLD粗体,ITALIC斜体,BOLD_ITALIC粗斜体  如: android.graphics.Typeface.BOLD
     public SpannableSb setTextStyle(int textStyle) {
-        if(appendText == null){//无效添加
+        if (appendText == null) {//无效添加
             return this;
         }
         StyleSpan colorSpan = new StyleSpan(textStyle);
         ssb.setSpan(colorSpan, start, end, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
         return this;
     }
+
     //设置样式
     public SpannableSb setTextSpan(ParcelableSpan span) {
-        if(appendText == null){//无效添加
+        if (appendText == null) {//无效添加
             return this;
         }
         ssb.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
         return this;
     }
+
     public SpannableSb append(Object text, @DimenRes int textSize) {
         return append(text).setTextSize(textSize);
     }
+
     public SpannableSb append(Object text, String textColor) {
         return append(text).setTextColor(textColor);
     }
+
     public SpannableSb append(Object text, @DimenRes int textSize, String textColor) {
         return append(text).setTextSize(textSize).setTextColor(textColor);
     }
@@ -167,7 +189,7 @@ public class SpannableSb {
     }
 
     public SpannableSb callAction(Action1<SpannableSb> action1) {
-        if(action1 != null){
+        if (action1 != null) {
             action1.call(this);
         }
         return this;

+ 2 - 3
app/src/main/java/com/sheep/gamegroup/view/adapter/GiftCenterAdapter.java

@@ -34,8 +34,7 @@ import io.reactivex.schedulers.Schedulers;
 import rx.functions.Action1;
 
 /**
- * Created by realicing on 2018/8/28.
- * realicing@sina.com
+ * 游戏礼包列表的Adapter
  */
 public class GiftCenterAdapter extends AdbCommonRecycler<GiftBagApp> {
 
@@ -63,7 +62,7 @@ public class GiftCenterAdapter extends AdbCommonRecycler<GiftBagApp> {
             }
             GlideImageLoader.setGameImage(binding.icon, itemApp.getIcon());
             ViewUtil.setText(binding.tvTitle, itemGiftBag.getGiftName());
-            ViewUtil.setText(binding.tvContent, itemGiftBag.getDateText());
+            ViewUtil.setText(binding.tvContent, itemGiftBag.getGiftContent());
             if (TextUtils.isEmpty(item.getCode())) {//没有code,就视为没有领取礼包
                 binding.btn.setText("领取");
                 binding.btn.setOnClickListener(new View.OnClickListener() {

+ 10 - 0
app/src/main/res/drawable/bg_bottom_sheet_fragment.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient
+        android:angle="270"
+        android:centerColor="#F6F7FB"
+        android:endColor="#F6F7FB"
+        android:startColor="#D9F8FF" />
+    <corners android:topRightRadius="12dp"
+        android:topLeftRadius="12dp"/>
+</shape>

+ 3 - 8
app/src/main/res/drawable/shape_blue_stroke_rectangle_no_lb.xml

@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
-android:shape="rectangle">
-<corners
-    android:topLeftRadius="10dp"
-    android:topRightRadius="10dp"
-    android:bottomRightRadius="10dp"/>
-<stroke
-    android:width="1px"
-    android:color="#4889FF" />
+    android:shape="rectangle">
+    <corners android:radius="3dp" />
+    <solid android:color="#EFFBFF" />
 </shape>

Разница между файлами не показана из-за своего большого размера
+ 9 - 0
app/src/main/res/drawable/star_full.xml


+ 9 - 0
app/src/main/res/drawable/title_icon_3dp.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#08B6F9" />
+    <size
+        android:width="3dp"
+        android:height="13dp" />
+    <corners android:radius="1.5dp" />
+</shape>

+ 236 - 257
app/src/main/res/layout/act_game_group_or_game_detail.xml

@@ -1,297 +1,276 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                                             xmlns:app="http://schemas.android.com/apk/res-auto"
-                                             xmlns:tools="http://schemas.android.com/tools"
-                                             android:layout_width="match_parent"
-                                             android:layout_height="match_parent"
-                                             tools:context="com.sheep.gamegroup.module.game.activity.ActGameGroupOrGameDetail"
-                                             android:background="@color/bg">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/bg"
+    tools:context="com.sheep.gamegroup.module.game.activity.ActGameGroupOrGameDetail">
 
     <TextView
-            android:id="@+id/gc_game_app_detail_bt2"
-            style="@style/style_button"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintTop_toBottomOf="@id/gc_game_app_detail_line"
-            android:text="下载"/>
+        android:id="@+id/gc_game_app_detail_bt2"
+        style="@style/round_button_8_radius"
+        android:layout_marginStart="20dp"
+        android:layout_marginTop="8dp"
+        android:layout_marginEnd="20dp"
+        android:layout_marginBottom="8dp"
+        android:gravity="center"
+        android:paddingTop="12dp"
+        android:paddingBottom="12dp"
+        android:text="下载"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/gc_game_app_detail_line" />
 
     <View
-            android:id="@+id/gc_game_app_detail_line"
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintBottom_toTopOf="@id/gc_game_app_detail_bt2"
-            app:layout_constraintTop_toBottomOf="@id/refresh"
-            android:background="#F2F2F2"/>
+        android:id="@+id/gc_game_app_detail_line"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@android:color/transparent"
+        app:layout_constraintBottom_toTopOf="@id/gc_game_app_detail_bt2"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/refresh" />
 
     <com.scwang.smartrefresh.layout.SmartRefreshLayout
-            android:id="@+id/refresh"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@id/gc_game_app_detail_line">
+        android:id="@+id/refresh"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toTopOf="@id/gc_game_app_detail_line"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
 
         <androidx.core.widget.NestedScrollView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_gravity="fill_vertical"
+            android:fillViewport="true"
+            android:scrollbars="none"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:layout_gravity="fill_vertical"
-                android:fillViewport="true"
-                android:scrollbars="none"
-                app:layout_behavior="@string/appbar_scrolling_view_behavior">
+                android:focusable="true"
+                android:focusableInTouchMode="true"
+                android:orientation="vertical">
 
-            <LinearLayout
+                <androidx.constraintlayout.widget.ConstraintLayout
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:focusable="true"
-                    android:focusableInTouchMode="true"
-                    android:orientation="vertical">
+                    android:layout_height="wrap_content"
+                    android:maxHeight="300dp">
 
-                <androidx.constraintlayout.widget.ConstraintLayout
+                    <ImageView
+                        android:id="@+id/gc_game_app_detail_iv"
                         android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:maxHeight="300dp">
+                        android:layout_height="216dp"
+                        android:maxHeight="300dp"
+                        android:scaleType="centerCrop"
+                        android:src="@drawable/loading_01"
+                        app:layout_constraintTop_toTopOf="parent" />
 
                     <ImageView
-                            android:id="@+id/gc_game_app_detail_iv"
-                            android:layout_width="match_parent"
-                            android:layout_height="216dp"
-                            android:maxHeight="300dp"
-                            android:scaleType="centerCrop"
-                            android:src="@drawable/loading_01"
-                            app:layout_constraintTop_toTopOf="parent"/>
+                        android:id="@+id/gc_game_app_detail_iv2"
+                        android:layout_width="match_parent"
+                        android:layout_height="216dp"
+                        android:adjustViewBounds="true"
+                        android:scaleType="centerCrop"
+                        android:src="@drawable/loading_01"
+                        android:visibility="gone"
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:visibility="visible" />
 
-                    <ImageView
-                            android:id="@+id/gc_game_app_detail_iv2"
-                            android:layout_width="match_parent"
-                            android:layout_height="216dp"
-                            android:adjustViewBounds="true"
-                            android:scaleType="centerCrop"
-                            android:src="@drawable/loading_01"
-                            android:visibility="gone"
-                            app:layout_constraintTop_toTopOf="parent"/>
                     <com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
-                            android:id="@+id/detail_player"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:minHeight="100dp"
-                            android:maxHeight="300dp"
-                            android:visibility="gone"
-                            app:layout_constraintTop_toTopOf="parent"/>
-                    <ImageView
-                            android:layout_width="32dp"
-                            android:layout_height="32dp"
-                            android:layout_marginLeft="16dp"
-                            android:layout_marginTop="32dp"
-                            android:gravity="center_vertical"
-                            android:onClick="onClickBackImg"
-                            android:scaleType="centerInside"
-                            android:foreground="@drawable/selector_forground_circle_white"
-                            tools:ignore="UnusedAttribute"
-                            android:src="@drawable/narrow_back_black"
-                            android:tint="@color/white"
-                            android:background="@drawable/shape_oval_black_trans_pad"
-                            app:layout_constraintStart_toStartOf="parent"
-                            app:layout_constraintTop_toTopOf="parent"/>
+                        android:id="@+id/detail_player"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:maxHeight="300dp"
+                        android:minHeight="100dp"
+                        android:visibility="gone"
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:visibility="gone" />
 
                     <ImageView
-                            android:layout_width="32dp"
-                            android:layout_height="32dp"
-                            android:layout_alignParentEnd="true"
-                            android:layout_marginTop="32dp"
-                            android:layout_marginRight="16dp"
-                            android:gravity="center_vertical"
-                            android:onClick="onClickShareImg"
-                            android:scaleType="centerInside"
-                            android:foreground="@drawable/selector_forground_circle_white"
-                            tools:ignore="UnusedAttribute"
-                            android:background="@drawable/shape_oval_black_trans_pad"
-                            android:tint="@color/white"
-                            android:src="@mipmap/share"
-                            app:layout_constraintEnd_toEndOf="parent"
-                            app:layout_constraintTop_toTopOf="parent"/>
+                        android:id="@+id/ivBack"
+                        android:layout_width="32dp"
+                        android:layout_height="32dp"
+                        android:layout_marginLeft="16dp"
+                        android:layout_marginTop="32dp"
+                        android:gravity="center_vertical"
+                        android:onClick="onClickBackImg"
+                        android:scaleType="centerInside"
+                        android:src="@drawable/arrow_back_ios_new_24"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:ignore="UnusedAttribute"
+                        tools:tint="@color/red" />
 
                     <ImageView
-                            android:id="@+id/gc_game_app_detail_play_iv"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_centerInParent="true"
-                            android:src="@drawable/ic_play_but_image"
-                            android:visibility="gone"
-                            app:layout_constraintStart_toStartOf="parent"
-                            app:layout_constraintEnd_toEndOf="parent"
-                            app:layout_constraintTop_toTopOf="parent"
-                            app:layout_constraintBottom_toBottomOf="parent"/>
+                        android:id="@+id/gc_game_app_detail_play_iv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerInParent="true"
+                        android:src="@drawable/ic_play_but_image"
+                        android:visibility="gone"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
 
                 </androidx.constraintlayout.widget.ConstraintLayout>
 
                 <androidx.constraintlayout.widget.ConstraintLayout
-                        android:layout_width="match_parent"
-                        android:paddingBottom="16dp"
-                        android:layout_height="wrap_content">
-
-                    <LinearLayout
-                            android:id="@+id/gc_game_app_discount_desc_btn"
-                            android:background="@drawable/shape_btn_yellow_one_round"
-                            app:layout_constraintTop_toTopOf="parent"
-                            app:layout_constraintEnd_toEndOf="parent"
-                            android:orientation="horizontal"
-                            android:visibility="gone"
-                            android:gravity="center"
-                            android:layout_width="88dp"
-                            android:layout_height="20dp">
-                        <TextView
-                                android:text="金丹玩法"
-                                android:textSize="11sp"
-                                android:layout_marginStart="10dp"
-                                android:textColor="@color/black_333333"
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"/>
-                        <ImageView
-                                android:layout_width="10dp"
-                                android:layout_height="10dp"
-                                android:scaleType="centerInside"
-                                android:src="@drawable/narrow_back_black"
-                                android:tint="@color/black_333333"
-                                android:rotation="180"/>
-                    </LinearLayout>
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingBottom="16dp">
 
                     <ImageView
-                            android:id="@+id/gc_game_app_detail_icon"
-                            android:layout_width="64dp"
-                            android:layout_height="64dp"
-                            android:layout_marginStart="16dp"
-                            android:layout_marginTop="16dp"
-                            android:layout_marginBottom="20dp"
-                            android:src="@drawable/icon_lj"
-                            app:layout_constraintStart_toStartOf="parent"
-                            app:layout_constraintBottom_toBottomOf="parent"
-                            app:layout_constraintTop_toTopOf="parent"/>
+                        android:id="@+id/gc_game_app_detail_icon"
+                        android:layout_width="78dp"
+                        android:layout_height="78dp"
+                        android:layout_marginStart="16dp"
+                        android:layout_marginTop="16dp"
+                        android:layout_marginBottom="20dp"
+                        android:src="@drawable/icon_lj"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
 
                     <TextView
-                            android:id="@+id/gc_game_app_detail_score_tv"
-                            android:layout_width="0dp"
-                            android:layout_height="wrap_content"
-                            android:layout_marginRight="40dp"
-                            android:layout_marginTop="32dp"
-                            android:textColor="#ffffd042"
-                            android:textSize="24dp"
-                            app:layout_constraintTop_toTopOf="parent"
-                            app:layout_constraintRight_toRightOf="parent"/>
+                        android:id="@+id/gc_game_app_detail_score_tv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="6dp"
+                        android:drawableStart="@drawable/star_full"
+                        android:drawablePadding="2dp"
+                        android:textColor="#F39D1D"
+                        android:textSize="14sp"
+                        app:layout_constraintStart_toStartOf="@+id/gc_game_app_detail_name"
+                        app:layout_constraintTop_toBottomOf="@+id/gc_game_app_detail_name"
+                        tools:text="10.0" />
 
                     <TextView
-                            android:id="@+id/gc_game_app_detail_name"
-                            android:layout_width="0dp"
-                            android:layout_height="wrap_content"
-                            android:layout_marginStart="10dp"
-                            android:layout_marginEnd="16dp"
-                            android:gravity="center_vertical"
-                            android:textColor="#ff333333"
-                            android:textSize="15sp"
-                            app:layout_constraintStart_toEndOf="@id/gc_game_app_detail_icon"
-                            app:layout_constraintTop_toTopOf="@id/gc_game_app_detail_icon"/>
-
-                    <ImageView
-                            android:id="@+id/gc_game_app_hot_iv"
-                            android:src="@mipmap/hot"
-                            app:layout_constraintTop_toTopOf="@+id/gc_game_app_detail_name"
-                            app:layout_constraintStart_toEndOf="@+id/gc_game_app_detail_name"
-                            android:layout_marginStart="3dp"
-                            android:visibility="gone"
-                            android:layout_width="8dp"
-                            android:layout_height="10dp"/>
+                        android:id="@+id/gc_game_app_detail_name"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginEnd="16dp"
+                        android:gravity="center_vertical"
+                        android:textColor="#ff333333"
+                        android:textSize="20sp"
+                        android:textStyle="bold"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@id/gc_game_app_detail_icon"
+                        app:layout_constraintTop_toTopOf="@id/gc_game_app_detail_icon"
+                        tools:text="游戏标题" />
+
+                    <!--                    <ImageView-->
+                    <!--                        android:id="@+id/gc_game_app_hot_iv"-->
+                    <!--                        android:layout_width="8dp"-->
+                    <!--                        android:layout_height="10dp"-->
+                    <!--                        android:layout_marginStart="3dp"-->
+                    <!--                        android:src="@mipmap/hot"-->
+                    <!--                        android:visibility="gone"-->
+                    <!--                        app:layout_constraintStart_toEndOf="@+id/gc_game_app_detail_name"-->
+                    <!--                        app:layout_constraintTop_toTopOf="@+id/gc_game_app_detail_name"-->
+                    <!--                        tools:visibility="visible" />-->
 
                     <androidx.recyclerview.widget.RecyclerView
-                            android:id="@+id/gc_game_app_detail_tag_list"
-                            android:layout_width="0dp"
-                            android:layout_height="wrap_content"
-                            android:layout_marginTop="8dp"
-                            app:layout_constraintEnd_toEndOf="parent"
-                            app:layout_constraintTop_toBottomOf="@id/gc_game_app_detail_name"
-                            app:layout_constraintStart_toStartOf="@id/gc_game_app_detail_name"/>
-
-                    <TextView
-                            android:id="@+id/gc_game_app_detail_info_tv"
-                            android:layout_width="0dp"
-                            android:layout_height="wrap_content"
-                            android:lineSpacingExtra="5dp"
-                            android:textColor="#ff999999"
-                            android:textSize="12sp"
-                            android:layout_marginTop="8dp"
-                            app:layout_constraintEnd_toStartOf="@id/gc_game_app_detail_score_tv"
-                            app:layout_constraintStart_toStartOf="@id/gc_game_app_detail_name"
-                            app:layout_constraintBottom_toBottomOf="parent"
-                            app:layout_constraintTop_toBottomOf="@id/gc_game_app_detail_tag_list"/>
+                        android:id="@+id/gc_game_app_detail_tag_list"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="6dp"
+                        android:orientation="horizontal"
+                        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+                        app:layout_constraintEnd_toEndOf="@+id/gc_game_app_detail_name"
+                        app:layout_constraintStart_toStartOf="@id/gc_game_app_detail_name"
+                        app:layout_constraintTop_toBottomOf="@+id/gc_game_app_detail_score_tv"
+                        tools:itemCount="1"
+                        tools:listitem="@layout/item_tag" />
 
                     <TextView
-                            android:id="@+id/gc_game_app_detail_bt1"
-                            android:layout_width="44dp"
-                            android:layout_height="17dp"
-                            android:background="@drawable/selector_button_stroke_main"
-                            android:gravity="center"
-                            android:onClick="onClickFollowTv"
-                            android:text="关注"
-                            android:textColor="@color/selector_color_stoke_main_btn"
-                            android:textSize="10sp"
-                            android:layout_marginTop="6dp"
-                            app:layout_constraintTop_toBottomOf="@+id/gc_game_app_detail_icon"
-                            app:layout_constraintRight_toRightOf="@+id/gc_game_app_detail_icon"
-                            app:layout_constraintLeft_toLeftOf="@+id/gc_game_app_detail_icon"/>
+                        android:id="@+id/gc_game_app_detail_info_tv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="8dp"
+                        android:lineSpacingExtra="5dp"
+                        android:textColor="#ff999999"
+                        android:textSize="12sp"
+                        app:layout_constraintBottom_toBottomOf="@+id/gc_game_app_detail_score_tv"
+                        app:layout_constraintEnd_toEndOf="@+id/gc_game_app_detail_name"
+                        app:layout_constraintStart_toEndOf="@+id/gc_game_app_detail_score_tv"
+                        app:layout_constraintTop_toTopOf="@+id/gc_game_app_detail_score_tv"
+                        tools:text="游戏类型 游玩人数" />
+
+                    <!--                    <TextView-->
+                    <!--                        android:id="@+id/gc_game_app_detail_bt1"-->
+                    <!--                        android:layout_width="44dp"-->
+                    <!--                        android:layout_height="17dp"-->
+                    <!--                        android:layout_marginTop="6dp"-->
+                    <!--                        android:background="@drawable/selector_button_stroke_main"-->
+                    <!--                        android:gravity="center"-->
+                    <!--                        android:onClick="onClickFollowTv"-->
+                    <!--                        android:text="关注"-->
+                    <!--                        android:textColor="@color/selector_color_stoke_main_btn"-->
+                    <!--                        android:textSize="10sp"-->
+                    <!--                        app:layout_constraintLeft_toLeftOf="@+id/gc_game_app_detail_icon"-->
+                    <!--                        app:layout_constraintRight_toRightOf="@+id/gc_game_app_detail_icon"-->
+                    <!--                        app:layout_constraintTop_toBottomOf="@+id/gc_game_app_detail_icon" />-->
 
                     <LinearLayout
-                            android:orientation="horizontal"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginEnd="12dp"
-                            app:layout_constraintBottom_toBottomOf="@id/gc_game_app_detail_icon"
-                            app:layout_constraintEnd_toEndOf="parent">
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="12dp"
+                        android:orientation="horizontal"
+                        app:layout_constraintBottom_toBottomOf="@id/gc_game_app_detail_icon"
+                        app:layout_constraintEnd_toEndOf="parent">
 
                         <TextView
-                                android:id="@+id/gc_game_app_detail_bt4"
-                                style="@style/style_activity_td_tv"
-                                android:textSize="13sp"
-                                android:layout_width="66dp"
-                                android:layout_height="24dp"
-                                android:visibility="gone"
-                                android:layout_marginStart="12dp"/>
+                            android:id="@+id/gc_game_app_detail_bt4"
+                            style="@style/style_activity_td_tv"
+                            android:layout_width="66dp"
+                            android:layout_height="24dp"
+                            android:layout_marginStart="12dp"
+                            android:textSize="13sp"
+                            android:visibility="gone" />
 
                         <TextView
-                                android:id="@+id/gc_game_app_detail_bt3"
-                                style="@style/style_vip_td_tv"
-                                android:textSize="13sp"
-                                android:layout_width="66dp"
-                                android:layout_height="24dp"
-                                android:visibility="gone"
-                                android:layout_marginStart="12dp"/>
+                            android:id="@+id/gc_game_app_detail_bt3"
+                            style="@style/style_vip_td_tv"
+                            android:layout_width="66dp"
+                            android:layout_height="24dp"
+                            android:layout_marginStart="12dp"
+                            android:textSize="13sp"
+                            android:visibility="gone" />
                     </LinearLayout>
 
                 </androidx.constraintlayout.widget.ConstraintLayout>
 
                 <View
-                        android:layout_width="match_parent"
-                        android:layout_height="10dp"
-                        android:background="#fff5f5f5"/>
-
+                    android:layout_width="match_parent"
+                    android:layout_height="10dp"
+                    android:background="#fff5f5f5" />
+                <!-- 这个是游戏组的内容,但是好像不知道哪里能看到-->
                 <include
-                        android:id="@+id/gc_game_app_detail_game_list"
-                        layout="@layout/item_gc_game_app_channel_list"/>
+                    android:id="@+id/gc_game_app_detail_game_list"
+                    layout="@layout/item_gc_game_app_channel_list"
+                    tools:visibility="gone" />
 
                 <com.google.android.material.tabs.TabLayout
-                        android:id="@+id/tabLayout"
-                        style="@style/style_tab"
-                        app:tabMode="fixed"
-                        android:layout_height="48dp"
-                        app:tabIndicatorHeight="2dp"/>
+                    android:id="@+id/tabLayout"
+                    style="@style/style_tab"
+                    android:layout_height="48dp"
+                    app:tabIndicatorHeight="2dp"
+                    app:tabMode="fixed" />
 
                 <com.kfzs.android.view.widget.WrapContentHeightViewPager
-                        android:id="@+id/viewPager"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:minHeight="@dimen/view_size_100"
-                        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
+                    android:id="@+id/viewPager"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:minHeight="@dimen/view_size_100"
+                    app:layout_behavior="@string/appbar_scrolling_view_behavior" />
 
             </LinearLayout>
 
@@ -299,22 +278,22 @@
 
     </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
-    <com.kfzs.duanduan.view.DragRelativeLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="300dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:onClick="onClickPlusDrag"
-            android:paddingTop="@dimen/content_padding_10"
-            android:paddingBottom="@dimen/content_padding_10">
-
-        <ImageView
-                android:id="@+id/write_comment"
-                android:layout_width="45dp"
-                android:layout_height="wrap_content"
-                android:adjustViewBounds="true"
-                android:scaleType="fitXY"/>
-    </com.kfzs.duanduan.view.DragRelativeLayout>
+    <!--    <com.kfzs.duanduan.view.DragRelativeLayout-->
+    <!--        android:layout_width="wrap_content"-->
+    <!--        android:layout_height="wrap_content"-->
+    <!--        android:layout_marginTop="300dp"-->
+    <!--        android:onClick="onClickPlusDrag"-->
+    <!--        android:paddingTop="@dimen/content_padding_10"-->
+    <!--        android:paddingBottom="@dimen/content_padding_10"-->
+    <!--        app:layout_constraintEnd_toEndOf="parent"-->
+    <!--        app:layout_constraintTop_toTopOf="parent">-->
+
+    <!--        <ImageView-->
+    <!--            android:id="@+id/write_comment"-->
+    <!--            android:layout_width="45dp"-->
+    <!--            android:layout_height="wrap_content"-->
+    <!--            android:adjustViewBounds="true"-->
+    <!--            android:scaleType="fitXY" />-->
+    <!--    </com.kfzs.duanduan.view.DragRelativeLayout>-->
 
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 39 - 0
app/src/main/res/layout/bottom_sheet_fragment.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.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:background="@drawable/bg_bottom_sheet_fragment">
+
+    <TextView
+        android:id="@+id/tvTitle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:text="这里是标题"
+        android:textColor="@color/text33"
+        android:textSize="18sp"
+        android:textStyle="bold"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        android:id="@+id/ivClose"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="20dp"
+        android:src="@mipmap/icon_titlebar_close_p"
+        app:layout_constraintBottom_toBottomOf="@id/tvTitle"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="@id/tvTitle" />
+
+    <FrameLayout
+        android:id="@+id/container"
+        android:layout_width="0dp"
+        android:layout_height="400dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 8 - 2
app/src/main/res/layout/fgt_gc_game_app_detail.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
@@ -9,11 +11,15 @@
         android:layout_width="match_parent"
         android:layout_height="130dp"
         android:layout_marginTop="16dp"
-        android:layout_marginBottom="16dp" />
+        android:layout_marginBottom="16dp"
+        android:orientation="horizontal"
+        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+        tools:listitem="@layout/item_image" />
 
     <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/gc_game_app_detail_info_list"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent"
+        tools:listitem="@layout/item_gc_game_app_detail_list" />
 
 </LinearLayout>

+ 3 - 3
app/src/main/res/layout/item_download_welfare.xml

@@ -36,7 +36,7 @@
         android:id="@+id/arrow"
         android:layout_width="12dp"
         android:layout_height="12dp"
-        android:layout_marginRight="6dp"
+        android:layout_marginEnd="8dp"
         android:src="@drawable/round_arrow_forward_ios_24"
         android:tint="@color/text33"
         app:layout_constraintBottom_toBottomOf="@+id/tvTitle"
@@ -50,10 +50,10 @@
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="2dp"
-        android:lines="1"
+        android:layout_marginEnd="8dp"
         android:textColor="@color/text99"
         android:textSize="12sp"
-        app:layout_constraintEnd_toEndOf="@+id/tvTitle"
+        app:layout_constraintEnd_toStartOf="@+id/btn"
         app:layout_constraintStart_toStartOf="@+id/tvTitle"
         app:layout_constraintTop_toBottomOf="@+id/tvTitle"
         tools:text="首充500送500" />

+ 7 - 5
app/src/main/res/layout/item_gc_game_app_63.xml

@@ -1,20 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:orientation="vertical"
-    android:paddingStart="6dp"
+    android:paddingStart="10dp"
     android:paddingTop="20dp"
     android:paddingBottom="20dp">
 
     <ImageView
         android:id="@+id/item_gc_game_app_iv"
-        android:layout_width="63dp"
-        android:layout_height="63dp"
+        android:layout_width="64dp"
+        android:layout_height="64dp"
+        android:layout_gravity="center"
         android:layout_marginStart="10dp"
         android:layout_marginEnd="10dp"
-        android:layout_gravity="center"
         android:src="@drawable/icon_lj" />
 
     <TextView
@@ -29,5 +30,6 @@
         android:maxLines="1"
         android:text=""
         android:textColor="#333333"
-        android:textSize="12sp" />
+        android:textSize="14sp"
+        tools:text="名称" />
 </LinearLayout>

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

@@ -2,6 +2,7 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    xmlns:tools="http://schemas.android.com/tools"
     android:orientation="vertical">
 
     <LinearLayout style="@style/style_wc_rl">
@@ -34,6 +35,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginBottom="10dp"
+        tools:listitem="@layout/item_game_group_game_compare"
         android:layout_marginTop="10dp"/>
     <View
         android:id="@+id/item_gc_game_app_list_bottom"

+ 12 - 5
app/src/main/res/layout/item_gc_game_app_detail_list.xml

@@ -9,23 +9,30 @@
         <TextView
             android:id="@+id/item_gc_game_app_list_tv"
             style="@style/style_wc_line_title"
-            android:text="游戏介绍" />
+            android:layout_marginStart="20dp"
+            android:drawableStart="@drawable/title_icon_3dp"
+            android:text="游戏介绍"
+            android:drawablePadding="4dp"
+            android:textColor="@color/text33"
+            android:textSize="16sp"
+            android:textStyle="bold" />
 
         <TextView
             android:id="@+id/item_gc_game_app_list_more_tv"
             style="@style/style_wc_more"
-            android:visibility="invisible"
-            android:text="更多" />
+            android:text="更多"
+            android:visibility="invisible" />
     </RelativeLayout>
 
     <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/item_gc_game_app_list_rv"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
+        android:layout_height="wrap_content" />
+
     <View
         android:id="@+id/item_gc_game_app_list_bottom"
         android:layout_width="match_parent"
         android:layout_height="10dp"
         android:background="#f5f5f5"
-        android:visibility="gone"/>
+        android:visibility="gone" />
 </LinearLayout>

+ 27 - 15
app/src/main/res/layout/item_gc_game_app_intro.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical"
@@ -8,30 +10,40 @@
 
     <TextView
         android:id="@+id/intro_content"
-        android:layout_width="match_parent"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
+        android:layout_marginBottom="7dp"
         android:ellipsize="end"
+        android:lineSpacingMultiplier="1.3"
         android:maxLines="3"
-        android:paddingStart="30dp"
-        android:paddingEnd="30dp"
+        android:layout_marginStart="20dp"
+        android:layout_marginEnd="20dp"
         android:text="《永恒仙域》经典仙侠梦想,高清3DMMORPG手游,继承同类型游戏的经典游戏模式,更加酷炫的游戏画面与动作特效,精心构建出这个瑰丽的东方式仙侠世界。《永恒仙域》经典仙侠梦想,高清3DMMORPG手游,继承同类型游戏的经典游戏模式,更加酷炫的游戏画面与动作特效,精心构建出这个瑰丽的东方式仙侠世界。"
-        android:textColor="#ff666666"
-        android:lineSpacingMultiplier="1.3"
-        android:textSize="12sp" />
+        android:textColor="@color/text33"
+        android:textSize="14sp"
+        app:layout_constraintBottom_toTopOf="@+id/intro_show_all"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_chainStyle="packed" />
 
     <TextView
         android:id="@+id/intro_show_all"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:padding="13dp"
         android:layout_gravity="center_horizontal"
+        android:padding="10dp"
         android:text="显示全部"
+        android:textColor="#00C1F7"
+        android:textSize="14sp"
         android:visibility="gone"
-        android:textColor="#ff4bc1ff"
-        android:textSize="12sp" />
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/intro_content"
+        app:layout_constraintVertical_chainStyle="packed"
+        app:layout_goneMarginBottom="13dp"
+        app:layout_goneMarginTop="13dp"
+        tools:visibility="visible" />
     <!--item_gc_game_app_intro_no_show_all 与 intro_show_all两者必须显示一个,隐藏另一个-->
-    <View
-        android:id="@+id/intro_show_all_no"
-        android:layout_width="wrap_content"
-        android:layout_height="13dp"/>
-</LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 8 - 8
app/src/main/res/layout/item_gc_game_info.xml

@@ -7,14 +7,14 @@
     <View
         android:id="@+id/item_gc_game_info_top"
         android:layout_width="match_parent"
-        android:layout_height="15dp" />
+        android:layout_height="6dp" />
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
-        android:paddingStart="25dp"
-        android:paddingEnd="25dp">
+        android:paddingStart="20dp"
+        android:paddingEnd="20dp">
 
         <TextView
             android:id="@+id/item_gc_game_info_key"
@@ -22,8 +22,8 @@
             android:layout_height="wrap_content"
             android:padding="5dp"
             android:text="当前版本"
-            android:textColor="#ff666666"
-            android:textSize="12sp" />
+            android:textColor="@color/text33"
+            android:textSize="14sp" />
 
         <TextView
             android:id="@+id/item_gc_game_info_value"
@@ -33,12 +33,12 @@
             android:maxLines="1"
             android:padding="5dp"
             android:text="1.0.0"
-            android:textColor="#ff666666"
-            android:textSize="12sp" />
+            android:textColor="@color/text33"
+            android:textSize="14sp" />
     </LinearLayout>
 
     <View
         android:id="@+id/item_gc_game_info_bottom"
         android:layout_width="match_parent"
-        android:layout_height="15dp" />
+        android:layout_height="6dp" />
 </LinearLayout>

+ 3 - 1
app/src/main/res/layout/item_image.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
     android:orientation="vertical">
@@ -8,7 +9,8 @@
         android:id="@+id/img_detail"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
+        android:adjustViewBounds="true"
         android:scaleType="fitXY"
-        android:adjustViewBounds="true" />
+        tools:src="@drawable/icon" />
 
 </LinearLayout>

+ 5 - 5
app/src/main/res/layout/item_tag.xml

@@ -2,12 +2,12 @@
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
+    android:layout_marginEnd="4dp"
     android:background="@drawable/shape_blue_stroke_rectangle_no_lb"
-    android:paddingStart="8dp"
+    android:paddingStart="4dp"
     android:paddingTop="2dp"
-    android:paddingEnd="8dp"
+    android:paddingEnd="4dp"
     android:paddingBottom="2dp"
-    android:layout_marginEnd="10dp"
     android:text="热门推荐"
-    android:textColor="#ff4889ff"
-    android:textSize="9sp" />
+    android:textColor="#00C1F7"
+    android:textSize="11sp" />

+ 8 - 0
app/src/main/res/values/styles.xml

@@ -154,4 +154,12 @@
         <item name="android:textColor">@color/white</item>
         <item name="android:textSize">14sp</item>
     </style>
+
+    <style name="CustomBottomSheetDialogTheme" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
+        <item name="bottomSheetStyle">@style/CustomBottomSheetStyle</item>
+    </style>
+
+    <style name="CustomBottomSheetStyle" parent="Widget.MaterialComponents.BottomSheet.Modal">
+        <item name="android:background">@android:color/transparent</item>
+    </style>
 </resources>