|
|
@@ -0,0 +1,122 @@
|
|
|
+package com.yingyangfly.baselib.image
|
|
|
+
|
|
|
+import android.annotation.SuppressLint
|
|
|
+import android.os.Bundle
|
|
|
+import android.util.Log
|
|
|
+import androidx.fragment.app.Fragment
|
|
|
+import androidx.fragment.app.FragmentActivity
|
|
|
+import androidx.fragment.app.FragmentManager
|
|
|
+import androidx.fragment.app.FragmentStatePagerAdapter
|
|
|
+import androidx.viewpager.widget.ViewPager
|
|
|
+import com.alibaba.android.arouter.facade.annotation.Route
|
|
|
+import com.gyf.immersionbar.BarHide
|
|
|
+import com.gyf.immersionbar.ktx.immersionBar
|
|
|
+import com.yingyangfly.baselib.R
|
|
|
+import com.yingyangfly.baselib.router.RouterUrlCommon
|
|
|
+import kotlinx.android.synthetic.main.activity_image_pager.*
|
|
|
+
|
|
|
+
|
|
|
+@Route(path = RouterUrlCommon.imagePager)
|
|
|
+class ImagePagerActivity : FragmentActivity() {
|
|
|
+
|
|
|
+ private val STATE_POSITION = "STATE_POSITION"
|
|
|
+ private val EXTRA_IMAGE_INDEX = "image_index"
|
|
|
+ private val EXTRA_IMAGE_URLS = "image_urls"
|
|
|
+ private var pagerPosition = 0
|
|
|
+ private var fromType = 0
|
|
|
+
|
|
|
+ override fun onCreate(arg0: Bundle?) {
|
|
|
+ super.onCreate(arg0)
|
|
|
+ immersionBar {
|
|
|
+ hideBar(BarHide.FLAG_HIDE_BAR)
|
|
|
+ navigationBarColor(R.color.transparent)
|
|
|
+ }
|
|
|
+ setContentView(R.layout.activity_image_pager)
|
|
|
+ initData(arg0)
|
|
|
+ setListener()
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onSaveInstanceState(outState: Bundle) {
|
|
|
+ super.onSaveInstanceState(outState)
|
|
|
+ outState.putInt(STATE_POSITION, vPager.currentItem)
|
|
|
+ }
|
|
|
+
|
|
|
+ var pageSize = 0
|
|
|
+
|
|
|
+ @SuppressLint("SetTextI18n")
|
|
|
+ private fun initData(arg0: Bundle?) {
|
|
|
+ pagerPosition = intent.getIntExtra(EXTRA_IMAGE_INDEX, 0)
|
|
|
+ val urls = intent.getStringArrayListExtra(EXTRA_IMAGE_URLS)
|
|
|
+ if(urls.isNullOrEmpty()){
|
|
|
+ Log.e("wpp", "1----------------------")
|
|
|
+ } else {
|
|
|
+ Log.e("wpp", "2----------------------")
|
|
|
+ }
|
|
|
+ pageSize = urls!!.size
|
|
|
+ val us = ArrayList<String>()
|
|
|
+ if (urls.size <= 3) {
|
|
|
+ val size: Int = urls.size * 10
|
|
|
+ for (i in 0 until size) {
|
|
|
+ us.add(urls[i % urls.size])
|
|
|
+ }
|
|
|
+ urls.clear()
|
|
|
+ urls.addAll(us)
|
|
|
+ }
|
|
|
+ val mAdapter = ImagePagerAdapter(supportFragmentManager, urls, fromType)
|
|
|
+ vPager.adapter = mAdapter
|
|
|
+ vPager.setOnPageChangeListener(object : ViewPager.OnPageChangeListener {
|
|
|
+ override fun onPageScrollStateChanged(state: Int) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onPageScrolled(
|
|
|
+ position: Int,
|
|
|
+ positionOffset: Float,
|
|
|
+ positionOffsetPixels: Int
|
|
|
+ ) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onPageSelected(position: Int) {
|
|
|
+ pagerPosition = position
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if (arg0 != null) {
|
|
|
+ pagerPosition = arg0.getInt(STATE_POSITION)
|
|
|
+ }
|
|
|
+ vPager.currentItem = pagerPosition
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun setListener() {
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private class ImagePagerAdapter(
|
|
|
+ fm: FragmentManager?,
|
|
|
+ var fileList: ArrayList<String>?,
|
|
|
+ var type: Int
|
|
|
+ ) : FragmentStatePagerAdapter(fm!!) {
|
|
|
+ override fun getCount(): Int {
|
|
|
+ if (fileList == null) {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+
|
|
|
+ return if (fileList!!.size <= 3) {
|
|
|
+ fileList!!.size
|
|
|
+ } else {
|
|
|
+ Int.MAX_VALUE
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun getItem(position: Int): Fragment {
|
|
|
+ val url = if (fileList!!.size <= 3) {
|
|
|
+ fileList!![position]
|
|
|
+ } else {
|
|
|
+ fileList!![position % fileList!!.size]
|
|
|
+ }
|
|
|
+ return ImageDetailFragment.newInstance(url, type)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|