Dbrant has uploaded a new change for review.
https://gerrit.wikimedia.org/r/190820
Change subject: Fix scrolling when tapping and dragging over lead image.
......................................................................
Fix scrolling when tapping and dragging over lead image.
Bug: T87128
Change-Id: Ie32524661c4d5408cc17489898074c5bceab33be
---
M wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
1 file changed, 45 insertions(+), 8 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/20/190820/1
diff --git
a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
index 6b23fab..0f59384 100644
---
a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
+++
b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
@@ -10,7 +10,9 @@
import android.text.TextUtils;
import android.util.TypedValue;
import android.graphics.PointF;
+import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Transformation;
@@ -32,6 +34,7 @@
import org.wikipedia.WikipediaApp;
import org.wikipedia.bridge.CommunicationBridge;
import org.wikipedia.page.PageViewFragmentInternal;
+import org.wikipedia.views.ClickOrScrollHandler;
import org.wikipedia.views.ObservableWebView;
public class LeadImagesHandler implements
ObservableWebView.OnScrollChangeListener, ImageViewWithFace.OnImageLoadListener
{
@@ -136,16 +139,50 @@
.getWindowManager().getDefaultDisplay().getHeight() /
displayDensity);
}
- image1.setOnClickListener(new View.OnClickListener() {
+ // set up pass-through scroll functionality for the ListView
+ image1.setOnTouchListener(new View.OnTouchListener() {
+ private int touchSlop =
ViewConfiguration.get(context).getScaledTouchSlop();
+ private boolean slopReached;
+ private boolean isPressed = false;
+ private float startY;
+ private float amountScrolled;
@Override
- public void onClick(View v) {
- String imageName =
parentFragment.getPage().getPageProperties().getLeadImageName();
- if (imageName == null) {
- return;
+ public boolean onTouch(View v, MotionEvent event) {
+ int action = event.getActionMasked() & MotionEvent.ACTION_MASK;
+ switch (action) {
+ case MotionEvent.ACTION_DOWN:
+ isPressed = true;
+ startY = event.getY();
+ amountScrolled = 0;
+ slopReached = false;
+ return true;
+ case MotionEvent.ACTION_MOVE:
+ if (isPressed) {
+ int scrollAmount = Math.max((int) (startY -
event.getY()), -webView.getScrollY());
+ // manually scroll the WebView that's underneath
us...
+ webView.scrollBy(0, scrollAmount);
+ amountScrolled += scrollAmount;
+ if (Math.abs(amountScrolled) > touchSlop &&
!slopReached) {
+ slopReached = true;
+ }
+ }
+ break;
+ case MotionEvent.ACTION_UP:
+ isPressed = false;
+ String imageName =
parentFragment.getPage().getPageProperties().getLeadImageName();
+ if (!slopReached && imageName != null) {
+ PageTitle imageTitle = new PageTitle("File:" +
imageName,
+
parentFragment.getTitle().getSite());
+ parentFragment.showImageGallery(imageTitle);
+ }
+ break;
+ case MotionEvent.ACTION_CANCEL:
+ isPressed = false;
+ break;
+ default:
+ break;
}
- PageTitle imageTitle = new PageTitle("File:" + imageName,
-
parentFragment.getTitle().getSite());
- parentFragment.showImageGallery(imageTitle);
+ return false;
}
});
--
To view, visit https://gerrit.wikimedia.org/r/190820
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie32524661c4d5408cc17489898074c5bceab33be
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits