package com.casic.endoscope.view import android.os.Bundle import android.view.View import android.widget.ImageView import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.endoscope.R import com.casic.endoscope.adapter.MediaDirAdapter import com.casic.endoscope.databinding.ActivityAlbumBinding import com.casic.endoscope.utils.FileManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.shuyu.gsyvideoplayer.GSYVideoManager import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.io.File class AlbumActivity : KotlinBaseActivity<ActivityAlbumBinding>() { private val kTag = "AlbumActivity" private val context = this //子文件夹集合 private lateinit var tempSet: HashSet<String> private lateinit var dirBeans: MutableList<String> private lateinit var directoryAdapter: MediaDirAdapter override fun initEvent() { binding.ascButton.setOnClickListener { //按时间排序,降序 dirBeans = tempSet.sortedWith { d1, d2 -> d2.compareTo(d1) }.toMutableList() directoryAdapter.setRefreshData(dirBeans) } binding.decButton.setOnClickListener { //升序 dirBeans = tempSet.sortedWith { d1, d2 -> d1.compareTo(d2) }.toMutableList() directoryAdapter.setRefreshData(dirBeans) } } override fun initOnCreate(savedInstanceState: Bundle?) { val temp = ArrayList<String>() val videoDir = File(FileManager.getRootDirectory(), "Video") videoDir.list()?.forEach { temp.add(it) } val imageDir = File(FileManager.getRootDirectory(), "Picture") imageDir.list()?.forEach { temp.add(it) } //去重 tempSet = HashSet(temp) //排序,降序 dirBeans = tempSet.sortedWith { d1, d2 -> d2.compareTo(d1) }.toMutableList() //绑定数据 directoryAdapter = object : MediaDirAdapter(this, dirBeans) { override fun bindChildVideoRes(child: ViewHolder, childPos: Int, item: File) { val videoPlayer = child.getView<StandardGSYVideoPlayer>(R.id.videoPlayer) videoPlayer.titleTextView.visibility = View.GONE videoPlayer.backButton.visibility = View.GONE lifecycleScope.launch(Dispatchers.Main) { try { val drawable = withContext(Dispatchers.IO) { Glide.with(context).load(item).submit().get() } val coverImg = ImageView(context) coverImg.setImageDrawable(drawable) videoPlayer.thumbImageView = coverImg } catch (e: Exception) { e.printStackTrace() } } videoPlayer.setUp(item.absolutePath, true, "") videoPlayer.fullscreenButton.setOnClickListener { navigatePageTo<FullScreenVideoActivity>(item.absolutePath) } videoPlayer.playTag = System.currentTimeMillis().toString() videoPlayer.playPosition = childPos videoPlayer.isReleaseWhenLossAudio = false videoPlayer.setIsTouchWiget(false) } } val offset = 10.dp2px(this) binding.recyclerView.addItemDecoration( RecyclerViewItemOffsets(offset, offset, offset, offset) ) binding.recyclerView.adapter = directoryAdapter } override fun initViewBinding(): ActivityAlbumBinding { return ActivityAlbumBinding.inflate(layoutInflater) } override fun observeRequestState() { } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = getStatusBarHeight() binding.rootView.setPadding(0, statusBarHeight, 0, 0) binding.rootView.requestLayout() } override fun onPause() { super.onPause() GSYVideoManager.onPause() } override fun onResume() { super.onResume() GSYVideoManager.onResume() } override fun onDestroy() { super.onDestroy() GSYVideoManager.releaseAllVideos() } @Deprecated("Deprecated in Java") override fun onBackPressed() { if (GSYVideoManager.backFromWindowFull(this)) { return } super.onBackPressed() } }