Parcourir la source

1.添加查看大图功能

王鹏鹏 il y a 2 ans
Parent
commit
d51295af20

+ 1 - 0
.idea/misc.xml

@@ -25,6 +25,7 @@
         <entry key="..\:/workspace/hcp-pad/baselib/src/main/res/layout/dialog_tips.xml" value="0.6" />
         <entry key="..\:/workspace/hcp-pad/baselib/src/main/res/layout/fragment_base.xml" value="0.1" />
         <entry key="..\:/workspace/hcp-pad/baselib/src/main/res/layout/fragment_dialog_base.xml" value="0.152" />
+        <entry key="..\:/workspace/hcp-pad/baselib/src/main/res/layout/fragment_image_detail.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/baselib/src/main/res/layout/fragment_task.xml" value="0.264" />
         <entry key="..\:/workspace/hcp-pad/baselib/src/main/res/layout/layout_center_toast.xml" value="0.1" />
         <entry key="..\:/workspace/hcp-pad/baselib/src/main/res/layout/rv_empty.xml" value="0.1" />

+ 6 - 0
baselib/src/main/AndroidManifest.xml

@@ -20,6 +20,12 @@
             android:exported="true"
             android:screenOrientation="landscape" />
 
+        <activity
+            android:name=".image.ImagePagerActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:screenOrientation="landscape"
+            android:windowSoftInputMode="adjustResize|adjustPan" />
+
     </application>
 
 </manifest>

+ 68 - 0
baselib/src/main/java/com/yingyangfly/baselib/image/ImageDetailFragment.kt

@@ -0,0 +1,68 @@
+package com.yingyangfly.baselib.image
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.fragment.app.Fragment
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.engine.DiskCacheStrategy
+import com.yingyangfly.baselib.R
+
+/**
+ * @author edz
+ */
+class ImageDetailFragment : Fragment() {
+
+    private var mImageUrl: String? = null
+    private var mImageView: AppCompatImageView? = null
+    private var fromType = 0 //默认为0 1:表示上传图片未知过来
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        mImageUrl = if (arguments != null) requireArguments().getString("url") else null
+        fromType = if (arguments != null) requireArguments().getInt("fromType") else 0
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        val v = inflater.inflate(R.layout.fragment_image_detail, container, false)
+        mImageView = v.findViewById(R.id.image)
+        mImageView?.setOnClickListener {
+            activity?.finish()
+        }
+        return v
+    }
+
+    override fun onActivityCreated(savedInstanceState: Bundle?) {
+        super.onActivityCreated(savedInstanceState)
+        Glide.with(requireActivity()).load(mImageUrl).placeholder(R.mipmap.icon_place_holder)
+            .error(R.mipmap.icon_place_holder)
+            .diskCacheStrategy(DiskCacheStrategy.ALL)
+            .into(mImageView!!)
+    }
+
+    companion object {
+        fun newInstance(imageUrl: String?): ImageDetailFragment {
+            val f = ImageDetailFragment()
+            val args = Bundle()
+            args.putString("url", imageUrl)
+            f.arguments = args
+            return f
+        }
+
+        fun newInstance(imageUrl: String?, type: Int): ImageDetailFragment {
+            val f = ImageDetailFragment()
+            val args = Bundle()
+            args.putString("url", imageUrl)
+            args.putInt("fromType", type)
+            f.arguments = args
+            return f
+        }
+    }
+
+}

+ 122 - 0
baselib/src/main/java/com/yingyangfly/baselib/image/ImagePagerActivity.kt

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

+ 5 - 0
baselib/src/main/java/com/yingyangfly/baselib/router/RouterUrlCommon.kt

@@ -180,4 +180,9 @@ object RouterUrlCommon {
      */
     const val searchDoctor = "/search/doctor"
 
+    /**
+     * 查看大图
+     */
+    const val imagePager = "/image/pagery"
+
 }

+ 39 - 0
baselib/src/main/java/com/yingyangfly/baselib/widget/HackyViewPager.java

