From c9b2092cf938b0e784d507b7ad91a09ee1cb81a6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Mar 2017 21:21:55 +0100 Subject: [PATCH] Zoom for images --- app/build.gradle | 1 + .../com/keylesspalace/tusky/SFragment.java | 2 + .../keylesspalace/tusky/ViewGifFragment.java | 58 ------------------- .../tusky/ViewMediaFragment.java | 36 +++++++++--- app/src/main/res/anim/zoom_in.xml | 20 +++++++ app/src/main/res/anim/zoom_out.xml | 20 +++++++ .../main/res/layout/fragment_view_media.xml | 8 +-- 7 files changed, 74 insertions(+), 71 deletions(-) delete mode 100644 app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java create mode 100644 app/src/main/res/anim/zoom_in.xml create mode 100644 app/src/main/res/anim/zoom_out.xml diff --git a/app/build.gradle b/app/build.gradle index 161bee867..cad0b874a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,4 +40,5 @@ dependencies { compile('com.mikepenz:materialdrawer:5.8.2@aar') { transitive = true } + compile 'com.github.chrisbanes:PhotoView:1.3.1' } diff --git a/app/src/main/java/com/keylesspalace/tusky/SFragment.java b/app/src/main/java/com/keylesspalace/tusky/SFragment.java index 15ac75061..6b7845f5d 100644 --- a/app/src/main/java/com/keylesspalace/tusky/SFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/SFragment.java @@ -252,11 +252,13 @@ public class SFragment extends Fragment { FragmentManager manager = getFragmentManager(); manager.beginTransaction() + .setCustomAnimations(R.anim.zoom_in, R.anim.zoom_out, R.anim.zoom_in, R.anim.zoom_out) .add(R.id.overlay_fragment_container, newFragment) .addToBackStack(null) .commit(); break; } + case GIFV: case VIDEO: { Intent intent = new Intent(getContext(), ViewVideoActivity.class); intent.putExtra("url", url); diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java b/app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java deleted file mode 100644 index b75ca3969..000000000 --- a/app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2017 Andrew Dawson - * - * This file is part of Tusky. - * - * Tusky is free software: you can redistribute it and/or modify it under the terms of the GNU - * General Public License as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even - * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General - * Public License for more details. - * - * You should have received a copy of the GNU General Public License along with Tusky. If not, see - * . */ - -package com.keylesspalace.tusky; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.WebView; - -public class ViewGifFragment extends Fragment { - public static ViewGifFragment newInstance(String url) { - Bundle arguments = new Bundle(); - ViewGifFragment fragment = new ViewGifFragment(); - arguments.putString("url", url); - fragment.setArguments(arguments); - return fragment; - } - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_view_gif, container, false); - - String url = getArguments().getString("url"); - WebView gifView = (WebView) rootView.findViewById(R.id.gif_view); - gifView.loadUrl(url); - - rootView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - dismiss(); - } - }); - - return rootView; - } - - private void dismiss() { - getFragmentManager().popBackStack(); - } -} diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewMediaFragment.java b/app/src/main/java/com/keylesspalace/tusky/ViewMediaFragment.java index aeb78f6ff..ffb74241c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ViewMediaFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/ViewMediaFragment.java @@ -21,8 +21,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.android.volley.toolbox.ImageLoader; -import com.android.volley.toolbox.NetworkImageView; +import com.squareup.picasso.Callback; +import com.squareup.picasso.Picasso; + +import uk.co.senab.photoview.PhotoView; +import uk.co.senab.photoview.PhotoViewAttacher; public class ViewMediaFragment extends Fragment { public static ViewMediaFragment newInstance(String url) { @@ -40,17 +43,36 @@ public class ViewMediaFragment extends Fragment { Bundle arguments = getArguments(); String url = arguments.getString("url"); - NetworkImageView image = (NetworkImageView) rootView.findViewById(R.id.view_media_image); - ImageLoader imageLoader = VolleySingleton.getInstance(getContext()).getImageLoader(); - image.setImageUrl(url, imageLoader); + PhotoView photoView = (PhotoView) rootView.findViewById(R.id.view_media_image); - rootView.setOnClickListener(new View.OnClickListener() { + final PhotoViewAttacher attacher = new PhotoViewAttacher(photoView); + + attacher.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() { @Override - public void onClick(View v) { + public void onPhotoTap(View view, float x, float y) { + + } + + @Override + public void onOutsidePhotoTap() { dismiss(); } }); + Picasso.with(getContext()) + .load(url) + .into(photoView, new Callback() { + @Override + public void onSuccess() { + attacher.update(); + } + + @Override + public void onError() { + + } + }); + return rootView; } diff --git a/app/src/main/res/anim/zoom_in.xml b/app/src/main/res/anim/zoom_in.xml new file mode 100644 index 000000000..e607a315b --- /dev/null +++ b/app/src/main/res/anim/zoom_in.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/zoom_out.xml b/app/src/main/res/anim/zoom_out.xml new file mode 100644 index 000000000..ab81c6797 --- /dev/null +++ b/app/src/main/res/anim/zoom_out.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_view_media.xml b/app/src/main/res/layout/fragment_view_media.xml index 50de8b593..1126dbe02 100644 --- a/app/src/main/res/layout/fragment_view_media.xml +++ b/app/src/main/res/layout/fragment_view_media.xml @@ -3,12 +3,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="#60000000"> - - - + android:layout_height="match_parent" /> \ No newline at end of file