Commit b31d5d0e authored by jyx's avatar jyx

代码优化

parent 748e137e
......@@ -89,8 +89,8 @@ public class MintsApplication extends MultiDexApplication {
*/
public void thirdConfig() {
// 未同意权限弹窗,不进行SDK初始化
if (AppPreferencesManager.INSTANCE.get()
.getBoolean(Constant.LOAN_PERMISSION_FLAG, true)) return;
// if (AppPreferencesManager.INSTANCE.get()
// .getBoolean(Constant.LOAN_PERMISSION_FLAG, true)) return;
initMiitHelper();
......
package com.mints.wisdomclean.mvp.model
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class EpisodeBean(
var lock: Boolean = false,
var playing: Boolean = false,
var title: String = "",
) : Parcelable, java.io.Serializable
\ No newline at end of file
package com.mints.wisdomclean.ui.adapter
import android.graphics.Color
import android.view.View
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.EpisodeBean
/**
* @author Assen
......@@ -10,9 +13,18 @@ import com.mints.wisdomclean.R
* @desc
*/
class ItemVideoEpisodeAdapter :
BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_item_video_epsiode) {
BaseQuickAdapter<EpisodeBean, BaseViewHolder>(R.layout.item_item_video_epsiode) {
override fun convert(holder: BaseViewHolder, item: String) {
holder.setText(R.id.item_tv, item)
override fun convert(holder: BaseViewHolder, item: EpisodeBean) {
holder.setText(R.id.item_tv, item.title)
if (item.playing) holder.setTextColor(R.id.item_tv, Color.RED)
else holder.setTextColor(R.id.item_tv, Color.BLACK)
holder.getView<View>(R.id.item_iv_lock).visibility =
if (item.lock) View.VISIBLE else View.GONE
holder.getView<View>(R.id.item_iv_play).visibility =
if (item.playing) View.VISIBLE else View.GONE
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.EpisodeBean
import com.mints.wisdomclean.utils.ToastUtil
/**
......@@ -13,17 +14,17 @@ import com.mints.wisdomclean.utils.ToastUtil
* @desc
*/
class VideoEpisodeAdapter :
BaseQuickAdapter<List<String>, BaseViewHolder>(R.layout.item_video_epsiode) {
BaseQuickAdapter<List<EpisodeBean>, BaseViewHolder>(R.layout.item_video_epsiode) {
override fun convert(holder: BaseViewHolder, item: List<String>) {
override fun convert(holder: BaseViewHolder, item: List<EpisodeBean>) {
val rv = holder.getView<RecyclerView>(R.id.item_rv)
rv.layoutManager = GridLayoutManager(context, 6)
val itemVideoEpisodeAdapter = ItemVideoEpisodeAdapter()
rv.adapter = itemVideoEpisodeAdapter
val list = mutableListOf<String>()
val list = mutableListOf<EpisodeBean>()
itemVideoEpisodeAdapter.addChildClickViewIds(R.id.item_tv)
itemVideoEpisodeAdapter.setOnItemChildClickListener { adapter, view, position ->
ToastUtil.show(context, item[position])
mOnEpisodeClickListener?.onEpisodeClick(position)
}
list.addAll(item)
itemVideoEpisodeAdapter.setNewInstance(list)
......@@ -32,4 +33,16 @@ class VideoEpisodeAdapter :
override fun getItemCount(): Int {
return data.size % 30
}
private var mOnEpisodeClickListener: OnEpisodeClickListener? = null
fun setOnEpisodeClickListener(onEpisodeClickListener: OnEpisodeClickListener?) {
mOnEpisodeClickListener = onEpisodeClickListener
}
interface OnEpisodeClickListener {
fun onEpisodeClick(position: Int)
}
}
\ No newline at end of file
......@@ -33,7 +33,6 @@ import com.mints.wisdomclean.utils.SpanUtils
import com.mints.wisdomclean.utils.UcropUtils
import com.mints.wisdomclean.video.DPHolderManager
import com.mints.wisdomclean.video.DramaApiDetailActivity
import com.mints.wisdomclean.video.DramaApiDetailActivity.Companion.KEY_DRAMA_CURRENT_DURATION
import com.mints.wisdomclean.video.DramaApiDetailActivity.Companion.KEY_DRAMA_CUSTOM_REPORT_ENABLED
import com.mints.wisdomclean.video.DramaApiDetailActivity.Companion.KEY_DRAMA_FREE_SET
import com.mints.wisdomclean.video.DramaApiDetailActivity.Companion.KEY_DRAMA_HIDE_LEFT_TOP_TIPS
......@@ -157,8 +156,6 @@ class MyFragment : BaseFragment(), MyView, View.OnClickListener {
intent.putExtra(KEY_DRAMA_FREE_SET, 0)
// 解锁集数
intent.putExtra(KEY_DRAMA_LOCK_SET, 0)
// 启播时间点
intent.putExtra(KEY_DRAMA_CURRENT_DURATION, 0)
// 无限下滑
intent.putExtra(KEY_DRAMA_INFINITE_SCROLL_ENABLED, true)
// 举报页面
......
......@@ -10,6 +10,7 @@ import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.EpisodeBean
import com.mints.wisdomclean.ui.adapter.VideoEpisodeAdapter
import com.mints.wisdomclean.utils.CommonUtils
......@@ -27,6 +28,9 @@ class VideoEpisodeDialog(context: Context, private val listener: DialogListener)
private val tab: TabLayout
private val ivClose: ImageView
private val mData = mutableListOf<EpisodeBean>()
private var adapter: VideoEpisodeAdapter? = null
init {
setContentView(R.layout.dialog_video_episode)
// 设置window属性
......@@ -55,20 +59,20 @@ class VideoEpisodeDialog(context: Context, private val listener: DialogListener)
}
private fun initVp() {
val data = arrayListOf<String>()
for (i in 1..100) {
data.add("" + i)
mData.add(EpisodeBean(lock = false, playing = false, "" + i))
}
val subList = CommonUtils.getSubList(30, data)
val adapter = VideoEpisodeAdapter()
adapter.setNewInstance(subList)
val subList = CommonUtils.getSubList(30, mData)
adapter = VideoEpisodeAdapter()
adapter?.setNewInstance(subList)
vp2.adapter = adapter
TabLayoutMediator(tab, vp2) { tab, position ->
// 初始化Tab
tab.id = position
tab.customView =
getTabView(
"" + subList[position][0] + "-" + subList[position][subList[position].size - 1],
subList[position][0].title + "-"
+ subList[position][subList[position].size - 1].title,
position
)
}.attach()
......@@ -107,4 +111,20 @@ class VideoEpisodeDialog(context: Context, private val listener: DialogListener)
}
}
fun setCurrentIndex(position: Int) {
for (mDatum in mData) {
mDatum.playing = false
}
mData[position - 1].playing = true
// adapter?.notifyItemChanged(position)
adapter?.notifyDataSetChanged()
}
private var mOnEpisodeClickListener: VideoEpisodeAdapter.OnEpisodeClickListener? = null
fun setOnEpisodeClickListener(onEpisodeClickListener: VideoEpisodeAdapter.OnEpisodeClickListener) {
mOnEpisodeClickListener = onEpisodeClickListener
adapter?.setOnEpisodeClickListener(mOnEpisodeClickListener)
}
}
\ No newline at end of file
package com.mints.wisdomclean.video
import android.app.Dialog
import android.content.Context
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.LinearLayout
import com.bytedance.sdk.dp.*
import com.mints.wisdomclean.MintsApplication
......@@ -12,7 +12,11 @@ import com.mints.wisdomclean.R
import com.mints.wisdomclean.ad.AdManager
import com.mints.wisdomclean.ad.AdStatusListener
import com.mints.wisdomclean.ui.activitys.base.BaseActivity
import com.mints.wisdomclean.ui.adapter.VideoEpisodeAdapter
import com.mints.wisdomclean.ui.widgets.DialogListener
import com.mints.wisdomclean.ui.widgets.VideoEpisodeDialog
import kotlinx.android.synthetic.main.drama_activity_api_detail.*
import kotlinx.android.synthetic.main.drama_activity_api_detail.fm_bottom
import org.json.JSONObject
/**
......@@ -20,7 +24,7 @@ import org.json.JSONObject
* @date 2023/7/6
* @desc
*/
class DramaApiDetailActivity : BaseActivity() {
class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClickListener {
companion object {
const val KEY_DRAMA_UNLOCK_INDEX = "key_drama_unlock_index"
......@@ -28,7 +32,6 @@ class DramaApiDetailActivity : BaseActivity() {
const val KEY_DRAMA_MODE = "key_drama_mode"
const val KEY_DRAMA_FREE_SET = "key_drama_free_set"
const val KEY_DRAMA_LOCK_SET = "key_drama_lock_set"
const val KEY_DRAMA_CURRENT_DURATION = "drama_current_duration"
const val KEY_DRAMA_INFINITE_SCROLL_ENABLED = "key_drama_infinite_scroll_enabled"
const val KEY_DRAMA_CUSTOM_REPORT_ENABLED = "key_drama_custom_report_enabled"
const val KEY_DRAMA_HIDE_LEFT_TOP_TIPS = "key_drama_hide_left_top_tips"
......@@ -62,14 +65,8 @@ class DramaApiDetailActivity : BaseActivity() {
private var unlockBtn: Button? = null
private var leaveBtn: Button? = null
private var indexEt: EditText? = null
private var goBtn: Button? = null
private var lastIndex = 1
private var currentDuration = 0
private var enableInfiniteScroll = true
private var enableCustomReport = false
......@@ -89,15 +86,15 @@ class DramaApiDetailActivity : BaseActivity() {
override fun getContentViewLayoutID() = R.layout.drama_activity_api_detail
override fun initViewsAndEvents() {
fm_bottom.setOnClickListener {
showEpisodeDialog()
}
blockView = findViewById<LinearLayout>(R.id.block_view)
blockView?.isClickable = true
unlockBtn = findViewById(R.id.unlock)
leaveBtn = findViewById(R.id.leave)
indexEt = findViewById(R.id.et_drama_index)
goBtn = findViewById(R.id.btn_go)
blockView?.visibility = View.GONE
drama = outerDrama
......@@ -107,7 +104,6 @@ class DramaApiDetailActivity : BaseActivity() {
tv_info.text = String.format("《%s》共%d集", it.title, it.total)
}
currentDuration = intent.getIntExtra(KEY_DRAMA_CURRENT_DURATION, 0)
enableInfiniteScroll =
intent.getBooleanExtra(KEY_DRAMA_INFINITE_SCROLL_ENABLED, true)
enableCustomReport =
......@@ -132,16 +128,10 @@ class DramaApiDetailActivity : BaseActivity() {
}
initWidget()
dpWidget?.let { widget ->
supportFragmentManager.beginTransaction().replace(R.id.fl_container, widget.fragment)
.commit()
goBtn?.setOnClickListener {
val index = indexEt?.editableText.toString().toInt()
widget.currentDramaIndex = index
}
leaveBtn?.setOnClickListener {
finish()
}
......@@ -172,7 +162,7 @@ class DramaApiDetailActivity : BaseActivity() {
)
.id(drama.id)
.index(drama.index)
.currentDuration(currentDuration)
// .currentDuration(currentDuration)
.fromCard(isFromCard, fromGid.toString())
)
}
......@@ -251,6 +241,7 @@ class DramaApiDetailActivity : BaseActivity() {
override fun onDPPageChange(position: Int, map: MutableMap<String, Any>?) {
super.onDPPageChange(position, map)
Log.d(TAG, "onDPPageChange:" + map?.toString())
dialog?.setCurrentIndex(position)
}
override fun onDPVideoPlay(map: MutableMap<String, Any>?) {
......@@ -391,4 +382,30 @@ class DramaApiDetailActivity : BaseActivity() {
}
}
private var dialog: VideoEpisodeDialog? = null
private fun showEpisodeDialog() {
if (dialog != null && !dialog!!.isShowing) {
dialog!!.setCurrentIndex(lastIndex)
dialog!!.show()
} else {
dialog = VideoEpisodeDialog(this, object : DialogListener() {
override fun onClick(dialog: Dialog?, v: View?) {
super.onClick(dialog, v)
dialog?.dismiss()
}
})
dialog!!.setOnEpisodeClickListener(this)
dialog!!.setCurrentIndex(lastIndex)
dialog?.show()
}
}
override fun onEpisodeClick(position: Int) {
dpWidget?.let { widget ->
widget.currentDramaIndex = position + 1
}
dialog?.dismiss()
}
}
\ No newline at end of file
......@@ -13,7 +13,6 @@ import com.bytedance.sdk.dp.IDPDrawListener
import com.bytedance.sdk.dp.IDPWidget
import com.mints.wisdomclean.R
import com.mints.wisdomclean.ui.fragment.base.BaseFragment
import com.mints.wisdomclean.video.DramaApiDetailActivity.Companion.KEY_DRAMA_CURRENT_DURATION
import com.mints.wisdomclean.video.DramaApiDetailActivity.Companion.KEY_DRAMA_UNLOCK_INDEX
/**
......@@ -95,7 +94,6 @@ class DrawDramaFragment : BaseFragment() {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
DramaApiDetailActivity.outerDrama = drama
intent.putExtra(KEY_DRAMA_UNLOCK_INDEX, 100)
intent.putExtra(KEY_DRAMA_CURRENT_DURATION, current)
context.startActivity(intent)
}
.freeSet(FREE_SET)
......
......@@ -255,7 +255,14 @@ class VideoActivity : BaseActivity(), View.OnClickListener {
finish()
}
R.id.fm_bottom -> {
if (dialog != null) {
showEpisodeDialog()
}
else -> {}
}
}
private fun showEpisodeDialog() {
if (dialog != null && !dialog!!.isShowing) {
dialog!!.show()
} else {
dialog = VideoEpisodeDialog(this, object : DialogListener() {
......@@ -267,7 +274,4 @@ class VideoActivity : BaseActivity(), View.OnClickListener {
dialog?.show()
}
}
else -> {}
}
}
}
\ No newline at end of file
......@@ -6,7 +6,51 @@
<FrameLayout
android:id="@+id/fl_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
android:layout_marginBottom="50dp" />
<FrameLayout
android:id="@+id/fm_bottom"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="bottom"
android:background="@color/black">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:layout_gravity="center"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:background="@drawable/shape_half_trans"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="@dimen/dp_10"
android:paddingEnd="@dimen/dp_10">
<ImageView
android:layout_width="26dp"
android:layout_height="26dp"
android:src="@mipmap/ic_call_wx" />
<TextView
android:id="@+id/episode_tv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:text="共100集 已完结 >"
android:textColor="@color/white" />
<ImageView
android:layout_width="26dp"
android:layout_height="26dp"
android:rotation="180"
android:src="@mipmap/ic_arrow_bottom" />
</LinearLayout>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
......@@ -22,33 +66,6 @@
android:textColor="#FFFFFFFF"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="bottom"
android:orientation="horizontal">
<EditText
android:id="@+id/et_drama_index"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="number"
android:text="10"
android:textColor="#f00"
android:textSize="14sp" />
<Button
android:id="@+id/btn_go"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="跳转到指定集数"
android:textSize="13sp" />
</LinearLayout>
</LinearLayout>
......
......@@ -7,6 +7,13 @@
android:layout_marginBottom="@dimen/dp_4"
android:background="@drawable/shape_btn_enabled">
<ImageView
android:id="@+id/item_iv_lock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|top"
android:src="@mipmap/iv_lock" />
<TextView
android:id="@+id/item_tv"
android:layout_width="wrap_content"
......@@ -16,4 +23,11 @@
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:id="@+id/item_iv_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|bottom"
android:src="@mipmap/iv_playing" />
</FrameLayout>
\ 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