diff --git a/README.md b/README.md index 0b0faf4..ede63cf 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ ![](https://thedroid.io/assets/img/tb-image-preview.png) ![API](https://img.shields.io/badge/API-16%2B-34bf49.svg) -[ ![Download](https://api.bintray.com/packages/greentoad/android-image-preview/com.greentoad.turtlebody.imagepreview/images/download.svg?version=latest) ](https://bintray.com/greentoad/android-image-preview/com.greentoad.turtlebody.imagepreview/latest/link) ### Demo: -![](https://media.giphy.com/media/SXxdWquu9zlLiHIuc2/giphy.gif) +![Screenshot_1629961047](https://user-images.githubusercontent.com/9129812/130916268-004b5d8e-17ec-42aa-824c-b718d333b5e4.png) + [Get it on Google Play1) { - preview_fragment_bottom_ll.visibility = View.GONE + preview_fragment_parent_fl?.let { + mUiVisibilityFlag = preview_fragment_parent_fl.systemUiVisibility + preview_fragment_parent_fl.systemUiVisibility = + View.SYSTEM_UI_FLAG_FULLSCREEN or + //View.SYSTEM_UI_FLAG_LAYOUT_STABLE or //to get stable view this mUiVisibilityFlag sometime add views which disrupt our original views + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + + preview_fragment_app_bar.setPadding(0, 0, 0, 0) + preview_fragment_bottom_ll.setPadding(0, 0, 0, 0) + + preview_fragment_activity_toolbar.visibility = View.GONE + + if (mPreviewConfig.mUriList.size > 1) { + preview_fragment_bottom_ll.visibility = View.GONE + } } } @@ -373,6 +375,7 @@ class ImagePreview { try { hide() }catch (e:IllegalStateException){ + }catch (e:NullPointerException){ } false } else { diff --git a/imagepreview/src/main/java/com/greentoad/turtlebody/imagepreview/ui/components/ImageFragmentViewer.kt b/imagepreview/src/main/java/com/greentoad/turtlebody/imagepreview/ui/components/ImageFragmentViewer.kt index af5313b..aee4793 100644 --- a/imagepreview/src/main/java/com/greentoad/turtlebody/imagepreview/ui/components/ImageFragmentViewer.kt +++ b/imagepreview/src/main/java/com/greentoad/turtlebody/imagepreview/ui/components/ImageFragmentViewer.kt @@ -1,12 +1,18 @@ package com.greentoad.turtlebody.imagepreview.ui.components +import android.graphics.Bitmap +import android.graphics.drawable.Drawable import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.request.target.CustomTarget +import com.bumptech.glide.request.transition.Transition import com.davemorrissey.labs.subscaleview.ImageSource import com.greentoad.turtlebody.imagepreview.R import com.greentoad.turtlebody.imagepreview.ui.components.ViewPagerAdapter.Companion.B_ARG_URI @@ -14,7 +20,7 @@ import kotlinx.android.synthetic.main.tb_image_preview_view_pager.* import org.jetbrains.anko.AnkoLogger -class ImageFragmentViewer: Fragment(),AnkoLogger { +class ImageFragmentViewer : Fragment(), AnkoLogger { private lateinit var mUri: Uri @@ -22,7 +28,7 @@ class ImageFragmentViewer: Fragment(),AnkoLogger { @JvmStatic fun newInstance(key: Int, b: Bundle?): ImageFragmentViewer { val bf: Bundle = b ?: Bundle() - bf.putInt("fragment.key", key); + bf.putInt("fragment.key", key) val fragment = ImageFragmentViewer() fragment.arguments = bf return fragment @@ -31,13 +37,15 @@ class ImageFragmentViewer: Fragment(),AnkoLogger { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val b = arguments!! - mUri = Uri.parse(b.getString(B_ARG_URI,"")) + val b = requireArguments() + mUri = Uri.parse(b.getString(B_ARG_URI, "")) } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { // Inflate the layout for this fragment return inflater.inflate(R.layout.tb_image_preview_view_pager, container, false) } @@ -45,7 +53,15 @@ class ImageFragmentViewer: Fragment(),AnkoLogger { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - view_pager_iv.setImage(ImageSource.uri(mUri)) + Glide.with(this).asBitmap().load(mUri).diskCacheStrategy(DiskCacheStrategy.ALL) + .into(object : + CustomTarget() { + override fun onResourceReady(resource: Bitmap, transition: Transition?) { + view_pager_iv.setImage(ImageSource.bitmap(resource)) + } + + override fun onLoadCleared(placeholder: Drawable?) {} + }) view_pager_iv.setOnClickListener { mOnImageClickListener?.onImageClick() } @@ -53,11 +69,11 @@ class ImageFragmentViewer: Fragment(),AnkoLogger { private var mOnImageClickListener: OnImageClickListener? = null - fun setListener(listener: OnImageClickListener){ + fun setListener(listener: OnImageClickListener) { mOnImageClickListener = listener } - interface OnImageClickListener{ + interface OnImageClickListener { fun onImageClick() } diff --git a/imagepreview/src/main/res/values/colors.xml b/imagepreview/src/main/res/values/colors.xml index fc71ba2..97e4b3f 100644 --- a/imagepreview/src/main/res/values/colors.xml +++ b/imagepreview/src/main/res/values/colors.xml @@ -2,6 +2,9 @@ + #FFFFFF + #707070 + #2AE2FF #000000 #707070 diff --git a/local.properties b/local.properties new file mode 100644 index 0000000..a5e7ec5 --- /dev/null +++ b/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Mon May 31 16:59:15 CEST 2021 +sdk.dir=/Users/oli/Library/Android/sdk