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