Commit d26357cb authored by wanglei's avatar wanglei

...

parent 55a87036
...@@ -70,6 +70,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl ...@@ -70,6 +70,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
} }
binding.viewPager2.run { binding.viewPager2.run {
isUserInputEnabled = false isUserInputEnabled = false
offscreenPageLimit = 1
//https://www.jianshu.com/p/f69bd30cf5b0 //https://www.jianshu.com/p/f69bd30cf5b0
//FragmentStateAdapter 这里必须传人fragment //FragmentStateAdapter 这里必须传人fragment
adapter = pageAdapter adapter = pageAdapter
......
package com.base.appzxhy.ui.main package com.base.appzxhy.ui.main
import android.content.Intent
import android.view.Gravity
import android.view.View import android.view.View
import android.widget.FrameLayout
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.base.appzxhy.R
import com.base.appzxhy.base.BaseFragment import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.databinding.FragmentPlaySlideBinding import com.base.appzxhy.databinding.FragmentPlaySlideBinding
import com.base.appzxhy.databinding.LayoutOverlayForyouBinding
import com.base.appzxhy.ui.play.CustomCollectView
import com.base.appzxhy.ui.play.CustomLikeView
import com.base.appzxhy.ui.play.CustomOverlayView
import com.base.appzxhy.ui.play.CustomShareView
import com.base.appzxhy.ui.play.PlayFullActivity
import com.base.appzxhy.utils.LogEx
import com.bytedance.sdk.shortplay.api.PSSDK import com.bytedance.sdk.shortplay.api.PSSDK
import com.bytedance.sdk.shortplay.api.PSSDK.DetailPageConfig import com.bytedance.sdk.shortplay.api.PSSDK.DetailPageConfig
import com.bytedance.sdk.shortplay.api.PSSDK.FeedListLoadResult import com.bytedance.sdk.shortplay.api.PSSDK.FeedListLoadResult
import com.bytedance.sdk.shortplay.api.PSSDK.FeedListResultListener 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 kotlin.random.Random
class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySlideBinding::inflate) { class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySlideBinding::inflate) {
...@@ -19,6 +32,10 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli ...@@ -19,6 +32,10 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli
private var feedListAdapter: FeedListAdapter? = null private var feedListAdapter: FeedListAdapter? = null
private var currentShortPlayFragment: ShortPlayFragment? = null private var currentShortPlayFragment: ShortPlayFragment? = null
// private val customViewSparseArray = SparseArray<CustomOverlayView>()
private var currentShortPlay: ShortPlay? = null
private var currentShortPlayIndex: Int? = null
override fun initView() { override fun initView() {
super.initView() super.initView()
feedListAdapter = FeedListAdapter(this) feedListAdapter = FeedListAdapter(this)
...@@ -79,6 +96,12 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli ...@@ -79,6 +96,12 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli
private fun createShortPlayFragment(shortPlay: ShortPlay): ShortPlayFragment? { private fun createShortPlayFragment(shortPlay: ShortPlay): ShortPlayFragment? {
var freeEp = 10
if (freeEp >= shortPlay.total) {
freeEp = shortPlay.total
}
val startFromIndex = Random.nextInt(1, freeEp)
val builder = DetailPageConfig.Builder() val builder = DetailPageConfig.Builder()
builder.hideLeftTopCloseAndTitle(true, null) builder.hideLeftTopCloseAndTitle(true, null)
.displayBottomExtraView(false) .displayBottomExtraView(false)
...@@ -86,13 +109,20 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli ...@@ -86,13 +109,20 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli
.displayTextVisibility(DetailPageConfig.TEXT_POS_BOTTOM_TITLE, false) .displayTextVisibility(DetailPageConfig.TEXT_POS_BOTTOM_TITLE, false)
.displayTextVisibility(DetailPageConfig.TEXT_POS_BOTTOM_DESC, false) .displayTextVisibility(DetailPageConfig.TEXT_POS_BOTTOM_DESC, false)
.playSingleItem(true) .playSingleItem(true)
.startPlayIndex(startFromIndex)
val config = builder.build() val config = builder.build()
val shortPlayFragment = PSSDK.createDetailFragment(shortPlay, config, object : PSSDK.ShortPlayDetailPageListener { val shortPlayFragment = PSSDK.createDetailFragment(shortPlay, config, object : PSSDK.ShortPlayDetailPageListener {
override fun onProgressChange(shortPlay: ShortPlay, index: Int, currentPlayTime: Int, duration: Int) = Unit override fun onProgressChange(shortPlay: ShortPlay, index: Int, currentPlayTime: Int, duration: Int) = Unit
override fun onPlayFailed(errorInfo: PSSDK.ErrorInfo?): Boolean = false override fun onPlayFailed(errorInfo: PSSDK.ErrorInfo?): Boolean = false
override fun onShortPlayPlayed(shortPlay: ShortPlay?, index: Int) = Unit override fun onShortPlayPlayed(shortPlay: ShortPlay?, index: Int) {
LogEx.logDebug(TAG, "onShortPlayPlayed shortPlay=$shortPlay index=$index")
currentShortPlay = shortPlay
currentShortPlayIndex = index
}
override fun onItemSelected(position: Int, type: PSSDK.ShortPlayDetailPageListener.ItemType, index: Int) = Unit override fun onItemSelected(position: Int, type: PSSDK.ShortPlayDetailPageListener.ItemType, index: Int) = Unit
override fun onVideoPlayStateChanged(shortPlay: ShortPlay?, index: Int, playbackState: Int) = Unit override fun onVideoPlayStateChanged(shortPlay: ShortPlay?, index: Int, playbackState: Int) = Unit
override fun onVideoPlayCompleted(shortPlay: ShortPlay?, index: Int) = Unit override fun onVideoPlayCompleted(shortPlay: ShortPlay?, index: Int) = Unit
...@@ -105,6 +135,71 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli ...@@ -105,6 +135,71 @@ class PlaySlideFragment : BaseFragment<FragmentPlaySlideBinding>(FragmentPlaySli
override fun onObtainPlayerControlViews(): MutableList<View> { override fun onObtainPlayerControlViews(): MutableList<View> {
val views = ArrayList<View>() val views = ArrayList<View>()
val aLLBottomMargin = resources.getDimensionPixelSize(R.dimen.dp_120)
val itemMargin = resources.getDimensionPixelSize(R.dimen.dp_70)
//分享
val customShareView = CustomShareView(requireContext())
customShareView.text = resources.getString(R.string.share)
val shareParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply {
gravity = Gravity.BOTTOM or Gravity.RIGHT
bottomMargin = aLLBottomMargin
rightMargin = resources.getDimensionPixelSize(R.dimen.dp_18)
}
customShareView.setLayoutParams(shareParams)
customShareView.setOnClickListener {
val intent = Intent(Intent.ACTION_SEND)
intent.setType("text/plain")
intent.putExtra(Intent.EXTRA_SUBJECT, shortPlay.title)
intent.putExtra(Intent.EXTRA_TEXT, shortPlay.desc)
startActivity(Intent.createChooser(intent, "分享短剧"))
}
//收藏按钮
val customCollectView = CustomCollectView(requireContext())
val collectParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply {
gravity = Gravity.BOTTOM or Gravity.RIGHT
bottomMargin = aLLBottomMargin + itemMargin * 1
rightMargin = resources.getDimensionPixelSize(R.dimen.dp_18)
}
customCollectView.setLayoutParams(collectParams)
// 点赞按钮
val customLikeView = CustomLikeView(requireContext())
val likeParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply {
gravity = Gravity.BOTTOM or Gravity.RIGHT
bottomMargin = aLLBottomMargin + itemMargin * 2
rightMargin = resources.getDimensionPixelSize(R.dimen.dp_18)
}
customLikeView.setLayoutParams(likeParams)
val customOverlayView = CustomOverlayView(requireContext(), R.layout.layout_overlay_foryou)
customOverlayView.bindItemDataCallBack = { data, index, view ->
val customBinding = LayoutOverlayForyouBinding.bind(view)
customBinding.llBtn.setOnClickListener {
val activity = requireActivity() as MainActivity?
val useData = currentShortPlay ?: data
LogEx.logDebug(TAG, "PlayFullActivity currentShortPlayIndex=$currentShortPlayIndex")
activity?.startActivity(Intent(activity, PlayFullActivity::class.java).apply {
putExtra("data", Gson().toJson(useData))
if (currentShortPlayIndex != null) {
putExtra("startFromIndex", currentShortPlayIndex)
}
})
}
}
views.add(customLikeView)
views.add(customCollectView)
views.add(customShareView)
views.add(customOverlayView)
return views return views
} }
}) })
......
...@@ -13,11 +13,8 @@ import com.base.appzxhy.R ...@@ -13,11 +13,8 @@ import com.base.appzxhy.R
import com.base.appzxhy.databinding.LayoutOverlayForyouBinding import com.base.appzxhy.databinding.LayoutOverlayForyouBinding
import com.base.appzxhy.databinding.LayoutOverlayPlayerBinding import com.base.appzxhy.databinding.LayoutOverlayPlayerBinding
import com.base.appzxhy.ui.play.effect.AnimationEffect import com.base.appzxhy.ui.play.effect.AnimationEffect
import com.base.appzxhy.ui.views.ShortPlayQualityDialog.showShortPlayQualityDialog
import com.base.appzxhy.ui.views.ShortPlaySpeedDialog.showShortPlaySpeedDialog
import com.base.appzxhy.utils.KotlinExt.formatSeconds import com.base.appzxhy.utils.KotlinExt.formatSeconds
import com.base.appzxhy.utils.LogEx import com.base.appzxhy.utils.LogEx
import com.base.appzxhy.utils.ToastUtils.toast
import com.base.appzxhy.utils.Utils.dp import com.base.appzxhy.utils.Utils.dp
import com.bytedance.sdk.shortplay.api.PSSDK import com.bytedance.sdk.shortplay.api.PSSDK
import com.bytedance.sdk.shortplay.api.ShortPlay import com.bytedance.sdk.shortplay.api.ShortPlay
...@@ -37,7 +34,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView { ...@@ -37,7 +34,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView {
private var tvPlayTotal: TextView? = null private var tvPlayTotal: TextView? = null
var bindItemDataCallBack: ((index: Int, customOverlayView: CustomOverlayView) -> Unit)? = null var bindItemDataCallBack: ((shortPlay: ShortPlay, index: Int, customOverlayView: CustomOverlayView) -> Unit)? = null
constructor(context: Context, layout: Int) : super(context) { constructor(context: Context, layout: Int) : super(context) {
this.layout = layout this.layout = layout
...@@ -58,6 +55,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView { ...@@ -58,6 +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)
} }
R.layout.layout_overlay_player -> { R.layout.layout_overlay_player -> {
...@@ -104,7 +102,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView { ...@@ -104,7 +102,7 @@ class CustomOverlayView : FrameLayout, PSSDK.IControlView {
setThumbShadowColor(Color.BLACK) setThumbShadowColor(Color.BLACK)
} }
bindItemDataCallBack?.invoke(index, this) bindItemDataCallBack?.invoke(shortPlay, index, this)
} }
} }
......
...@@ -52,9 +52,10 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -52,9 +52,10 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
shortPlay = Gson().fromJson(it, ShortPlay::class.java) shortPlay = Gson().fromJson(it, ShortPlay::class.java)
} }
shortPlay?.let { showShortPlayerFragment(it) } startFromIndex = intent.extras?.getInt("startFromIndex", 1) ?: 1
shortPlay?.episodes LogEx.logDebug(TAG, "startFromIndex=$startFromIndex")
shortPlay?.let { showShortPlayerFragment(it) }
} }
override fun initListener() { override fun initListener() {
...@@ -135,6 +136,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -135,6 +136,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
return false return false
} }
@SuppressLint("SetTextI18n")
override fun onShortPlayPlayed(shortPlay: ShortPlay?, index: Int) { override fun onShortPlayPlayed(shortPlay: ShortPlay?, index: Int) {
this@PlayFullActivity.shortPlay = shortPlay this@PlayFullActivity.shortPlay = shortPlay
startFromIndex = index startFromIndex = index
...@@ -189,7 +191,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -189,7 +191,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
val itemMargin = this@PlayFullActivity.resources.getDimensionPixelSize(R.dimen.dp_70) val itemMargin = this@PlayFullActivity.resources.getDimensionPixelSize(R.dimen.dp_70)
// 点赞按钮 // 点赞按钮
val customLikeView = CustomLikeView(applicationContext) val customLikeView = CustomLikeView(this@PlayFullActivity)
val likeParams = val likeParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply { FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply {
gravity = Gravity.BOTTOM or Gravity.RIGHT gravity = Gravity.BOTTOM or Gravity.RIGHT
...@@ -200,7 +202,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -200,7 +202,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
views.add(customLikeView) views.add(customLikeView)
//收藏按钮 //收藏按钮
val customCollectView = CustomCollectView(applicationContext) val customCollectView = CustomCollectView(this@PlayFullActivity)
val collectParams = val collectParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply { FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply {
gravity = Gravity.BOTTOM or Gravity.RIGHT gravity = Gravity.BOTTOM or Gravity.RIGHT
...@@ -211,7 +213,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -211,7 +213,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
views.add(customCollectView) views.add(customCollectView)
//选集,测试过无法触发点击事件 //选集,测试过无法触发点击事件
val customPEView = CustomView(applicationContext, R.mipmap.fy_list) val customPEView = CustomView(this@PlayFullActivity, R.mipmap.fy_list)
customPEView.text = resources.getString(R.string.list) customPEView.text = resources.getString(R.string.list)
val peParams = val peParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply { FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply {
...@@ -237,7 +239,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -237,7 +239,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
} }
//分享 //分享
val customShareView = CustomShareView(applicationContext) val customShareView = CustomShareView(this@PlayFullActivity)
customShareView.text = resources.getString(R.string.share) customShareView.text = resources.getString(R.string.share)
val shareParams = val shareParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply { FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT).apply {
...@@ -261,7 +263,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB ...@@ -261,7 +263,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT) FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)
playControlView.let { views.add(it) } playControlView.let { views.add(it) }
//全局持有控制view //全局持有控制view
playControlView.bindItemDataCallBack = { index, view -> playControlView.bindItemDataCallBack = { data, index, view ->
playControlViewSparseArray[index] = view playControlViewSparseArray[index] = view
} }
val playerBinding = LayoutOverlayPlayerBinding.bind(playControlView) val playerBinding = LayoutOverlayPlayerBinding.bind(playControlView)
......
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