Newer
Older
CasicSmartTube / app / src / main / java / com / casic / smarttube / view / BigImageActivity.kt
package com.casic.smarttube.view

import android.os.Bundle
import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant

class BigImageActivity : KotlinBaseActivity<ActivityBigImageBinding>() {
    override fun initViewBinding(): ActivityBigImageBinding {
        return ActivityBigImageBinding.inflate(layoutInflater)
    }

    override fun setupTopBarLayout() {
        ImmersionBar.with(this).statusBarDarkFont(false).init()
    }

    override fun initOnCreate(savedInstanceState: Bundle?) {
        ActivityStackManager.addActivity(this)
        val index = intent.getIntExtra(LiteKitConstant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
        val urls = intent.getStringArrayListExtra(LiteKitConstant.BIG_IMAGE_INTENT_DATA_KEY)
        if (urls == null || urls.size == 0) {
            return
        }
        val imageSize = urls.size
        binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
        val adapter = object : NormalRecyclerAdapter<String>(R.layout.item_big_image, urls) {
            override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
                viewHolder.setImageResource(R.id.photoView, item)
            }
        }
        binding.viewPager.adapter = adapter
        binding.viewPager.currentItem = index
        adapter.setOnItemClickedListener(object :
            NormalRecyclerAdapter.OnItemClickedListener<String> {
            override fun onItemClicked(position: Int, item: String) {
                finish()
            }
        })

        binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
            }
        })
    }

    override fun observeRequestState() {

    }

    override fun initEvent() {
        binding.leftBackView.setOnClickListener { finish() }
    }
}