package com.casic.smarttube.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.smarttube.R import com.casic.smarttube.databinding.ActivityBigImageBinding import com.casic.smarttube.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView 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() { ActivityStackManager.addActivity(this) binding.rootView.initImmersionBar(this, true, R.color.black) } override fun initOnCreate(savedInstanceState: Bundle?) { 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 } binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")") binding.imagePagerView.adapter = BigImageAdapter(this, urls) binding.imagePagerView.currentItem = index binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { binding.pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")") } }) } override fun observeRequestState() { } override fun initEvent() { binding.leftBackView.setOnClickListener { this.finish() } } inner 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 { finish() } return view } override fun destroyItem(container: ViewGroup, position: Int, obj: Any) { container.removeView(obj as View) } } }