diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/FullscreenImageView.java b/app/src/main/java/de/apps4ics/mountainnavigation/FullscreenImageView.java
new file mode 100644
index 0000000..32c8152
--- /dev/null
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/FullscreenImageView.java
@@ -0,0 +1,83 @@
+/**
+ * This file is part of MountainNavigation.
+ *
+ * MountainNavigation 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.
+ *
+ * MountainNavigation 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 MountainNavigation. If not, see .
+ *
+ * @copyright Copyright (c) 2016 Vinzenz Rosenkanz
+ *
+ * @author Vinzenz Rosenkranz
+ */
+
+package de.apps4ics.mountainnavigation;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Matrix;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.ScaleGestureDetector;
+import android.view.View;
+import android.widget.ImageView;
+
+public class FullscreenImageView {
+ private Matrix matrix;
+ private float scalingFactor = 1f;
+ private final static float MAX_SCALING = 5f;
+ private final static float MIN_SCALING = 0.1f;
+ private ScaleGestureDetector scaleGestureDetector;
+ private ImageView imageView;
+ final AlertDialog imageDisplay;
+
+ public FullscreenImageView(Context context, byte[] b) {
+ matrix = new Matrix();
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ View layout = inflater.inflate(R.layout.fullscreen_image, null, false);
+ imageView = (ImageView) layout.findViewById(R.id.fullscreenImageView);
+ imageView.setImageDrawable(MainActivity.convertByteArrayToDrawable(b));
+ imageDisplay = new AlertDialog.Builder(context)
+ .setView(layout)
+ .setPositiveButton("Close", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ })
+ .create();
+ scaleGestureDetector = new ScaleGestureDetector(context, new ImageScaleListener());
+ imageView.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ scaleGestureDetector.onTouchEvent(event);
+ return true;
+ }
+ });
+ //imageDisplay.show();
+ }
+
+ public void show() {
+ imageDisplay.show();
+ }
+
+ private class ImageScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
+ @Override
+ public boolean onScale(ScaleGestureDetector detector) {
+ scalingFactor *= detector.getScaleFactor();
+ scalingFactor = Math.max(MIN_SCALING, Math.min(scalingFactor, MAX_SCALING));
+ matrix.setScale(scalingFactor, scalingFactor);
+ imageView.setImageMatrix(matrix);
+ return true;
+ }
+ }
+}
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java
index 1173e5e..83d638e 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java
@@ -22,9 +22,6 @@
package de.apps4ics.mountainnavigation.adapters;
import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -34,6 +31,7 @@
import java.util.List;
+import de.apps4ics.mountainnavigation.FullscreenImageView;
import de.apps4ics.mountainnavigation.MainActivity;
import de.apps4ics.mountainnavigation.R;
import de.apps4ics.mountainnavigation.pois.Endangered;
@@ -65,20 +63,7 @@
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- LayoutInflater inflater1 = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View layout = inflater1.inflate(R.layout.fullscreen_image, null, false);
- ImageView iv = (ImageView) layout.findViewById(R.id.fullscreenImageView);
- iv.setImageDrawable(MainActivity.convertByteArrayToDrawable(items.get(position).getImage(), layout.getWidth()));
- final AlertDialog imageDisplay = new AlertDialog.Builder(context)
- .setView(layout)
- .setPositiveButton("Back", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- })
- .create();
- imageDisplay.show();
+ new FullscreenImageView(context, items.get(position).getImage()).show();
}
});
diff --git a/app/src/main/res/layout/fullscreen_image.xml b/app/src/main/res/layout/fullscreen_image.xml
index a75f828..d6a57f3 100644
--- a/app/src/main/res/layout/fullscreen_image.xml
+++ b/app/src/main/res/layout/fullscreen_image.xml
@@ -26,6 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:id="@+id/fullscreenImageView"
+ android:scaleType="matrix"
android:layout_gravity="center"
android:padding="12dp"/>