From 11e47b8fe6ddfef9f74bcf01dee21306ec493281 Mon Sep 17 00:00:00 2001 From: Gabriel Calero Date: Mon, 2 Jul 2018 16:40:54 -0300 Subject: [PATCH] Apply web preview specs --- .../hifiinterface/InterfaceActivity.java | 1 + .../hifiinterface/WebViewActivity.java | 1 - .../fragment/WebViewFragment.java | 73 ++++++++++++++++++- .../app/src/main/res/drawable/ic_close.xml | 21 ++++++ .../app/src/main/res/drawable/ic_expand.xml | 26 +++++++ .../main/res/drawable/ic_full_screen_24dp.xml | 5 -- .../src/main/res/layout/fragment_web_view.xml | 28 +++++-- .../app/src/main/res/layout/web_drawer.xml | 8 +- 8 files changed, 144 insertions(+), 19 deletions(-) create mode 100644 android/app/src/main/res/drawable/ic_close.xml create mode 100644 android/app/src/main/res/drawable/ic_expand.xml delete mode 100644 android/app/src/main/res/drawable/ic_full_screen_24dp.xml 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"> + + + +