Commit 65685cbc authored by wanglei's avatar wanglei

...

parent d26357cb
...@@ -113,6 +113,7 @@ dependencies { ...@@ -113,6 +113,7 @@ dependencies {
implementation("com.github.angcyo.DslTablayout:TabLayout:3.6.4") implementation("com.github.angcyo.DslTablayout:TabLayout:3.6.4")
implementation("com.github.angcyo.DslTablayout:ViewPager2Delegate:3.6.4") implementation("com.github.angcyo.DslTablayout:ViewPager2Delegate:3.6.4")
implementation("io.github.litao0621:nifty-slider:2.0.2") implementation("io.github.litao0621:nifty-slider:2.0.2")
implementation("io.github.razerdp:BasePopup:3.2.1")
//firebase //firebase
implementation(platform("com.google.firebase:firebase-bom:32.3.1")) implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
......
...@@ -24,6 +24,7 @@ import com.bytedance.sdk.shortplay.api.PSSDK.FeedListResultListener ...@@ -24,6 +24,7 @@ import com.bytedance.sdk.shortplay.api.PSSDK.FeedListResultListener
import com.bytedance.sdk.shortplay.api.ShortPlay import com.bytedance.sdk.shortplay.api.ShortPlay
import com.bytedance.sdk.shortplay.api.ShortPlayFragment import com.bytedance.sdk.shortplay.api.ShortPlayFragment
import com.google.gson.Gson import com.google.gson.Gson
import java.util.concurrent.atomic.AtomicBoolean
import kotlin.random.Random import kotlin.random.Random
...@@ -65,25 +66,47 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli ...@@ -65,25 +66,47 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli
} }
}) })
} }
if (feedListAdapter?.needLoadMore(position) == true) {
loadMore()
}
} }
}) })
PSSDK.requestPopularDrama(1, 20, object : FeedListResultListener { loadMore()
}
private var isLoading = AtomicBoolean(false)
private var loadIndex = 1
private var hasMore: Boolean = true
private fun loadMore() {
if (isLoading.get() || !hasMore) return
isLoading.set(true)
PSSDK.requestFeedList(loadIndex, 20, object : FeedListResultListener {
override fun onFail(errorInfo: PSSDK.ErrorInfo?) { override fun onFail(errorInfo: PSSDK.ErrorInfo?) {
} }
override fun onSuccess(result: FeedListLoadResult<ShortPlay>?) { override fun onSuccess(result: FeedListLoadResult<ShortPlay>?) {
result ?: return
val activity = requireActivity() as MainActivity? val activity = requireActivity() as MainActivity?
result?.dataList?.let {
activity?.runOnUiThread { hasMore = result.hasMore
setShortData(it) val list = result.dataList
} activity?.runOnUiThread { setShortData(list) }
} LogEx.logDebug(TAG, "hasMore=$hasMore")
loadIndex++
isLoading.set(false)
} }
}) })
} }
private fun setShortData(dataList: List<ShortPlay>) { private fun setShortData(dataList: List<ShortPlay>) {
val fragments: ArrayList<Fragment> = ArrayList() val fragments: ArrayList<Fragment> = ArrayList()
...@@ -214,6 +237,10 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli ...@@ -214,6 +237,10 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli
private val fragments: ArrayList<Fragment> = ArrayList() private val fragments: ArrayList<Fragment> = ArrayList()
fun needLoadMore(position: Int): Boolean {
return fragments.size - position < 5
}
override fun getItemCount(): Int { override fun getItemCount(): Int {
return fragments.size return fragments.size
} }
......
...@@ -55,7 +55,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView { ...@@ -55,7 +55,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView {
val binding = LayoutOverlayForyouBinding.bind(this) val binding = LayoutOverlayForyouBinding.bind(this)
binding.tvTitle.text = shortPlay.title binding.tvTitle.text = shortPlay.title
binding.tvDesc.text = shortPlay.desc binding.tvDesc.text = shortPlay.desc
bindItemDataCallBack?.invoke(shortPlay,index, this) bindItemDataCallBack?.invoke(shortPlay, index, this)
} }
R.layout.layout_overlay_player -> { R.layout.layout_overlay_player -> {
...@@ -101,7 +101,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView { ...@@ -101,7 +101,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView {
setThumbTintList(ColorStateList.valueOf(thumbColor)) setThumbTintList(ColorStateList.valueOf(thumbColor))
setThumbShadowColor(Color.BLACK) setThumbShadowColor(Color.BLACK)
} }
binding.tvTitle.text = "${shortPlay.title} $index/${shortPlay.total}"
bindItemDataCallBack?.invoke(shortPlay, index, this) bindItemDataCallBack?.invoke(shortPlay, index, this)
} }
......
package com.base.appzxhy.ui.play package com.base.appzxhy.ui.play
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent import android.content.Intent
import android.util.SparseArray import android.util.SparseArray
import android.view.Gravity import android.view.Gravity
...@@ -8,11 +9,15 @@ import android.view.View ...@@ -8,11 +9,15 @@ import android.view.View
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.TextView import android.widget.TextView
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.content.ContextCompat
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.base.BaseActivity import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.databinding.ActivityPlayFullBinding import com.base.appzxhy.databinding.ActivityPlayFullBinding
import com.base.appzxhy.databinding.LayoutOverlayPlayerBinding import com.base.appzxhy.databinding.LayoutOverlayPlayerBinding
import com.base.appzxhy.databinding.PupupMoreBinding
import com.base.appzxhy.ui.views.DialogSelectEP import com.base.appzxhy.ui.views.DialogSelectEP
import com.base.appzxhy.ui.views.MyPopupMore
import com.base.appzxhy.ui.views.ReportProblemDialog.showReportProblemDialog
import com.base.appzxhy.ui.views.ShortPlayEPDialog.showShortPlayEPDialog import com.base.appzxhy.ui.views.ShortPlayEPDialog.showShortPlayEPDialog
import com.base.appzxhy.ui.views.ShortPlayQualityDialog.showShortPlayQualityDialog import com.base.appzxhy.ui.views.ShortPlayQualityDialog.showShortPlayQualityDialog
import com.base.appzxhy.ui.views.ShortPlaySpeedDialog.showShortPlaySpeedDialog import com.base.appzxhy.ui.views.ShortPlaySpeedDialog.showShortPlaySpeedDialog
...@@ -80,9 +85,9 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -80,9 +85,9 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
override fun getDetailDrawAdPositions(): List<Int> { override fun getDetailDrawAdPositions(): List<Int> {
val integers = ArrayList<Int>() val integers = ArrayList<Int>()
// 在第1集、第3集、第50集后面插入广告 // 在第1集、第3集、第50集后面插入广告
integers.add(1) // integers.add(1)
integers.add(3) // integers.add(3)
integers.add(50) // integers.add(50)
return integers return integers
} }
...@@ -149,8 +154,10 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -149,8 +154,10 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
// PlayHistoryHelper.savePlayHistory(playHistory) // PlayHistoryHelper.savePlayHistory(playHistory)
} }
override fun onItemSelected(position: Int, p1: PSSDK.ShortPlayDetailPageListener.ItemType?, index: Int) { override fun onItemSelected(position: Int, type: PSSDK.ShortPlayDetailPageListener.ItemType, index: Int) {
playControlViewSparseArray.get(index)?.findViewById<TextView>(R.id.tvTitle)?.text =
"${shortPlay.title} $index/${shortPlay.total}"
} }
override fun onVideoPlayStateChanged(shortPlay: ShortPlay?, index: Int, playbackState: Int) { override fun onVideoPlayStateChanged(shortPlay: ShortPlay?, index: Int, playbackState: Int) {
...@@ -318,13 +325,25 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -318,13 +325,25 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
} }
} }
} }
playerBinding.tvTitle.text = "${shortPlay?.title} $startFromIndex/${shortPlay?.total}" playerBinding.tvTitle.text = "${shortPlay?.title}"
playerBinding.flBack.setOnClickListener { playerBinding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
playerBinding.flMore.setOnClickListener { playerBinding.flMore.setOnClickListener {
val popup = MyPopupMore(this, R.layout.pupup_more)
popup.setBlurBackgroundEnable(false)
popup.setBackground(ContextCompat.getDrawable(this, R.drawable.trans))
popup.setPopupGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL)
popup.showPopupWindow(playerBinding.flMore)
val popupBinding = PupupMoreBinding.bind(popup.contentView)
popupBinding.root.setOnClickListener {
popup.dismiss()
showReportProblemDialog()
}
} }
} }
override fun configSystemBar() { override fun configSystemBar() {
......
package com.base.appzxhy.ui.views
import android.app.Activity
import android.content.Context
import android.graphics.Rect
import android.view.View
import android.view.animation.Animation
import com.base.appzxhy.utils.LogEx
import razerdp.basepopup.BasePopupWindow
import razerdp.util.animation.AnimationHelper
import razerdp.util.animation.TranslationConfig
class MyPopupMore : BasePopupWindow {
private val TAG = "MyPopupM"
constructor(context: Context) : super(context)
constructor(activity: Activity, layout: Int) : this(activity) {
setContentView(layout)
}
override fun onViewCreated(contentView: View) {
super.onViewCreated(contentView)
LogEx.logDebug(TAG, "onViewCreated")
}
override fun onCreateShowAnimation(): Animation {
return AnimationHelper.asAnimation()
.withTranslation(TranslationConfig.FROM_TOP)
.toShow()
}
override fun onCreateDismissAnimation(): Animation {
return AnimationHelper.asAnimation()
.withTranslation(TranslationConfig.TO_TOP)
.toDismiss()
}
override fun onPopupLayout(popupRect: Rect, anchorRect: Rect) {
super.onPopupLayout(popupRect, anchorRect)
LogEx.logDebug(TAG, "onPopupLayout")
}
}
\ No newline at end of file
package com.base.appzxhy.ui.views
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import com.base.appzxhy.R
import com.base.appzxhy.databinding.DialogReportBinding
import com.base.appzxhy.helper.EventUtils
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
object ReportProblemDialog {
fun Context.showReportProblemDialog() {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
val binding = DialogReportBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(true)
dialog.show()
val parentView = binding.root.parent as View
val behavior = BottomSheetBehavior.from(parentView)
//展开
behavior.state = BottomSheetBehavior.STATE_EXPANDED
binding.tvSubmit.setOnClickListener {
if (binding.edit.text.isNotEmpty()) return@setOnClickListener
val content = binding.edit.toString()
EventUtils.event("Report_Problem", "content=$content")
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#1cffffff"/>
<corners android:radius="10dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#59d9d9d9" />
<corners android:radius="9dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/transparent"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#2D2F3D"
android:fitsSystemWindows="true"
android:orientation="vertical">
<View
android:layout_width="50dp"
android:layout_height="5dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="13dp"
android:background="@drawable/bg_59d9d9d9_10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="18dp"
android:text="Report a Problem"
android:textColor="@color/white"
android:textSize="23sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="28dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="@string/report_desc"
android:textColor="@color/white"
android:textSize="15sp" />
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="19dp"
android:background="@drawable/bg_1cffffff_10"
android:gravity="start|top"
android:hint="Type here..."
android:padding="18dp"
android:textColor="#99ffffff"
android:textColorHint="#99ffffff" />
<TextView
android:id="@+id/tvSubmit"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/bg_ff3d71_10"
android:gravity="center"
android:text="Submit"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="120dp"
android:layout_height="40dp"
android:background="#2D2F3D"
android:id="@+id/root"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:paddingHorizontal="18dp"
android:paddingVertical="10dp">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Report"
android:textColor="@color/white" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="14dp"
android:src="@mipmap/report" />
</LinearLayout>
...@@ -33,5 +33,6 @@ ...@@ -33,5 +33,6 @@
<string name="auto">Auto</string> <string name="auto">Auto</string>
<string name="playback_speed">Playback Speed</string> <string name="playback_speed">Playback Speed</string>
<string name="quality">Quality</string> <string name="quality">Quality</string>
<string name="report_desc">Something wrong with this episode? Give feedback to help us improve your experience.</string>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment