From 1d2e7b310e68be2fdbd63127f4f6dba3cd1be4f1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 24 Jul 2016 22:53:32 +0200 Subject: [PATCH] use the subsampling-scale-image-view for zoomable photos --- app/build.gradle | 2 +- .../gallery/fragments/PhotoFragment.java | 42 +++++++------------ app/src/main/res/layout/pager_photo_item.xml | 20 +++++++-- 3 files changed, 34 insertions(+), 30 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 61358e969..b8faa4951 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,7 @@ dependencies { compile 'com.android.support:design:23.4.0' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.jakewharton:butterknife:8.0.1' - compile 'com.github.chrisbanes:PhotoView:1.2.6' + compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.5.0' apt 'com.jakewharton:butterknife-compiler:8.0.1' } diff --git a/app/src/main/java/com/simplemobiletools/gallery/fragments/PhotoFragment.java b/app/src/main/java/com/simplemobiletools/gallery/fragments/PhotoFragment.java index 132b45d82..2f98c7f05 100644 --- a/app/src/main/java/com/simplemobiletools/gallery/fragments/PhotoFragment.java +++ b/app/src/main/java/com/simplemobiletools/gallery/fragments/PhotoFragment.java @@ -1,22 +1,20 @@ package com.simplemobiletools.gallery.fragments; -import android.animation.ObjectAnimator; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.request.animation.ViewPropertyAnimation; +import com.davemorrissey.labs.subscaleview.ImageSource; +import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import com.simplemobiletools.gallery.Constants; import com.simplemobiletools.gallery.R; import com.simplemobiletools.gallery.models.Medium; -import uk.co.senab.photoview.PhotoView; -import uk.co.senab.photoview.PhotoViewAttacher; - -public class PhotoFragment extends ViewPagerFragment implements PhotoViewAttacher.OnPhotoTapListener { +public class PhotoFragment extends ViewPagerFragment implements View.OnClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -26,27 +24,24 @@ public class PhotoFragment extends ViewPagerFragment implements PhotoViewAttache if (medium == null) return view; - final PhotoView photoView = (PhotoView) view.findViewById(R.id.photo_view); + final SubsamplingScaleImageView subsamplingView = (SubsamplingScaleImageView) view.findViewById(R.id.photo_view); if (medium.isGif()) { - Glide.with(getContext()).load(medium.getPath()).asGif().diskCacheStrategy(DiskCacheStrategy.NONE).into(photoView); + subsamplingView.setVisibility(View.GONE); + final ImageView imageView = (ImageView) view.findViewById(R.id.gif_view); + imageView.setVisibility(View.VISIBLE); + Glide.with(getContext()).load(medium.getPath()).asGif().diskCacheStrategy(DiskCacheStrategy.NONE).into(imageView); + imageView.setOnClickListener(this); } else { - Glide.with(getContext()).load(medium.getPath()).asBitmap().thumbnail(0.2f).animate(fadeInAnimator).into(photoView); + subsamplingView.setOrientation(SubsamplingScaleImageView.ORIENTATION_USE_EXIF); + subsamplingView.setImage(ImageSource.uri(medium.getPath())); + subsamplingView.setMaxScale(4f); + subsamplingView.setMinimumTileDpi(200); + subsamplingView.setOnClickListener(this); } - new PhotoViewAttacher(photoView).setOnPhotoTapListener(this); return view; } - ViewPropertyAnimation.Animator fadeInAnimator = new ViewPropertyAnimation.Animator() { - @Override - public void animate(View view) { - view.setAlpha(0f); - ObjectAnimator fadeAnim = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); - fadeAnim.setDuration(250); - fadeAnim.start(); - } - }; - @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); @@ -63,12 +58,7 @@ public class PhotoFragment extends ViewPagerFragment implements PhotoViewAttache } @Override - public void onPhotoTap(View view, float v, float v1) { - photoClicked(); - } - - @Override - public void onOutsidePhotoTap() { + public void onClick(View v) { photoClicked(); } diff --git a/app/src/main/res/layout/pager_photo_item.xml b/app/src/main/res/layout/pager_photo_item.xml index 02d37b84f..9810a621f 100644 --- a/app/src/main/res/layout/pager_photo_item.xml +++ b/app/src/main/res/layout/pager_photo_item.xml @@ -1,6 +1,20 @@ - + android:layout_height="match_parent"> + + + + + +