Merge branch 'pie-gsi' of https://android.googlesource.com/platform//frameworks/support into HEAD
Change-Id: I3f540dd8572cca5f83169a7306f71a9f421584bf
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..9f4aed2
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=review.blissroms.com
+port=29418
+project=platform_frameworks_support.git
+defaultbranch=p9.0
diff --git a/content/src/main/java/androidx/contentpager/content/Query.java b/content/src/main/java/androidx/contentpager/content/Query.java
index d1cfbde..d9d35e0 100644
--- a/content/src/main/java/androidx/contentpager/content/Query.java
+++ b/content/src/main/java/androidx/contentpager/content/Query.java
@@ -37,7 +37,7 @@
*/
public final class Query {
- private static final boolean DEBUG = true;
+ private static final boolean DEBUG = false;
private static final String TAG = "Query";
private final Uri mUri;
diff --git a/preference/res/drawable-v21/ic_arrow_down_24dp.xml b/preference/res/drawable-v21/ic_arrow_down_24dp.xml
index 1815b8c..7a709eb 100644
--- a/preference/res/drawable-v21/ic_arrow_down_24dp.xml
+++ b/preference/res/drawable-v21/ic_arrow_down_24dp.xml
@@ -18,9 +18,8 @@
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
- android:viewportHeight="24.0"
- android:tint="?android:attr/colorAccent">
+ android:viewportHeight="24.0">
<path
- android:fillColor="#FF000000"
+ android:fillColor="@*android:color/accent_device_default_dark"
android:pathData="M7.41,7.84L12,12.42l4.59,-4.58L18,9.25l-6,6 -6,-6z"/>
</vector>
diff --git a/preference/res/drawable/ic_arrow_down_24dp.xml b/preference/res/drawable/ic_arrow_down_24dp.xml
index c52399e..84628df 100644
--- a/preference/res/drawable/ic_arrow_down_24dp.xml
+++ b/preference/res/drawable/ic_arrow_down_24dp.xml
@@ -20,6 +20,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
- android:fillColor="#FF000000"
+ android:fillColor="@*android:color/accent_device_default_dark"
android:pathData="M7.41,7.84L12,12.42l4.59,-4.58L18,9.25l-6,6 -6,-6z"/>
</vector>
diff --git a/preference/res/values/colors.xml b/preference/res/values/colors.xml
index cb4f235..86b5f69 100644
--- a/preference/res/values/colors.xml
+++ b/preference/res/values/colors.xml
@@ -17,5 +17,5 @@
<resources>
<!-- Fallback color for versions of the system where ?android:attr/colorAccent is not available -->
- <color name="preference_fallback_accent_color">#ff80cbc4</color>
+ <color name="preference_fallback_accent_color">@*android:color/accent_device_default_light</color>
</resources>
diff --git a/preference/src/main/java/androidx/preference/Preference.java b/preference/src/main/java/androidx/preference/Preference.java
index 50833b5..1bec258 100644
--- a/preference/src/main/java/androidx/preference/Preference.java
+++ b/preference/src/main/java/androidx/preference/Preference.java
@@ -1510,6 +1510,14 @@
mDefaultValue = defaultValue;
}
+ /**
+ * Returns whether the preference can be found in persistent storage
+ * @hide
+ */
+ protected boolean isPersisted() {
+ return getSharedPreferences().contains(mKey);
+ }
+
private void dispatchSetInitialValue() {
if (getPreferenceDataStore() != null) {
onSetInitialValue(true, mDefaultValue);
@@ -1518,7 +1526,7 @@
// By now, we know if we are persistent.
final boolean shouldPersist = shouldPersist();
- if (!shouldPersist || !getSharedPreferences().contains(mKey)) {
+ if (!shouldPersist || !isPersisted()) {
if (mDefaultValue != null) {
onSetInitialValue(false, mDefaultValue);
}
diff --git a/v7/recyclerview/src/main/java/androidx/recyclerview/widget/RecyclerView.java b/v7/recyclerview/src/main/java/androidx/recyclerview/widget/RecyclerView.java
index 6cde56d..3fa60db 100644
--- a/v7/recyclerview/src/main/java/androidx/recyclerview/widget/RecyclerView.java
+++ b/v7/recyclerview/src/main/java/androidx/recyclerview/widget/RecyclerView.java
@@ -164,6 +164,10 @@
static final boolean DEBUG = false;
+ private static final boolean OPTS_INPUT = true;
+
+ private static final double MOVE_TOUCH_SLOP = 0.3;
+
static final boolean VERBOSE_TRACING = false;
private static final int[] NESTED_SCROLLING_ATTRS =
@@ -234,6 +238,10 @@
*/
public static final int TOUCH_SLOP_DEFAULT = 0;
+ private boolean mIsFirstTouchMoveEvent = false;
+ private int mMoveAcceleration;
+ private int mNumTouchMoveEvent = 0;
+
/**
* Constant for use with {@link #setScrollingTouchSlop(int)}. Indicates
* that the RecyclerView should use the standard touch slop for scrolling
@@ -619,6 +627,9 @@
ViewConfigurationCompat.getScaledHorizontalScrollFactor(vc, context);
mScaledVerticalScrollFactor =
ViewConfigurationCompat.getScaledVerticalScrollFactor(vc, context);
+ if (OPTS_INPUT) {
+ mMoveAcceleration = (int)(mTouchSlop * MOVE_TOUCH_SLOP);
+ }
mMinFlingVelocity = vc.getScaledMinimumFlingVelocity();
mMaxFlingVelocity = vc.getScaledMaximumFlingVelocity();
setWillNotDraw(getOverScrollMode() == View.OVER_SCROLL_NEVER);
@@ -1066,10 +1077,16 @@
// fall-through
case TOUCH_SLOP_DEFAULT:
mTouchSlop = vc.getScaledTouchSlop();
+ if (OPTS_INPUT) {
+ mMoveAcceleration = (int)(mTouchSlop * MOVE_TOUCH_SLOP);
+ }
break;
case TOUCH_SLOP_PAGING:
mTouchSlop = vc.getScaledPagingTouchSlop();
+ if (OPTS_INPUT) {
+ mMoveAcceleration = (int)(mTouchSlop * MOVE_TOUCH_SLOP);
+ }
break;
}
}
@@ -2951,6 +2968,9 @@
switch (action) {
case MotionEvent.ACTION_DOWN:
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
if (mIgnoreMotionEventTillDown) {
mIgnoreMotionEventTillDown = false;
}
@@ -2977,12 +2997,18 @@
break;
case MotionEvent.ACTION_POINTER_DOWN:
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
mScrollPointerId = e.getPointerId(actionIndex);
mInitialTouchX = mLastTouchX = (int) (e.getX(actionIndex) + 0.5f);
mInitialTouchY = mLastTouchY = (int) (e.getY(actionIndex) + 0.5f);
break;
case MotionEvent.ACTION_MOVE: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent++;
+ }
final int index = e.findPointerIndex(mScrollPointerId);
if (index < 0) {
Log.e(TAG, "Error processing scroll; pointer index for id "
@@ -2996,11 +3022,31 @@
final int dx = x - mInitialTouchX;
final int dy = y - mInitialTouchY;
boolean startScroll = false;
- if (canScrollHorizontally && Math.abs(dx) > mTouchSlop) {
+
+ boolean isFarEnoughX = false;
+ boolean isFarEnoughY = false;
+ int realTouchSlop;
+ if (OPTS_INPUT) {
+ if (mNumTouchMoveEvent == 1) {
+ isFarEnoughX = Math.abs(dx) > mMoveAcceleration;
+ isFarEnoughY = Math.abs(dy) > mMoveAcceleration;
+ realTouchSlop = mMoveAcceleration;
+ } else {
+ isFarEnoughX = Math.abs(dx) > mTouchSlop;
+ isFarEnoughY = Math.abs(dy) > mTouchSlop;
+ realTouchSlop = mTouchSlop;
+ }
+ } else {
+ isFarEnoughX = Math.abs(dx) > mTouchSlop;
+ isFarEnoughY = Math.abs(dy) > mTouchSlop;
+ realTouchSlop = mTouchSlop;
+ }
+
+ if (canScrollHorizontally && isFarEnoughX) {
mLastTouchX = x;
startScroll = true;
}
- if (canScrollVertically && Math.abs(dy) > mTouchSlop) {
+ if (canScrollVertically && isFarEnoughY) {
mLastTouchY = y;
startScroll = true;
}
@@ -3011,15 +3057,24 @@
} break;
case MotionEvent.ACTION_POINTER_UP: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
onPointerUp(e);
} break;
case MotionEvent.ACTION_UP: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
mVelocityTracker.clear();
stopNestedScroll(TYPE_TOUCH);
} break;
case MotionEvent.ACTION_CANCEL: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
cancelTouch();
}
}
@@ -3069,6 +3124,9 @@
switch (action) {
case MotionEvent.ACTION_DOWN: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
mScrollPointerId = e.getPointerId(0);
mInitialTouchX = mLastTouchX = (int) (e.getX() + 0.5f);
mInitialTouchY = mLastTouchY = (int) (e.getY() + 0.5f);
@@ -3084,12 +3142,18 @@
} break;
case MotionEvent.ACTION_POINTER_DOWN: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
mScrollPointerId = e.getPointerId(actionIndex);
mInitialTouchX = mLastTouchX = (int) (e.getX(actionIndex) + 0.5f);
mInitialTouchY = mLastTouchY = (int) (e.getY(actionIndex) + 0.5f);
} break;
case MotionEvent.ACTION_MOVE: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent++;
+ }
final int index = e.findPointerIndex(mScrollPointerId);
if (index < 0) {
Log.e(TAG, "Error processing scroll; pointer index for id "
@@ -3111,21 +3175,40 @@
mNestedOffsets[1] += mScrollOffset[1];
}
+ boolean isFarEnoughX = false;
+ boolean isFarEnoughY = false;
+ int realTouchSlop;
+ if (OPTS_INPUT) {
+ if (mNumTouchMoveEvent == 1) {
+ isFarEnoughX = Math.abs(dx) > mMoveAcceleration;
+ isFarEnoughY = Math.abs(dy) > mMoveAcceleration;
+ realTouchSlop = mMoveAcceleration;
+ } else {
+ isFarEnoughX = Math.abs(dx) > mTouchSlop;
+ isFarEnoughY = Math.abs(dy) > mTouchSlop;
+ realTouchSlop = mTouchSlop;
+ }
+ } else {
+ isFarEnoughX = Math.abs(dx) > mTouchSlop;
+ isFarEnoughY = Math.abs(dy) > mTouchSlop;
+ realTouchSlop = mTouchSlop;
+ }
+
if (mScrollState != SCROLL_STATE_DRAGGING) {
boolean startScroll = false;
- if (canScrollHorizontally && Math.abs(dx) > mTouchSlop) {
+ if (canScrollHorizontally && isFarEnoughX) {
if (dx > 0) {
- dx -= mTouchSlop;
+ dx -= realTouchSlop;
} else {
- dx += mTouchSlop;
+ dx += realTouchSlop;
}
startScroll = true;
}
- if (canScrollVertically && Math.abs(dy) > mTouchSlop) {
+ if (canScrollVertically && isFarEnoughY) {
if (dy > 0) {
- dy -= mTouchSlop;
+ dy -= realTouchSlop;
} else {
- dy += mTouchSlop;
+ dy += realTouchSlop;
}
startScroll = true;
}
@@ -3151,10 +3234,16 @@
} break;
case MotionEvent.ACTION_POINTER_UP: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
onPointerUp(e);
} break;
case MotionEvent.ACTION_UP: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
mVelocityTracker.addMovement(vtev);
eventAddedToVelocityTracker = true;
mVelocityTracker.computeCurrentVelocity(1000, mMaxFlingVelocity);
@@ -3169,6 +3258,9 @@
} break;
case MotionEvent.ACTION_CANCEL: {
+ if (OPTS_INPUT) {
+ mNumTouchMoveEvent = 0;
+ }
cancelTouch();
} break;
}