package com.casic.endoscope.view
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager.widget.ViewPager
import com.bumptech.glide.Glide
import com.casic.endoscope.R
import com.casic.endoscope.databinding.ActivityBigImageBinding
import com.casic.endoscope.extensions.initImmersionBar
import com.luck.picture.lib.photoview.PhotoView
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.Constant
class BigImageActivity : KotlinBaseActivity<ActivityBigImageBinding>() {
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
binding.rootView.initImmersionBar(this, false, R.color.black)
binding.leftBackView.setOnClickListener { finish() }
}
override fun initOnCreate(savedInstanceState: Bundle?) {
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
}
val imageSize = urls.size
binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")")
binding.imagePagerView.adapter = BigImageAdapter(this, urls)
binding.imagePagerView.currentItem = index
binding.imagePagerView.offscreenPageLimit = imageSize
binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(
position: Int, positionOffset: Float, positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
binding.pageNumberView.text =
String.format("(" + (position + 1) + "/" + imageSize + ")")
}
override fun onPageScrollStateChanged(state: Int) {}
})
}
override fun observeRequestState() {
}
override fun initEvent() {
}
inner class BigImageAdapter(
private val context: Context, private val data: ArrayList<String>
) : PagerAdapter() {
override fun getCount(): Int = data.size
override fun isViewFromObject(view: View, any: Any): Boolean {
return view == any
}
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(data[position]).into(photoView)
photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
container.addView(view)
//点击大图取消预览
photoView.setOnClickListener { finish() }
return view
}
override fun destroyItem(container: ViewGroup, position: Int, any: Any) {
container.removeView(any as View)
}
}
}