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) } } }