diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java
index d2a7e46892..1c73a60dc6 100644
--- a/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java
+++ b/android/app/src/main/java/io/highfidelity/hifiinterface/InterfaceActivity.java
@@ -278,6 +278,7 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW
WebViewFragment webViewFragment = (WebViewFragment) getFragmentManager().findFragmentByTag("webViewFragment");
webViewFragment.loadUrl((String) args.get(WebViewActivity.WEB_VIEW_ACTIVITY_EXTRA_URL));
webViewFragment.setToolbarVisible(true);
+ webViewFragment.setCloseAction(() -> { webSlidingDrawer.animateClose(); webSlidingDrawer.setVisibility(View.GONE);} );
}
});
break;
diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/WebViewActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/WebViewActivity.java
index 1d21b409fc..f4bb981c86 100644
--- a/android/app/src/main/java/io/highfidelity/hifiinterface/WebViewActivity.java
+++ b/android/app/src/main/java/io/highfidelity/hifiinterface/WebViewActivity.java
@@ -59,7 +59,6 @@ public class WebViewActivity extends Activity implements WebViewFragment.OnWebVi
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, fragment, FRAGMENT_TAG);
- ft.addToBackStack(null);
ft.commit();
}
diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/WebViewFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/WebViewFragment.java
index fec5eb324a..9b48ce609d 100644
--- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/WebViewFragment.java
+++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/WebViewFragment.java
@@ -6,8 +6,10 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.net.http.SslError;
import android.os.Bundle;
+import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.SslErrorHandler;
@@ -24,18 +26,20 @@ import android.widget.Toast;
import io.highfidelity.hifiinterface.R;
import io.highfidelity.hifiinterface.WebViewActivity;
-public class WebViewFragment extends Fragment {
+public class WebViewFragment extends Fragment implements GestureDetector.OnGestureListener {
public static final String URL = "url";
public static final String TOOLBAR_VISIBLE = "toolbar_visible";
private WebView myWebView;
+ private GestureDetector gestureDetector;
private View mToolbar;
private ProgressBar mProgressBar;
private String mUrl;
private boolean mToolbarVisible;
private OnWebViewInteractionListener mListener;
+ private Runnable mCloseAction;
public boolean onKeyDown(int keyCode) {
// Check if the key event was the Back button and if there's history
@@ -52,6 +56,8 @@ public class WebViewFragment extends Fragment {
public void loadUrl(String url) {
mUrl = url;
+ myWebView.getSettings().setLoadWithOverviewMode(true);
+ myWebView.getSettings().setUseWideViewPort(true);
myWebView.loadUrl(mUrl);
}
@@ -59,6 +65,40 @@ public class WebViewFragment extends Fragment {
mToolbar.setVisibility(visible ? View.VISIBLE : View.GONE);
}
+ public void setCloseAction(Runnable closeAction) {
+ this.mCloseAction = closeAction;
+ }
+
+ @Override
+ public boolean onDown(MotionEvent motionEvent) {
+ return false;
+ }
+
+ @Override
+ public void onShowPress(MotionEvent motionEvent) {
+
+ }
+
+ @Override
+ public boolean onSingleTapUp(MotionEvent motionEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
+ return false;
+ }
+
+ @Override
+ public void onLongPress(MotionEvent motionEvent) {
+
+ }
+
+ @Override
+ public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
+ return false;
+ }
+
public enum SafenessLevel {
NOT_ANALYZED_YET(""),
NOT_SECURE(""),
@@ -98,6 +138,26 @@ public class WebViewFragment extends Fragment {
View rootView = inflater.inflate(R.layout.fragment_web_view, container, false);
mProgressBar = rootView.findViewById(R.id.toolbarProgressBar);
myWebView = rootView.findViewById(R.id.web_view);
+ gestureDetector = new GestureDetector(this);
+ gestureDetector.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
+ return false;
+ }
+
+ @Override
+ public boolean onDoubleTap(MotionEvent motionEvent) {
+ openInFullScreen();
+ return false;
+ }
+
+ @Override
+ public boolean onDoubleTapEvent(MotionEvent motionEvent) {
+ return false;
+ }
+ });
+ myWebView.setOnTouchListener((v, event) -> gestureDetector.onTouchEvent(event));
+
myWebView.setWebViewClient(new HiFiWebViewClient());
myWebView.setWebChromeClient(new HiFiWebChromeClient());
WebSettings webSettings = myWebView.getSettings();
@@ -106,12 +166,19 @@ public class WebViewFragment extends Fragment {
webSettings.setDisplayZoomControls(false);
// TODO: add a toolbar (close, ...)
- mToolbar = rootView.findViewById(R.id.viewFullScreen);
- mToolbar.setOnClickListener(view -> {
+ mToolbar = rootView.findViewById(R.id.toolbar);
+ mToolbar.findViewById(R.id.viewFullScreen).setOnClickListener(view -> {
openInFullScreen();
});
+ mToolbar.findViewById(R.id.close).setOnClickListener(view -> {
+ if (mCloseAction != null) {
+ mCloseAction.run();
+ }
+ });
if (mUrl != null) {
+ myWebView.getSettings().setLoadWithOverviewMode(true);
+ myWebView.getSettings().setUseWideViewPort(true);
myWebView.loadUrl(mUrl);
}
return rootView;
diff --git a/android/app/src/main/res/drawable/ic_close.xml b/android/app/src/main/res/drawable/ic_close.xml
new file mode 100644
index 0000000000..086ced5f07
--- /dev/null
+++ b/android/app/src/main/res/drawable/ic_close.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/ic_expand.xml b/android/app/src/main/res/drawable/ic_expand.xml
new file mode 100644
index 0000000000..0e1d0cd5d4
--- /dev/null
+++ b/android/app/src/main/res/drawable/ic_expand.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/ic_full_screen_24dp.xml b/android/app/src/main/res/drawable/ic_full_screen_24dp.xml
deleted file mode 100644
index 4e3b3eeacd..0000000000
--- a/android/app/src/main/res/drawable/ic_full_screen_24dp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/layout/fragment_web_view.xml b/android/app/src/main/res/layout/fragment_web_view.xml
index fce955e514..0b04c2a73a 100644
--- a/android/app/src/main/res/layout/fragment_web_view.xml
+++ b/android/app/src/main/res/layout/fragment_web_view.xml
@@ -1,21 +1,35 @@
+ android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
-
+ android:layout_marginTop="6dp"
+ android:layout_marginRight="5dp"
+ android:visibility="visible">
+
+
+
+