honghengqiang 2 лет назад
Родитель
Сommit
b64b2e8a9d
22 измененных файлов с 213 добавлено и 25 удалено
  1. 3 0
      .idea/misc.xml
  2. 2 2
      baseswago/src/main/java/com/swago/baseswago/inter/HomeApi.kt
  3. 7 0
      baseswago/src/main/java/com/swago/baseswago/model/ConfigModel.kt
  4. 21 1
      baseswago/src/main/java/com/swago/baseswago/model/live/RoomConfig.java
  5. 1 1
      baseswago/src/main/res/values-ar/strings.xml
  6. 1 0
      baseswago/src/main/res/values/colors.xml
  7. 3 1
      home/src/main/java/com/swago/home/innerhome/FollowFragment.kt
  8. 4 4
      home/src/main/java/com/swago/home/innerhome/HomeVm.kt
  9. 33 1
      home/src/main/java/com/swago/home/innerhome/HotFragment.kt
  10. 25 0
      home/src/main/java/com/swago/home/innerhome/LabelAdapter.kt
  11. 35 1
      home/src/main/java/com/swago/home/innerhome/NewFragment.kt
  12. 7 0
      home/src/main/res/drawable/shape_6000000_16.xml
  13. 5 0
      home/src/main/res/drawable/shape_ff56b7_16.xml
  14. 12 2
      home/src/main/res/layout/fragment_hot.xml
  15. 24 0
      home/src/main/res/layout/item_label.xml
  16. 0 1
      room/src/main/java/com/swago/room/anchor/AnchorRoomActivity.kt
  17. 0 4
      room/src/main/java/com/swago/room/anchor/AnchorRoomFragment.kt
  18. 24 0
      room/src/main/java/com/swago/room/base/BaseComFragment.kt
  19. 3 0
      room/src/main/java/com/swago/room/inter/IFooter.kt
  20. 0 5
      room/src/main/java/com/swago/room/user/UserRoomFragment.kt
  21. 2 1
      room/src/main/java/com/swago/room/widget/AnchorFooterView.kt
  22. 1 1
      room/src/main/java/com/swago/room/widget/UserFooterView.kt

+ 3 - 0
.idea/misc.xml

@@ -88,7 +88,9 @@
         <entry key="home/src/main/res/drawable/selector_mine.xml" value="0.3932291666666667" />
         <entry key="home/src/main/res/drawable/selector_square.xml" value="0.4078125" />
         <entry key="home/src/main/res/drawable/shape_50white_4.xml" value="0.4078125" />
+        <entry key="home/src/main/res/drawable/shape_6000000_16.xml" value="0.3435" />
         <entry key="home/src/main/res/drawable/shape_f74c31_10.xml" value="0.37916666666666665" />
+        <entry key="home/src/main/res/drawable/shape_ff56b7_16.xml" value="0.3435" />
         <entry key="home/src/main/res/layout/activity_chat_detail.xml" value="0.3776041666666667" />
         <entry key="home/src/main/res/layout/activity_common_web.xml" value="0.35" />
         <entry key="home/src/main/res/layout/activity_home.xml" value="0.25" />
@@ -103,6 +105,7 @@
         <entry key="home/src/main/res/layout/fragment_moment.xml" value="0.25" />
         <entry key="home/src/main/res/layout/fragment_new.xml" value="0.35" />
         <entry key="home/src/main/res/layout/item_home.xml" value="0.3964984552008239" />
+        <entry key="home/src/main/res/layout/item_label.xml" value="0.390625" />
         <entry key="home/src/main/res/layout/item_official.xml" value="0.3770833333333333" />
         <entry key="home/src/main/res/layout/item_search.xml" value="0.33" />
         <entry key="home/src/main/res/layout/layout_message.xml" value="0.24324324324324326" />

+ 2 - 2
baseswago/src/main/java/com/swago/baseswago/inter/HomeApi.kt

@@ -30,8 +30,8 @@ interface HomeApi {
      * 类型(1热门2新星3关注)
      */
     @FormUrlEncoded
-    @POST("/v1/home/user/list")
-    suspend fun getHomeList(@Field("type")type:Int, @Field("page")page:Int, @Field("page_size")page_size:Int=500):HomeModel
+    @POST("/v2/home/user/list")
+    suspend fun getHomeList(@Field("type")type:Int, @Field("page")page:Int,@Field("language_type")language_type:Int=0, @Field("page_size")page_size:Int=500):HomeModel
 
     /**
      * 轮播图

+ 7 - 0
baseswago/src/main/java/com/swago/baseswago/model/ConfigModel.kt

@@ -10,6 +10,7 @@ data class ConfigModel(
     val app_gmail:String="",
     val agoral_app_id:String="",
     val im_app_id:Int,
+    var language_lables: List<Label>?,
 
     //版本更新
     val app_version:Int,
@@ -18,3 +19,9 @@ data class ConfigModel(
     val upgrade:String="",//版本描述
     val force:Int,//是否强制更新(0否1是)
 )
+
+data class Label(
+    val id:Int,
+    val value:String="",
+    var isSelected:Boolean=false,
+)

+ 21 - 1
baseswago/src/main/java/com/swago/baseswago/model/live/RoomConfig.java

@@ -24,7 +24,9 @@ public class RoomConfig implements Parcelable {
     * rotation_img_url : http://image2.vv-tool.com/2021/09/13/03/09/30/47067.jpg
     * rotation_url : d
     */
-   private int is_show_game; //1展示 0不展示
+   private int is_show_game; //1展示 0不展示  是否显示线上游戏图标
+   private int auto_show_game;//是否自动弹出游戏(1是0否)
+   private int is_repeat_game;//当日是否多次弹出游戏(1是0否)
    private ArrayList<BannersBean> banners;
 
    protected RoomConfig(Parcel in) {
@@ -59,6 +61,22 @@ public class RoomConfig implements Parcelable {
       this.is_show_game = is_show_game;
    }
 
+   public int getAuto_show_game() {
+      return auto_show_game;
+   }
+
+   public void setAuto_show_game(int auto_show_game) {
+      this.auto_show_game = auto_show_game;
+   }
+
+   public int getIs_repeat_game() {
+      return is_repeat_game;
+   }
+
+   public void setIs_repeat_game(int is_repeat_game) {
+      this.is_repeat_game = is_repeat_game;
+   }
+
    public ArrayList<BannersBean> getBanners() {
       return banners;
    }
@@ -75,6 +93,8 @@ public class RoomConfig implements Parcelable {
    @Override
    public void writeToParcel(Parcel dest, int flags) {
       dest.writeInt(is_show_game);
+      dest.writeInt(auto_show_game);
+      dest.writeInt(is_repeat_game);
    }
 
    public static class RedPackageBean {

+ 1 - 1
baseswago/src/main/res/values-ar/strings.xml

@@ -97,7 +97,7 @@
     <string name="big_gift">ارسل %s إلى %s واحد إلى %s</string>
     <string name="balance">الرصيد:</string>
     <string name="login_anthor_device">تم تسجيل الدخول إلى حسابك بالفعل على جهاز آخر </string>
-    <string name="lucky">سعيد الحظ</string>
+    <string name="lucky">الحظ</string>
     <string name="live">بدأ البث</string>
     <string name="win_num_prize">Win %s times coins</string>
     <string name="kick_success">طرد بنجاح</string>

+ 1 - 0
baseswago/src/main/res/values/colors.xml

@@ -11,4 +11,5 @@
     <color name="arcColor">#ff56b7</color>
     <color name="white">#ffffff</color>
     <color name="scaleColor">#ff56b7</color>
+    <color name="_828C9D">#828C9D</color>
 </resources>

+ 3 - 1
home/src/main/java/com/swago/home/innerhome/FollowFragment.kt

@@ -1,5 +1,6 @@
 package com.swago.home.innerhome
 
+import android.view.View
 import androidx.fragment.app.viewModels
 import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.LinearLayoutManager
@@ -34,10 +35,11 @@ class FollowFragment : BaseListFragment<FragmentHotBinding, MomentModel>(){
         GridLayoutManager(context,2)
     }
     override val loadData: (page: Int) -> Unit = {
-        homeVm.getHomeList(3, it+1)
+        homeVm.getHomeList(3, it+1,0)
     }
 
     override fun initViewData() {
+        binding.rvLabel.visibility = View.GONE
         smartRecyclerView.recyclerView?.addItemDecoration(ComGridItemDecoration())
         adapter.setOnItemClickListener { _, _, position ->
             if (adapter.data.size>position){

+ 4 - 4
home/src/main/java/com/swago/home/innerhome/HomeVm.kt

@@ -22,10 +22,10 @@ class HomeVm(application: Application) : BaseViewModel(application) {
     }
 
 
-    fun getHomeList(type: Int, page: Int) {
+    fun getHomeList(type: Int, page: Int,language_type:Int) {
         requestData2 {
             requestData {
-                val data = ApiManager.homeApi.getHomeList(type, page)
+                val data = ApiManager.homeApi.getHomeList(type, page,language_type)
                 homeListLiveData.value = data.list
             }
 
@@ -46,11 +46,11 @@ class HomeVm(application: Application) : BaseViewModel(application) {
         MutableLiveData<List<BannerModel>?>()
     }
 
-    fun getHotList(type: Int, page: Int) {
+    fun getHotList(type: Int, page: Int,language_type:Int) {
         requestData2 {
 
             requestData {
-                val data = ApiManager.homeApi.getHomeList(type, page)
+                val data = ApiManager.homeApi.getHomeList(type, page,language_type)
                 val dataBanner = ApiManager.homeApi.getHomeBanner()
                 bannerListLiveData.value = dataBanner
                 hotListLiveData.value = data.list

+ 33 - 1
home/src/main/java/com/swago/home/innerhome/HotFragment.kt

@@ -1,6 +1,7 @@
 package com.swago.home.innerhome
 
 import android.os.Bundle
+import android.util.Log
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -46,8 +47,12 @@ class HotFragment : BaseListFragment<FragmentHotBinding, MomentModel>() {
     override val layoutManager: RecyclerView.LayoutManager by lazy {
         GridLayoutManager(context, 2)
     }
+
+    private var labelValue = 0
+    private var selectedPosition = 0
+
     override val loadData: (page: Int) -> Unit = {
-        homeVm.getHotList(1, it + 1)
+        homeVm.getHotList(1, it + 1,labelValue)
     }
 
     private val bannerList by lazy {
@@ -63,6 +68,33 @@ class HotFragment : BaseListFragment<FragmentHotBinding, MomentModel>() {
 
 
     override fun initViewData() {
+        UrlConstant.getConfigModel()?.let {
+            if (!it.language_lables.isNullOrEmpty()){
+                context?.let { context ->
+                    val labelAdapter = LabelAdapter()
+                    binding.rvLabel.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false)
+                    binding.rvLabel.adapter = labelAdapter
+                    it.language_lables?.let { list ->
+                        list[0].isSelected = true
+                        labelValue = list[0].id
+                        selectedPosition = 0
+                        labelAdapter.setNewData(list)
+                    }
+
+
+                    labelAdapter.setOnItemClickListener { _, _, position ->
+                        labelAdapter.data[selectedPosition].isSelected = false
+                        labelAdapter.data[position].isSelected = true
+                        labelAdapter.notifyItemChanged(selectedPosition)
+                        labelAdapter.notifyItemChanged(position)
+                        selectedPosition = position
+                        labelValue = labelAdapter.data[position].id
+                        smartRecyclerView.startRefresh()
+                    }
+                }
+            }
+        }
+
         headerView =
             LayoutViewHeaderBinding.inflate(layoutInflater, smartRecyclerView.recyclerView, false)
         adapter.addHeaderView(headerView?.root)

+ 25 - 0
home/src/main/java/com/swago/home/innerhome/LabelAdapter.kt

@@ -0,0 +1,25 @@
+package com.swago.home.innerhome
+
+import androidx.core.content.ContextCompat
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.swago.baseswago.model.Label
+import com.swago.home.R
+
+class LabelAdapter: BaseQuickAdapter<Label,BaseViewHolder>(R.layout.item_label, arrayListOf()) {
+
+    override fun convert(helper: BaseViewHolder?, item: Label?) {
+        helper?.apply {
+            item?.let {
+                setText(R.id.tvTitle,it.value)
+                if(item.isSelected){
+                    setTextColor(R.id.tvTitle,ContextCompat.getColor(itemView.context,R.color.startColor))
+                    setBackgroundRes(R.id.tvTitle,R.drawable.shape_ff56b7_16)
+                }else{
+                    setTextColor(R.id.tvTitle,ContextCompat.getColor(itemView.context,R.color._828C9D))
+                    setBackgroundRes(R.id.tvTitle,R.drawable.shape_6000000_16)
+                }
+            }
+        }
+    }
+}

+ 35 - 1
home/src/main/java/com/swago/home/innerhome/NewFragment.kt

@@ -7,6 +7,7 @@ import androidx.recyclerview.widget.RecyclerView
 import com.alibaba.android.arouter.launcher.ARouter
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.swago.baseswago.constant.ARouteConstant
+import com.swago.baseswago.constant.UrlConstant
 import com.swago.baseswago.cusview.SwagoRecyclerView
 import com.swago.baseswago.fragment.BaseListFragment
 import com.swago.baseswago.fragment.BaseXFragment
@@ -34,11 +35,44 @@ class NewFragment  : BaseListFragment<FragmentHotBinding, MomentModel>(){
     override val layoutManager: RecyclerView.LayoutManager by lazy {
         GridLayoutManager(context,2)
     }
+
+
+    private var labelValue = 0
+    private var selectedPosition = 0
+
+
     override val loadData: (page: Int) -> Unit = {
-        homeVm.getHomeList(2, it+1)
+        homeVm.getHomeList(2, it+1,labelValue)
     }
 
     override fun initViewData() {
+        UrlConstant.getConfigModel()?.let {
+            if (!it.language_lables.isNullOrEmpty()){
+                context?.let { context ->
+                    val labelAdapter = LabelAdapter()
+                    binding.rvLabel.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false)
+                    binding.rvLabel.adapter = labelAdapter
+                    it.language_lables?.let { list ->
+                        list[0].isSelected = true
+                        labelValue = list[0].id
+                        selectedPosition = 0
+                        labelAdapter.setNewData(list)
+                    }
+
+
+                    labelAdapter.setOnItemClickListener { _, _, position ->
+                        labelAdapter.data[selectedPosition].isSelected = false
+                        labelAdapter.data[position].isSelected = true
+                        labelAdapter.notifyItemChanged(selectedPosition)
+                        labelAdapter.notifyItemChanged(position)
+                        selectedPosition = position
+                        labelValue = labelAdapter.data[position].id
+                        smartRecyclerView.startRefresh()
+                    }
+                }
+            }
+        }
+
         smartRecyclerView.recyclerView?.addItemDecoration(ComGridItemDecoration())
         adapter.setOnItemClickListener { _, _, position ->
             ARouter.getInstance()

+ 7 - 0
home/src/main/res/drawable/shape_6000000_16.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <stroke
+        android:width="1dp"
+        android:color="#0F000000" />
+    <corners android:radius="16dp" />
+</shape>

+ 5 - 0
home/src/main/res/drawable/shape_ff56b7_16.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#14FF56B7"/>
+    <corners android:radius="16dp"/>
+</shape>

+ 12 - 2
home/src/main/res/layout/fragment_hot.xml

@@ -1,12 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rvLabel"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"/>
 
     <com.swago.baseswago.cusview.SwagoRecyclerView
         android:id="@+id/rv"
+        app:layout_constraintTop_toBottomOf="@+id/rvLabel"
+        app:layout_constraintBottom_toBottomOf="parent"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
+        android:layout_height="0dp"/>
 
 
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 24 - 0
home/src/main/res/layout/item_label.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <com.swago.baseswago.cusview.BoldTextView
+        android:id="@+id/tvTitle"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:paddingStart="12dp"
+        android:paddingEnd="12dp"
+        android:paddingTop="4dp"
+        android:paddingBottom="4dp"
+        android:textSize="14dp"
+        tools:text="Indonesian"
+        android:layout_marginStart="6dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 1
room/src/main/java/com/swago/room/anchor/AnchorRoomActivity.kt

@@ -139,7 +139,6 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
         }
 
         roomOtherVm.gameListModelLiveData.observe(this) {
-            anchorRoomFragment?.setFooterGameIcon(it.status == 1)
             if (it.status == 1) {
                 binding.rvGame.visibility = View.VISIBLE
             } else {

+ 0 - 4
room/src/main/java/com/swago/room/anchor/AnchorRoomFragment.kt

@@ -126,10 +126,6 @@ class AnchorRoomFragment : BaseComFragment<FragmentBaseComBinding>() {
         super.closeRoomed()
     }
 
-    fun setFooterGameIcon(b: Boolean) {
-        footerView?.setGameIcon(b)
-    }
-
     override val iHeader: IHeader by lazy {
         ComHeaderView(requireContext())
     }

+ 24 - 0
room/src/main/java/com/swago/room/base/BaseComFragment.kt

@@ -54,9 +54,12 @@ import com.swago.room.pk.PkVm
 import com.swago.room.vm.MsgVm
 import com.swago.room.vm.RoomOtherVm
 import com.swago.room.vm.RoomVm
+import com.swago.room.widget.AnchorFooterView
 import com.swago.room.widget.ComHeaderView
+import com.swago.room.widget.UserFooterView
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import java.io.File
 import java.lang.Exception
@@ -239,6 +242,7 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
         //直播间配置
         roomVm.roomConfigLiveData.observe(this){
             this.roomConfig = it
+            iFooter.setGameIcon(it.is_show_game==1)
             //轮播图
             binding.bannerView.setData(it.banners)
             binding.bannerView.jumpToWebFun = { banner ->
@@ -377,6 +381,7 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
         }
     }
 
+    private var isFirst = true
     override fun joinedRoom(iRoomInfo: IRoomInfo) {
         roomOtherVm.getRedEnvelopeList()
         if (iRoomInfo.getRoomSystemMsg().isNotEmpty()) {
@@ -386,6 +391,25 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
             chatAdapter.notifyDataSetChanged()
         }
 
+        //默认是否自动弹出游戏
+        lifecycleScope.launch(Dispatchers.Main){
+            delay(1000)
+            roomConfig?.let {
+                if (it.is_show_game==1&&it.auto_show_game==1){
+                    if (it.is_repeat_game==1){
+                        //多次弹出游戏
+                        openGameDialog()
+                    }else{
+                        if (isFirst) {
+                            //只弹出一次
+                            openGameDialog()
+                            isFirst = false
+                        }
+                    }
+                }
+            }
+
+        }
 
     }
 

+ 3 - 0
room/src/main/java/com/swago/room/inter/IFooter.kt

@@ -10,4 +10,7 @@ interface IFooter {
 
     fun getFooterView(): View
 
+    fun setGameIcon(b: Boolean)
+
+
 }

+ 0 - 5
room/src/main/java/com/swago/room/user/UserRoomFragment.kt

@@ -39,7 +39,6 @@ class UserRoomFragment : BaseComFragment<FragmentBaseComBinding>() {
 
     override fun initOther() {
         super.initOther()
-        roomOtherVm.getGameList()
         binding.ivBenefit.setOnClickListener(object : NoDoubleClickListener() {
             override fun onClick() {
                 val dialog = BenefitBagDialog.newInstance()
@@ -88,10 +87,6 @@ class UserRoomFragment : BaseComFragment<FragmentBaseComBinding>() {
 
         }
 
-        roomOtherVm.gameListModelLiveData.observe(this) {
-            footerView.setGameIcon(it.status == 1)
-        }
-
         footerView.openMessageFun = {
             openMessageListDialog()
         }

+ 2 - 1
room/src/main/java/com/swago/room/widget/AnchorFooterView.kt

@@ -87,7 +87,8 @@ class AnchorFooterView : ConstraintLayout, IFooter, IRoomActiveListener {
         return this
     }
 
-    fun setGameIcon(b: Boolean) {
+
+    override fun setGameIcon(b: Boolean) {
         binding.ivGame.visibility = if (b) View.VISIBLE else View.GONE
     }
 

+ 1 - 1
room/src/main/java/com/swago/room/widget/UserFooterView.kt

@@ -74,7 +74,7 @@ class UserFooterView : ConstraintLayout, IFooter,IRoomActiveListener {
         })
     }
 
-    fun setGameIcon(b: Boolean) {
+    override fun setGameIcon(b: Boolean) {
         binding.ivGame.visibility = if (b) View.VISIBLE else View.GONE
     }