From 34cdc7903c5171abd387a14238c9886a5e078e47 Mon Sep 17 00:00:00 2001 From: d-kunin Date: Fri, 9 Aug 2013 00:47:48 +0300 Subject: [PATCH] [and] Pinch to scale for pictures. --- .../travelguide/ArticleInfoDetailFragment.java | 12 ++++++++++++ android/src/com/example/travelguide/util/Utils.java | 11 +++++++++++ .../com/example/travelguide/webkit/TgWebView.java | 5 +++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/android/src/com/example/travelguide/ArticleInfoDetailFragment.java b/android/src/com/example/travelguide/ArticleInfoDetailFragment.java index 8c1ec9e..ae86b04 100644 --- a/android/src/com/example/travelguide/ArticleInfoDetailFragment.java +++ b/android/src/com/example/travelguide/ArticleInfoDetailFragment.java @@ -9,6 +9,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.webkit.WebSettings; +import android.webkit.WebSettings.LayoutAlgorithm; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.TextView; @@ -105,6 +107,16 @@ public class ArticleInfoDetailFragment extends Fragment implements OnClickListen super.onPageFinished(view, url); Utils.fadeOut(getActivity(), mProgressContainer); Utils.fadeIn(getActivity(), mWebView); + + // If picture enable zoom, else disable + final WebSettings ws = mWebView.getSettings(); + + final boolean isPicture = Utils.isPictUrl(url); + ws.setBuiltInZoomControls(isPicture); + ws.setSupportZoom(isPicture); + ws.setLoadWithOverviewMode(isPicture); + ws.setLayoutAlgorithm(isPicture ? LayoutAlgorithm.SINGLE_COLUMN : LayoutAlgorithm.NARROW_COLUMNS); + ws.setUseWideViewPort(isPicture); } @Override diff --git a/android/src/com/example/travelguide/util/Utils.java b/android/src/com/example/travelguide/util/Utils.java index 893611c..6c1f5cd 100644 --- a/android/src/com/example/travelguide/util/Utils.java +++ b/android/src/com/example/travelguide/util/Utils.java @@ -3,6 +3,7 @@ package com.example.travelguide.util; import java.io.File; import android.content.Context; +import android.os.Build; import android.view.View; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; @@ -90,4 +91,14 @@ public class Utils target.startAnimation(anim); } + public static boolean isPictUrl(String url) + { + return url.endsWith(".png") || url.endsWith(".jpg") || url.endsWith(".jpeg") || url.endsWith(".svg"); + } + + public static boolean isApiLevelAbove(int version) + { + return Build.VERSION.SDK_INT > version; + } + } diff --git a/android/src/com/example/travelguide/webkit/TgWebView.java b/android/src/com/example/travelguide/webkit/TgWebView.java index 6d9b39b..838d370 100644 --- a/android/src/com/example/travelguide/webkit/TgWebView.java +++ b/android/src/com/example/travelguide/webkit/TgWebView.java @@ -10,7 +10,7 @@ import android.webkit.WebView; import com.example.travelguide.util.Utils; -@SuppressLint("SetJavaScriptEnabled") +@SuppressLint({ "SetJavaScriptEnabled", "NewApi" }) public class TgWebView extends WebView { @@ -19,7 +19,8 @@ public class TgWebView extends WebView super(context, attrs, defStyle); final WebSettings settings = getSettings(); settings.setJavaScriptEnabled(true); - + if (Utils.isApiLevelAbove(10)) + settings.setDisplayZoomControls(false); } public TgWebView(Context context, AttributeSet attrs)