Mholloway has uploaded a new change for review.
https://gerrit.wikimedia.org/r/306638
Change subject: Hide/show article action toolbar depending on page scroll
actions
......................................................................
Hide/show article action toolbar depending on page scroll actions
Bug: T143766
Change-Id: I12e2e79c09e548aaaab9f24ad87ddb309a05e461
---
M app/src/main/java/org/wikipedia/page/PageFragment.java
M app/src/main/java/org/wikipedia/page/ToCHandler.java
R app/src/main/java/org/wikipedia/page/action/PageActionTab.java
A app/src/main/java/org/wikipedia/page/action/PageActionToolbarHideHandler.java
4 files changed, 86 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/38/306638/1
diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java
b/app/src/main/java/org/wikipedia/page/PageFragment.java
index ef9ff18..a9f40a1 100755
--- a/app/src/main/java/org/wikipedia/page/PageFragment.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragment.java
@@ -50,6 +50,8 @@
import org.wikipedia.editing.EditHandler;
import org.wikipedia.history.HistoryEntry;
import org.wikipedia.interlanguage.LangLinksActivity;
+import org.wikipedia.page.action.PageActionTab;
+import org.wikipedia.page.action.PageActionToolbarHideHandler;
import org.wikipedia.page.gallery.GalleryActivity;
import org.wikipedia.page.leadimages.ArticleHeaderView;
import org.wikipedia.page.leadimages.LeadImagesHandler;
@@ -150,6 +152,7 @@
private ArticleHeaderView articleHeaderView;
private LeadImagesHandler leadImagesHandler;
private SearchBarHideHandler searchBarHideHandler;
+ private PageActionToolbarHideHandler pageActionToolbarHideHandler;
private ObservableWebView webView;
private SwipeRefreshLayoutWithScroll refreshView;
private WikiErrorView errorView;
@@ -285,6 +288,9 @@
tabLayout = (TabLayout)
rootView.findViewById(R.id.page_actions_tab_layout);
tabLayout.addOnTabSelectedListener(pageActionTabListener);
+ pageActionToolbarHideHandler = new
PageActionToolbarHideHandler(tabLayout);
+ pageActionToolbarHideHandler.setScrollView(webView);
+
errorView = (WikiErrorView)rootView.findViewById(R.id.page_error);
return rootView;
diff --git a/app/src/main/java/org/wikipedia/page/ToCHandler.java
b/app/src/main/java/org/wikipedia/page/ToCHandler.java
index 3a6ee2e..36e2ce3 100755
--- a/app/src/main/java/org/wikipedia/page/ToCHandler.java
+++ b/app/src/main/java/org/wikipedia/page/ToCHandler.java
@@ -5,6 +5,7 @@
import org.wikipedia.WikipediaApp;
import org.wikipedia.analytics.ToCInteractionFunnel;
import org.wikipedia.bridge.CommunicationBridge;
+import org.wikipedia.page.action.PageActionTab;
import org.wikipedia.tooltip.ToolTipUtil;
import org.wikipedia.util.DimenUtil;
import org.wikipedia.util.log.L;
diff --git a/app/src/main/java/org/wikipedia/page/PageActionTab.java
b/app/src/main/java/org/wikipedia/page/action/PageActionTab.java
similarity index 97%
rename from app/src/main/java/org/wikipedia/page/PageActionTab.java
rename to app/src/main/java/org/wikipedia/page/action/PageActionTab.java
index 6f27d0a..836a4bf 100644
--- a/app/src/main/java/org/wikipedia/page/PageActionTab.java
+++ b/app/src/main/java/org/wikipedia/page/action/PageActionTab.java
@@ -1,4 +1,4 @@
-package org.wikipedia.page;
+package org.wikipedia.page.action;
import android.support.annotation.NonNull;
diff --git
a/app/src/main/java/org/wikipedia/page/action/PageActionToolbarHideHandler.java
b/app/src/main/java/org/wikipedia/page/action/PageActionToolbarHideHandler.java
new file mode 100644
index 0000000..4725070
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/page/action/PageActionToolbarHideHandler.java
@@ -0,0 +1,78 @@
+package org.wikipedia.page.action;
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.design.widget.TabLayout;
+
+import org.wikipedia.ViewAnimations;
+import org.wikipedia.views.ObservableWebView;
+
+public class PageActionToolbarHideHandler implements
ObservableWebView.OnScrollChangeListener,
+ ObservableWebView.OnUpOrCancelMotionEventListener,
+ ObservableWebView.OnDownMotionEventListener {
+ @NonNull private TabLayout pageActions;
+ @Nullable private ObservableWebView webview;
+
+ public PageActionToolbarHideHandler(@NonNull TabLayout pageActions) {
+ this.pageActions = pageActions;
+ }
+
+ public void setScrollView(@Nullable ObservableWebView webView) {
+ webview = webView;
+ if (webview != null) {
+ webview.addOnScrollChangeListener(this);
+ webview.addOnDownMotionEventListener(this);
+ webview.addOnUpOrCancelMotionEventListener(this);
+ }
+ }
+
+ @Override
+ public void onScrollChanged(int oldScrollY, int scrollY, boolean
isHumanScroll) {
+ if (webview == null) {
+ return;
+ }
+
+ if (scrollY <= webview.getHeight()) {
+ // For the first screenful, ensure it always exists.
+ ViewAnimations.ensureTranslationY(pageActions, 0);
+ return;
+ }
+
+ int animMargin;
+
+ if (oldScrollY > scrollY) {
+ // Scroll the page action toolbar up
+ int minMargin = 0;
+ int scrollDelta = oldScrollY - scrollY;
+ int newMargin = (int) pageActions.getTranslationY() - scrollDelta;
+ animMargin = Math.max(minMargin, newMargin);
+ } else {
+ // Scroll the page action toolbar down
+ int scrollDelta = scrollY - oldScrollY;
+ int minMargin = pageActions.getHeight();
+ int newMargin = (int) pageActions.getTranslationY() + scrollDelta;
+ animMargin = Math.min(minMargin, newMargin);
+ }
+ pageActions.setTranslationY(animMargin);
+ }
+
+ @Override
+ public void onUpOrCancelMotionEvent() {
+ int transY = (int) pageActions.getTranslationY();
+ int height = pageActions.getHeight();
+ if (transY != 0 && transY < height) {
+ if (transY > height / 2) {
+ // Fully hide the page action toolbar
+ ViewAnimations.ensureTranslationY(pageActions, height);
+ } else {
+ // Fully display the page action toolbar
+ ViewAnimations.ensureTranslationY(pageActions, 0);
+ }
+ }
+ }
+
+ @Override
+ public void onDownMotionEvent() {
+ // Don't do anything for now
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/306638
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I12e2e79c09e548aaaab9f24ad87ddb309a05e461
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits