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

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager.widget.ViewPager
import com.bumptech.glide.Glide
import com.casic.smarttube.R
import com.gyf.immersionbar.ImmersionBar
import com.luck.picture.lib.photoview.PhotoView
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import com.pengxh.kt.lite.utils.PageNavigationManager
import kotlinx.android.synthetic.main.activity_big_image.*
import java.util.*


class BigImageActivity : KotlinBaseActivity() {

    override fun initLayoutView(): Int = R.layout.activity_big_image

    override fun setupTopBarLayout() {
        PageNavigationManager.addActivity(this)
        ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
        ImmersionBar.with(this).statusBarDarkFont(false).init()
    }

    override fun initData() {
        val index = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
        val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY)
        if (urls == null || urls.size == 0) {
            return
        }
        pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
        imagePagerView.adapter = BigImageAdapter(this, urls)
        imagePagerView.currentItem = index
        imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
            override fun onPageScrollStateChanged(state: Int) {

            }

            override fun onPageScrolled(
                position: Int,
                positionOffset: Float,
                positionOffsetPixels: Int
            ) {

            }

            override fun onPageSelected(position: Int) {
                pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
            }
        })
    }

    override fun observeRequestState() {

    }

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

    class BigImageAdapter(private var context: Context, imageList: ArrayList<String>) :
        PagerAdapter() {

        private var images: ArrayList<String> = imageList

        override fun getCount(): Int = images.size

        override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj

        override fun instantiateItem(container: ViewGroup, position: Int): Any {
            val view = LayoutInflater.from(context).inflate(
                R.layout.item_big_picture,
                container,
                false
            )
            val photoView: PhotoView = view.findViewById(R.id.photoView)
            Glide.with(context).load(images[position]).into(photoView)
            photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
            container.addView(view)
            //点击大图取消预览
            photoView.setOnClickListener {
                PageNavigationManager.currentActivity().finish()
            }
            return view
        }

        override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
            container.removeView(obj as View)
        }
    }
}