@@ -0,0 +1,39 @@
+package com.yingyangfly.baselib.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+
+import androidx.viewpager.widget.ViewPager;
+
+/**
+ * @author edz
+ */
+public class HackyViewPager extends ViewPager {
+
+    private static final String TAG = "HackyViewPager";
+
+    public HackyViewPager(Context context) {
+        super(context);
+    }
+
+    public HackyViewPager(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        try {
+            return super.onInterceptTouchEvent(ev);
+        } catch (IllegalArgumentException e) {
+            // 不理会
+            Log.e(TAG, "hacky viewpager error1");
+            return false;
+        } catch (ArrayIndexOutOfBoundsException e) {
+            // 不理会
+            Log.e(TAG, "hacky viewpager error2");
+            return false;
+        }
+    }
+}

+ 13 - 0
baselib/src/main/res/layout/activity_image_pager.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/color_000000"
+    android:orientation="vertical">
+
+    <com.yingyangfly.baselib.widget.HackyViewPager
+        android:id="@+id/vPager"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</LinearLayout>

+ 13 - 0
baselib/src/main/res/layout/fragment_image_detail.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/color_000000"
+    android:orientation="vertical">
+
+    <androidx.appcompat.widget.AppCompatImageView
+        android:id="@+id/image"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</FrameLayout>

+ 7 - 0
healthconsultation/src/main/java/com/yingyang/healthconsultation/adapter/ConsultationDataAdapter.kt

@@ -3,18 +3,25 @@ package com.yingyang.healthconsultation.adapter
 import com.yingyang.healthconsultation.R
 import com.yingyang.healthconsultation.databinding.ItemConsultationDataBinding
 import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
+import com.yingyangfly.baselib.ext.setOnSingleClickListener
 
 /**
  * 问诊资料详情adapter
  */
 class ConsultationDataAdapter(override val layoutId: Int = R.layout.item_consultation_data) :
     BaseDataBindingAdapter<String, ItemConsultationDataBinding>() {
+
+    var onClickListener: ((position: Int) -> Unit)? = null
+
     override fun onBindViewHolder(
         binding: ItemConsultationDataBinding,
         item: String,
         position: Int
     ) {
         binding.data = item
+        binding.imageLayout.setOnSingleClickListener {
+            onClickListener?.invoke(position)
+        }
     }
 
 }

+ 15 - 1
healthconsultation/src/main/java/com/yingyang/healthconsultation/paid/PaidActivity.kt

@@ -1,6 +1,7 @@
 package com.yingyang.healthconsultation.paid
 
 import android.annotation.SuppressLint
+import android.content.Intent
 import android.os.Bundle
 import android.text.TextUtils
 import android.view.MotionEvent
@@ -21,7 +22,11 @@ import com.yingyang.healthconsultation.entity.PurchaseConsultationBean
 import com.yingyangfly.baselib.config.AccountConfig
 import com.yingyangfly.baselib.db.DoctorBean
 import com.yingyangfly.baselib.dialog.TipsDialog
-import com.yingyangfly.baselib.ext.*
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
+import com.yingyangfly.baselib.ext.show
+import com.yingyangfly.baselib.ext.toast
+import com.yingyangfly.baselib.image.ImagePagerActivity
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.baselib.utils.JumpUtil
@@ -57,6 +62,15 @@ class PaidActivity : BaseMVVMActivity<ActivityPaidBinding, PaidViewModel>(),
             rvUploadData.layoutManager = GridLayoutManager(mContext, 9)
             rvUploadData.adapter = adapter
             adapter.setData(imageList)
+            adapter.onClickListener = {
+                val intent = Intent(mContext, ImagePagerActivity::class.java)
+                intent.putStringArrayListExtra(
+                    "image_urls",
+                    imageList as ArrayList<String>?
+                )
+                intent.putExtra("image_index", it)
+                startActivity(intent)
+            }
         }
     }
 

+ 1 - 0
healthconsultation/src/main/res/layout/item_consultation_data.xml

@@ -12,6 +12,7 @@
     </data>
 
     <LinearLayout
+        android:id="@+id/imageLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:gravity="center">