Zoom for images

main
Eugen Rochko 8 years ago
parent 3cb1b8e44b
commit c9b2092cf9
  1. 1
      app/build.gradle
  2. 2
      app/src/main/java/com/keylesspalace/tusky/SFragment.java
  3. 58
      app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java
  4. 36
      app/src/main/java/com/keylesspalace/tusky/ViewMediaFragment.java
  5. 20
      app/src/main/res/anim/zoom_in.xml
  6. 20
      app/src/main/res/anim/zoom_out.xml
  7. 8
      app/src/main/res/layout/fragment_view_media.xml

@ -40,4 +40,5 @@ dependencies {
compile('com.mikepenz:materialdrawer:5.8.2@aar') {
transitive = true
}
compile 'com.github.chrisbanes:PhotoView:1.3.1'
}

@ -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);

@ -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
* <http://www.gnu.org/licenses/>. */
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();
}
}

@ -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);
final PhotoViewAttacher attacher = new PhotoViewAttacher(photoView);
rootView.setOnClickListener(new View.OnClickListener() {
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;
}

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/linear_interpolator"
android:fromXScale=".1"
android:toXScale="1"
android:fromYScale=".1"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:duration="200"
android:fillAfter="true">
</scale>
<alpha
android:interpolator="@android:anim/linear_interpolator"
android:fromAlpha="0"
android:toAlpha="1"
android:duration="300" />
</set>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/linear_interpolator"
android:fromXScale="1"
android:toXScale=".1"
android:fromYScale="1"
android:toYScale=".1"
android:pivotX="50%"
android:pivotY="50%"
android:duration="200"
android:fillAfter="true">
</scale>
<alpha
android:interpolator="@android:anim/linear_interpolator"
android:fromAlpha="1"
android:toAlpha="0"
android:duration="300" />
</set>

@ -3,12 +3,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#60000000">
<com.android.volley.toolbox.NetworkImageView
<uk.co.senab.photoview.PhotoView
android:id="@+id/view_media_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:scaleType="fitCenter" />
android:layout_height="match_parent" />
</RelativeLayout>
Loading…
Cancel
Save