Merge "Fix intercept logic in NotificationPanelView." into lmp-preview-dev

This commit is contained in:
Jorim Jaggi
2014-05-24 16:04:17 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 3 deletions

View File

@@ -353,10 +353,12 @@ public class NotificationPanelView extends PanelView implements
@Override
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
// Block request so we can still intercept the scrolling when QS is expanded.
if (!mQsExpanded) {
super.requestDisallowInterceptTouchEvent(disallowIntercept);
// Block request when interacting with the scroll view so we can still intercept the
// scrolling when QS is expanded.
if (mScrollView.isDispatchingTouchEvent()) {
return;
}
super.requestDisallowInterceptTouchEvent(disallowIntercept);
}
private void flingWithCurrentVelocity() {

View File

@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ScrollView;
@@ -28,6 +29,7 @@ public class ObservableScrollView extends ScrollView {
private Listener mListener;
private int mLastOverscrollAmount;
private boolean mDispatchingTouchEvent;
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -41,6 +43,10 @@ public class ObservableScrollView extends ScrollView {
return getScrollY() == getMaxScrollY();
}
public boolean isDispatchingTouchEvent() {
return mDispatchingTouchEvent;
}
private int getMaxScrollY() {
int scrollRange = 0;
if (getChildCount() > 0) {
@@ -51,6 +57,14 @@ public class ObservableScrollView extends ScrollView {
return scrollRange;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
mDispatchingTouchEvent = true;
boolean result = super.dispatchTouchEvent(ev);
mDispatchingTouchEvent = false;
return result;
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);