Ver Fonte

1.添加直播详情页面UI

王鹏鹏 há 2 anos atrás
pai
commit
35519ace9e

+ 6 - 1
livebroadcast/src/main/java/com/yingyang/livebroadcast/activity/list/LiveBroadcastListActivity.kt

@@ -21,6 +21,7 @@ import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.permissions.EsayPermissions
 import com.yingyangfly.baselib.permissions.Permission
 import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.baselib.utils.GsonUtil
 import com.yingyangfly.baselib.utils.JumpUtil
 
 /**
@@ -107,7 +108,11 @@ class LiveBroadcastListActivity :
             }
         }
         liveBroadcastAdapter.jumpDetailsActivityClickListener = {
-            JumpUtil.jumpActivity(RouterUrlCommon.liveDetails, mContext)
+            JumpUtil.jumpActivityWithUrl(
+                RouterUrlCommon.liveDetails,
+                GsonUtil.GsonString(it),
+                mContext
+            )
         }
     }
 

+ 45 - 3
livebroadcast/src/main/java/com/yingyang/livebroadcast/details/LiveDetailsActivity.kt

@@ -1,26 +1,68 @@
 package com.yingyang.livebroadcast.details
 
+import android.annotation.SuppressLint
+import android.text.TextUtils
+import android.view.MotionEvent
+import android.view.View
 import com.alibaba.android.arouter.facade.annotation.Route
+import com.yingyang.livebroadcast.R
 import com.yingyang.livebroadcast.databinding.ActivityLiveDetailsBinding
+import com.yingyang.livebroadcast.entity.Record
 import com.yingyangfly.baselib.base.BaseActivity
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.baselib.utils.GsonUtil
 
 /**
  * 直播详情
  */
 @Route(path = RouterUrlCommon.liveDetails)
-class LiveDetailsActivity : BaseActivity<ActivityLiveDetailsBinding>() {
+class LiveDetailsActivity : BaseActivity<ActivityLiveDetailsBinding>(),
+    View.OnTouchListener {
 
-    override fun initViews() {
+    private var url = ""
 
+    override fun initViews() {
+        url = intent.getStringExtra("url") ?: ""
+        if (TextUtils.isEmpty(url).not()) {
+            val record = GsonUtil.GsonToBean(url, Record::class.java)
+            if (record != null) {
+                binding.data = record
+            }
+        }
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
-
+        binding.layoutHome.setOnTouchListener(this)
     }
 
     override fun initData() {
 
     }
 
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.layoutHome) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                if (v.id == R.id.layoutHome) {
+                    finish()
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.layoutHome) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
 }

+ 20 - 0
livebroadcast/src/main/java/com/yingyang/livebroadcast/entity/LiveBroadcastListBean.kt

@@ -53,6 +53,26 @@ data class Record(
         val sdf = SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
         return sdf.format(date as Date)
     }
+
+    fun getLivTime(): String {
+        return if (TextUtils.isEmpty(endTime)) {
+            if (TextUtils.isEmpty(beginTime)) {
+                ""
+            } else {
+                beginTime
+            }
+        } else {
+            "$beginTime - $endTime"
+        }
+    }
+
+    fun getLiveDesnInfo(): String {
+        return if (TextUtils.isEmpty(liveDesn)) {
+            ""
+        } else {
+            liveDesn
+        }
+    }
 }
 
 data class StreamInfo(

+ 52 - 1
livebroadcast/src/main/res/layout/activity_live_details.xml

@@ -4,6 +4,13 @@
     xmlns:tools="http://schemas.android.com/tools"
     tools:ignore="ResourceName">
 
+    <data>
+
+        <variable
+            name="data"
+            type="com.yingyang.livebroadcast.entity.Record" />
+    </data>
+
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -65,8 +72,52 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tvTitle"
             app:strokeColor="@color/color_960DA346"
-            app:strokeWidth="@dimen/divider_12px" />
+            app:strokeWidth="@dimen/divider_12px">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/tvLiveName"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/divider_21px"
+                    android:layout_marginTop="@dimen/divider_45px"
+                    android:text='@{"直播标题:"+data.liveName}'
+                    android:textColor="@color/color_FF333333"
+                    android:textSize="@dimen/divider_24px"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/tvLiveTime"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/divider_21px"
+                    android:layout_marginTop="@dimen/divider_28px"
+                    android:text='@{"直播标题:"+data.getLivTime()}'
+                    android:textColor="@color/color_FF333333"
+                    android:textSize="@dimen/divider_24px"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tvLiveName" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/divider_21px"
+                    android:layout_marginTop="@dimen/divider_28px"
+                    android:text='@{"直播描述:"+data.getLiveDesnInfo()}'
+                    android:textColor="@color/color_FF333333"
+                    android:textSize="@dimen/divider_24px"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tvLiveTime" />
 
+            </androidx.constraintlayout.widget.ConstraintLayout>
 
+        </com.google.android.material.card.MaterialCardView>
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>

+ 1 - 1
livebroadcast/src/main/res/layout/item_live_broadcast.xml

@@ -74,7 +74,7 @@
                     android:layout_weight="1"
                     android:ellipsize="end"
                     android:maxLines="1"
-                    android:text='@{"直播描述:"+data.liveDesn}'
+                    android:text='@{"直播描述:"+data.getLiveDesnInfo()}'
                     android:textColor="@color/color_FF8C8C8C"
                     android:textSize="@dimen/divider_22px" />