Loading api/current.xml +535 −0 Original line number Diff line number Diff line Loading @@ -5938,6 +5938,39 @@ visibility="public" > </field> <field name="overscrollFooter" type="int" transient="false" volatile="false" value="16843456" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="overscrollHeader" type="int" transient="false" volatile="false" value="16843455" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="overscrollMode" type="int" transient="false" volatile="false" value="16843457" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="padding" type="int" transient="false" Loading Loading @@ -176454,6 +176487,17 @@ visibility="public" > </method> <method name="getOverscrollMode" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getPaddingBottom" return="int" abstract="false" Loading Loading @@ -177594,6 +177638,25 @@ <parameter name="heightMeasureSpec" type="int"> </parameter> </method> <method name="onOverscrolled" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > <parameter name="scrollX" type="int"> </parameter> <parameter name="scrollY" type="int"> </parameter> <parameter name="clampedX" type="boolean"> </parameter> <parameter name="clampedY" type="boolean"> </parameter> </method> <method name="onRestoreInstanceState" return="void" abstract="false" Loading Loading @@ -177747,6 +177810,35 @@ <parameter name="visibility" type="int"> </parameter> </method> <method name="overscrollBy" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > <parameter name="deltaX" type="int"> </parameter> <parameter name="deltaY" type="int"> </parameter> <parameter name="scrollX" type="int"> </parameter> <parameter name="scrollY" type="int"> </parameter> <parameter name="scrollRangeX" type="int"> </parameter> <parameter name="scrollRangeY" type="int"> </parameter> <parameter name="maxOverscrollX" type="int"> </parameter> <parameter name="maxOverscrollY" type="int"> </parameter> <parameter name="isTouchEvent" type="boolean"> </parameter> </method> <method name="performClick" return="boolean" abstract="false" Loading Loading @@ -178573,6 +178665,19 @@ <parameter name="l" type="android.view.View.OnTouchListener"> </parameter> </method> <method name="setOverscrollMode" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="overscrollMode" type="int"> </parameter> </method> <method name="setPadding" return="void" abstract="false" Loading Loading @@ -179195,6 +179300,39 @@ visibility="public" > </field> <field name="OVERSCROLL_ALWAYS" type="int" transient="false" volatile="false" value="0" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="OVERSCROLL_IF_CONTENT_SCROLLS" type="int" transient="false" volatile="false" value="1" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="OVERSCROLL_NEVER" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET" type="int[]" transient="false" Loading Loading @@ -194039,6 +194177,17 @@ visibility="public" > </method> <method name="getUseWebViewBackgroundForOverscrollBackground" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getUseWideViewPort" return="boolean" abstract="false" Loading Loading @@ -194631,6 +194780,19 @@ <parameter name="use" type="boolean"> </parameter> </method> <method name="setUseWebViewBackgroundForOverscrollBackground" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="view" type="boolean"> </parameter> </method> <method name="setUseWideViewPort" return="void" abstract="false" Loading Loading @@ -205241,6 +205403,28 @@ visibility="public" > </method> <method name="getOverscrollFooter" return="android.graphics.drawable.Drawable" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getOverscrollHeader" return="android.graphics.drawable.Drawable" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isItemChecked" return="boolean" abstract="false" Loading Loading @@ -205386,6 +205570,32 @@ <parameter name="itemsCanFocus" type="boolean"> </parameter> </method> <method name="setOverscrollFooter" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="footer" type="android.graphics.drawable.Drawable"> </parameter> </method> <method name="setOverscrollHeader" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="header" type="android.graphics.drawable.Drawable"> </parameter> </method> <method name="setSelection" return="void" abstract="false" Loading Loading @@ -205957,6 +206167,331 @@ </parameter> </method> </interface> <class name="OverScroller" extends="java.lang.Object" abstract="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <constructor name="OverScroller" type="android.widget.OverScroller" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="context" type="android.content.Context"> </parameter> </constructor> <constructor name="OverScroller" type="android.widget.OverScroller" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="context" type="android.content.Context"> </parameter> <parameter name="interpolator" type="android.view.animation.Interpolator"> </parameter> </constructor> <constructor name="OverScroller" type="android.widget.OverScroller" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="context" type="android.content.Context"> </parameter> <parameter name="interpolator" type="android.view.animation.Interpolator"> </parameter> <parameter name="bounceCoefficientX" type="float"> </parameter> <parameter name="bounceCoefficientY" type="float"> </parameter> </constructor> <method name="abortAnimation" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="computeScrollOffset" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="fling" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="velocityX" type="int"> </parameter> <parameter name="velocityY" type="int"> </parameter> <parameter name="minX" type="int"> </parameter> <parameter name="maxX" type="int"> </parameter> <parameter name="minY" type="int"> </parameter> <parameter name="maxY" type="int"> </parameter> </method> <method name="fling" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="velocityX" type="int"> </parameter> <parameter name="velocityY" type="int"> </parameter> <parameter name="minX" type="int"> </parameter> <parameter name="maxX" type="int"> </parameter> <parameter name="minY" type="int"> </parameter> <parameter name="maxY" type="int"> </parameter> <parameter name="overX" type="int"> </parameter> <parameter name="overY" type="int"> </parameter> </method> <method name="forceFinished" return="void" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <parameter name="finished" type="boolean"> </parameter> </method> <method name="getCurrX" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getCurrY" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getFinalX" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getFinalY" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getStartX" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getStartY" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="isFinished" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="isOverscrolled" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="notifyHorizontalEdgeReached" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="finalX" type="int"> </parameter> <parameter name="overX" type="int"> </parameter> </method> <method name="notifyVerticalEdgeReached" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startY" type="int"> </parameter> <parameter name="finalY" type="int"> </parameter> <parameter name="overY" type="int"> </parameter> </method> <method name="springback" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="minX" type="int"> </parameter> <parameter name="maxX" type="int"> </parameter> <parameter name="minY" type="int"> </parameter> <parameter name="maxY" type="int"> </parameter> </method> <method name="startScroll" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="dx" type="int"> </parameter> <parameter name="dy" type="int"> </parameter> </method> <method name="startScroll" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="dx" type="int"> </parameter> <parameter name="dy" type="int"> </parameter> <parameter name="duration" type="int"> </parameter> </method> </class> <class name="PopupWindow" extends="java.lang.Object" abstract="false" core/java/android/provider/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -2323,6 +2323,12 @@ public final class Settings { */ public static final String QUIET_HOURS_DIM = "quiet_hours_dim"; /** * Whether to allow overscrolling (edge bounce effect on lists) * @hide */ public static final String ALLOW_OVERSCROLL = "allow_overscroll"; /** * Settings to backup. This is here so that it's in the same place as the settings * keys and easy to update. Loading core/java/android/view/View.java +197 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.ScrollBarDrawable; import android.provider.Settings; import java.lang.ref.SoftReference; import java.lang.reflect.InvocationTargetException; Loading Loading @@ -1520,6 +1521,40 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility */ private static final int AWAKEN_SCROLL_BARS_ON_ATTACH = 0x08000000; /** * Always allow a user to overscroll this view, provided it is a * view that can scroll. * * @see #getOverscrollMode() * @see #setOverscrollMode(int) */ public static final int OVERSCROLL_ALWAYS = 0; /** * Allow a user to overscroll this view only if the content is large * enough to meaningfully scroll, provided it is a view that can scroll. * * @see #getOverscrollMode() * @see #setOverscrollMode(int) */ public static final int OVERSCROLL_IF_CONTENT_SCROLLS = 1; /** * Never allow a user to overscroll this view. * * @see #getOverscrollMode() * @see #setOverscrollMode(int) */ public static final int OVERSCROLL_NEVER = 2; /** * Controls the overscroll mode for this view. * See {@link #overscrollBy(int, int, int, int, int, int, int, int, boolean)}, * {@link #OVERSCROLL_ALWAYS}, {@link #OVERSCROLL_IF_CONTENT_SCROLLS}, * and {@link #OVERSCROLL_NEVER}. */ private int mOverscrollMode = OVERSCROLL_ALWAYS; /** * The parent this view is attached to. * {@hide} Loading Loading @@ -2076,6 +2111,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility }); } break; case R.styleable.View_overscrollMode: mOverscrollMode = a.getInt(attr, OVERSCROLL_ALWAYS); break; } } Loading Loading @@ -8668,6 +8706,165 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility return factory.inflate(resource, root); } /** * Scroll the view with standard behavior for scrolling beyond the normal * content boundaries. Views that call this method should override * {@link #onOverscrolled(int, int, boolean, boolean)} to respond to the * results of an overscroll operation. * * Views can use this method to handle any touch or fling-based scrolling. * * @param deltaX Change in X in pixels * @param deltaY Change in Y in pixels * @param scrollX Current X scroll value in pixels before applying deltaX * @param scrollY Current Y scroll value in pixels before applying deltaY * @param scrollRangeX Maximum content scroll range along the X axis * @param scrollRangeY Maximum content scroll range along the Y axis * @param maxOverscrollX Number of pixels to overscroll by in either direction * along the X axis. * @param maxOverscrollY Number of pixels to overscroll by in either direction * along the Y axis. * @param isTouchEvent true if this scroll operation is the result of a touch event. * @return true if scrolling was clamped to an overscroll boundary along either * axis, false otherwise. */ protected boolean overscrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverscrollX, int maxOverscrollY, boolean isTouchEvent) { final int overscrollMode = getOverscrollMode(); final boolean canScrollHorizontal = computeHorizontalScrollRange() > computeHorizontalScrollExtent(); final boolean canScrollVertical = computeVerticalScrollRange() > computeVerticalScrollExtent(); final boolean overscrollHorizontal = overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && canScrollHorizontal); final boolean overscrollVertical = overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && canScrollVertical); int newScrollX = scrollX + deltaX; if (overscrollHorizontal) { // Scale the scroll amount if we're in the dropoff zone final int dropoffX = maxOverscrollX / 2; final int dropoffLeft = -dropoffX; final int dropoffRight = dropoffX + scrollRangeX; if ((scrollX < dropoffLeft && deltaX < 0) || (scrollX > dropoffRight && deltaX > 0)) { newScrollX = scrollX + deltaX / 2; } else { if (newScrollX > dropoffRight && deltaX > 0) { int extra = newScrollX - dropoffRight; newScrollX = dropoffRight + extra / 2; } else if (newScrollX < dropoffLeft && deltaX < 0) { int extra = newScrollX - dropoffLeft; newScrollX = dropoffLeft + extra / 2; } } } else { maxOverscrollX = 0; } int newScrollY = scrollY + deltaY; if (overscrollVertical) { final int dropoffY = maxOverscrollY / 2; final int dropoffTop = -dropoffY; final int dropoffBottom = dropoffY + scrollRangeY; if ((scrollY < dropoffTop && deltaY < 0) || (scrollY > dropoffBottom && deltaY > 0)) { newScrollY = scrollY + deltaY / 2; } else { if (newScrollY > dropoffBottom && deltaY > 0) { int extra = newScrollY - dropoffBottom; newScrollY = dropoffBottom + extra / 2; } else if (newScrollY < dropoffTop && deltaY < 0) { int extra = newScrollY - dropoffTop; newScrollY = dropoffTop + extra / 2; } } } else { maxOverscrollY = 0; } // Clamp values if at the limits and record final int left = -maxOverscrollX; final int right = maxOverscrollX + scrollRangeX; final int top = -maxOverscrollY; final int bottom = maxOverscrollY + scrollRangeY; boolean clampedX = false; if (newScrollX > right) { newScrollX = right; clampedX = true; } else if (newScrollX < left) { newScrollX = left; clampedX = true; } boolean clampedY = false; if (newScrollY > bottom) { newScrollY = bottom; clampedY = true; } else if (newScrollY < top) { newScrollY = top; clampedY = true; } onOverscrolled(newScrollX, newScrollY, clampedX, clampedY); return clampedX || clampedY; } /** * Called by {@link #overscrollBy(int, int, int, int, int, int, int, int, boolean)} to * respond to the results of an overscroll operation. * * @param scrollX New X scroll value in pixels * @param scrollY New Y scroll value in pixels * @param clampedX True if scrollX was clamped to an overscroll boundary * @param clampedY True if scrollY was clamped to an overscroll boundary */ protected void onOverscrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { // Intentionally empty. } /** * Returns the overscroll mode for this view. The result will be * one of {@link #OVERSCROLL_ALWAYS} (default), {@link #OVERSCROLL_IF_CONTENT_SCROLLS} * (allow overscrolling only if the view content is larger than the container), * or {@link #OVERSCROLL_NEVER}. * * @return This view's overscroll mode. */ public int getOverscrollMode() { if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.ALLOW_OVERSCROLL, 1) <= 0) return OVERSCROLL_NEVER; return mOverscrollMode; } /** * Set the overscroll mode for this view. Valid overscroll modes are * {@link #OVERSCROLL_ALWAYS} (default), {@link #OVERSCROLL_IF_CONTENT_SCROLLS} * (allow overscrolling only if the view content is larger than the container), * or {@link #OVERSCROLL_NEVER}. * * Setting the overscroll mode of a view will have an effect only if the * view is capable of scrolling. * * @param overscrollMode The new overscroll mode for this view. */ public void setOverscrollMode(int overscrollMode) { if (overscrollMode != OVERSCROLL_ALWAYS && overscrollMode != OVERSCROLL_IF_CONTENT_SCROLLS && overscrollMode != OVERSCROLL_NEVER) { throw new IllegalArgumentException("Invalid overscroll mode " + overscrollMode); } mOverscrollMode = overscrollMode; } /** * A MeasureSpec encapsulates the layout requirements passed from parent to child. * Each MeasureSpec represents a requirement for either the width or the height. Loading core/java/android/webkit/WebSettings.java +18 −0 Original line number Diff line number Diff line Loading @@ -208,6 +208,7 @@ public class WebSettings { private boolean mBuiltInZoomControls = false; private boolean mAllowFileAccess = true; private boolean mLoadWithOverviewMode = false; private boolean mUseWebViewBackgroundOverscrollBackground = true; // private WebSettings, not accessible by the host activity static private int mDoubleTapToastCount = 3; Loading Loading @@ -493,6 +494,23 @@ public class WebSettings { return mLoadWithOverviewMode; } /** * Set whether the WebView uses its background for over scroll background. * If true, it will use the WebView's background. If false, it will use an * internal pattern. Default is true. */ public void setUseWebViewBackgroundForOverscrollBackground(boolean view) { mUseWebViewBackgroundOverscrollBackground = view; } /** * Returns true if this WebView uses WebView's background instead of * internal pattern for over scroll background. */ public boolean getUseWebViewBackgroundForOverscrollBackground() { return mUseWebViewBackgroundOverscrollBackground; } /** * Store whether the WebView is saving form data. */ Loading core/java/android/webkit/WebView.java +145 −39 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
api/current.xml +535 −0 Original line number Diff line number Diff line Loading @@ -5938,6 +5938,39 @@ visibility="public" > </field> <field name="overscrollFooter" type="int" transient="false" volatile="false" value="16843456" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="overscrollHeader" type="int" transient="false" volatile="false" value="16843455" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="overscrollMode" type="int" transient="false" volatile="false" value="16843457" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="padding" type="int" transient="false" Loading Loading @@ -176454,6 +176487,17 @@ visibility="public" > </method> <method name="getOverscrollMode" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getPaddingBottom" return="int" abstract="false" Loading Loading @@ -177594,6 +177638,25 @@ <parameter name="heightMeasureSpec" type="int"> </parameter> </method> <method name="onOverscrolled" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > <parameter name="scrollX" type="int"> </parameter> <parameter name="scrollY" type="int"> </parameter> <parameter name="clampedX" type="boolean"> </parameter> <parameter name="clampedY" type="boolean"> </parameter> </method> <method name="onRestoreInstanceState" return="void" abstract="false" Loading Loading @@ -177747,6 +177810,35 @@ <parameter name="visibility" type="int"> </parameter> </method> <method name="overscrollBy" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="protected" > <parameter name="deltaX" type="int"> </parameter> <parameter name="deltaY" type="int"> </parameter> <parameter name="scrollX" type="int"> </parameter> <parameter name="scrollY" type="int"> </parameter> <parameter name="scrollRangeX" type="int"> </parameter> <parameter name="scrollRangeY" type="int"> </parameter> <parameter name="maxOverscrollX" type="int"> </parameter> <parameter name="maxOverscrollY" type="int"> </parameter> <parameter name="isTouchEvent" type="boolean"> </parameter> </method> <method name="performClick" return="boolean" abstract="false" Loading Loading @@ -178573,6 +178665,19 @@ <parameter name="l" type="android.view.View.OnTouchListener"> </parameter> </method> <method name="setOverscrollMode" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="overscrollMode" type="int"> </parameter> </method> <method name="setPadding" return="void" abstract="false" Loading Loading @@ -179195,6 +179300,39 @@ visibility="public" > </field> <field name="OVERSCROLL_ALWAYS" type="int" transient="false" volatile="false" value="0" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="OVERSCROLL_IF_CONTENT_SCROLLS" type="int" transient="false" volatile="false" value="1" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="OVERSCROLL_NEVER" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET" type="int[]" transient="false" Loading Loading @@ -194039,6 +194177,17 @@ visibility="public" > </method> <method name="getUseWebViewBackgroundForOverscrollBackground" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getUseWideViewPort" return="boolean" abstract="false" Loading Loading @@ -194631,6 +194780,19 @@ <parameter name="use" type="boolean"> </parameter> </method> <method name="setUseWebViewBackgroundForOverscrollBackground" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="view" type="boolean"> </parameter> </method> <method name="setUseWideViewPort" return="void" abstract="false" Loading Loading @@ -205241,6 +205403,28 @@ visibility="public" > </method> <method name="getOverscrollFooter" return="android.graphics.drawable.Drawable" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getOverscrollHeader" return="android.graphics.drawable.Drawable" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isItemChecked" return="boolean" abstract="false" Loading Loading @@ -205386,6 +205570,32 @@ <parameter name="itemsCanFocus" type="boolean"> </parameter> </method> <method name="setOverscrollFooter" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="footer" type="android.graphics.drawable.Drawable"> </parameter> </method> <method name="setOverscrollHeader" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="header" type="android.graphics.drawable.Drawable"> </parameter> </method> <method name="setSelection" return="void" abstract="false" Loading Loading @@ -205957,6 +206167,331 @@ </parameter> </method> </interface> <class name="OverScroller" extends="java.lang.Object" abstract="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <constructor name="OverScroller" type="android.widget.OverScroller" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="context" type="android.content.Context"> </parameter> </constructor> <constructor name="OverScroller" type="android.widget.OverScroller" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="context" type="android.content.Context"> </parameter> <parameter name="interpolator" type="android.view.animation.Interpolator"> </parameter> </constructor> <constructor name="OverScroller" type="android.widget.OverScroller" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="context" type="android.content.Context"> </parameter> <parameter name="interpolator" type="android.view.animation.Interpolator"> </parameter> <parameter name="bounceCoefficientX" type="float"> </parameter> <parameter name="bounceCoefficientY" type="float"> </parameter> </constructor> <method name="abortAnimation" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="computeScrollOffset" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="fling" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="velocityX" type="int"> </parameter> <parameter name="velocityY" type="int"> </parameter> <parameter name="minX" type="int"> </parameter> <parameter name="maxX" type="int"> </parameter> <parameter name="minY" type="int"> </parameter> <parameter name="maxY" type="int"> </parameter> </method> <method name="fling" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="velocityX" type="int"> </parameter> <parameter name="velocityY" type="int"> </parameter> <parameter name="minX" type="int"> </parameter> <parameter name="maxX" type="int"> </parameter> <parameter name="minY" type="int"> </parameter> <parameter name="maxY" type="int"> </parameter> <parameter name="overX" type="int"> </parameter> <parameter name="overY" type="int"> </parameter> </method> <method name="forceFinished" return="void" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <parameter name="finished" type="boolean"> </parameter> </method> <method name="getCurrX" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getCurrY" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getFinalX" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getFinalY" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getStartX" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="getStartY" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="isFinished" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > </method> <method name="isOverscrolled" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="notifyHorizontalEdgeReached" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="finalX" type="int"> </parameter> <parameter name="overX" type="int"> </parameter> </method> <method name="notifyVerticalEdgeReached" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startY" type="int"> </parameter> <parameter name="finalY" type="int"> </parameter> <parameter name="overY" type="int"> </parameter> </method> <method name="springback" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="minX" type="int"> </parameter> <parameter name="maxX" type="int"> </parameter> <parameter name="minY" type="int"> </parameter> <parameter name="maxY" type="int"> </parameter> </method> <method name="startScroll" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="dx" type="int"> </parameter> <parameter name="dy" type="int"> </parameter> </method> <method name="startScroll" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="startX" type="int"> </parameter> <parameter name="startY" type="int"> </parameter> <parameter name="dx" type="int"> </parameter> <parameter name="dy" type="int"> </parameter> <parameter name="duration" type="int"> </parameter> </method> </class> <class name="PopupWindow" extends="java.lang.Object" abstract="false"
core/java/android/provider/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -2323,6 +2323,12 @@ public final class Settings { */ public static final String QUIET_HOURS_DIM = "quiet_hours_dim"; /** * Whether to allow overscrolling (edge bounce effect on lists) * @hide */ public static final String ALLOW_OVERSCROLL = "allow_overscroll"; /** * Settings to backup. This is here so that it's in the same place as the settings * keys and easy to update. Loading
core/java/android/view/View.java +197 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.ScrollBarDrawable; import android.provider.Settings; import java.lang.ref.SoftReference; import java.lang.reflect.InvocationTargetException; Loading Loading @@ -1520,6 +1521,40 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility */ private static final int AWAKEN_SCROLL_BARS_ON_ATTACH = 0x08000000; /** * Always allow a user to overscroll this view, provided it is a * view that can scroll. * * @see #getOverscrollMode() * @see #setOverscrollMode(int) */ public static final int OVERSCROLL_ALWAYS = 0; /** * Allow a user to overscroll this view only if the content is large * enough to meaningfully scroll, provided it is a view that can scroll. * * @see #getOverscrollMode() * @see #setOverscrollMode(int) */ public static final int OVERSCROLL_IF_CONTENT_SCROLLS = 1; /** * Never allow a user to overscroll this view. * * @see #getOverscrollMode() * @see #setOverscrollMode(int) */ public static final int OVERSCROLL_NEVER = 2; /** * Controls the overscroll mode for this view. * See {@link #overscrollBy(int, int, int, int, int, int, int, int, boolean)}, * {@link #OVERSCROLL_ALWAYS}, {@link #OVERSCROLL_IF_CONTENT_SCROLLS}, * and {@link #OVERSCROLL_NEVER}. */ private int mOverscrollMode = OVERSCROLL_ALWAYS; /** * The parent this view is attached to. * {@hide} Loading Loading @@ -2076,6 +2111,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility }); } break; case R.styleable.View_overscrollMode: mOverscrollMode = a.getInt(attr, OVERSCROLL_ALWAYS); break; } } Loading Loading @@ -8668,6 +8706,165 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility return factory.inflate(resource, root); } /** * Scroll the view with standard behavior for scrolling beyond the normal * content boundaries. Views that call this method should override * {@link #onOverscrolled(int, int, boolean, boolean)} to respond to the * results of an overscroll operation. * * Views can use this method to handle any touch or fling-based scrolling. * * @param deltaX Change in X in pixels * @param deltaY Change in Y in pixels * @param scrollX Current X scroll value in pixels before applying deltaX * @param scrollY Current Y scroll value in pixels before applying deltaY * @param scrollRangeX Maximum content scroll range along the X axis * @param scrollRangeY Maximum content scroll range along the Y axis * @param maxOverscrollX Number of pixels to overscroll by in either direction * along the X axis. * @param maxOverscrollY Number of pixels to overscroll by in either direction * along the Y axis. * @param isTouchEvent true if this scroll operation is the result of a touch event. * @return true if scrolling was clamped to an overscroll boundary along either * axis, false otherwise. */ protected boolean overscrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverscrollX, int maxOverscrollY, boolean isTouchEvent) { final int overscrollMode = getOverscrollMode(); final boolean canScrollHorizontal = computeHorizontalScrollRange() > computeHorizontalScrollExtent(); final boolean canScrollVertical = computeVerticalScrollRange() > computeVerticalScrollExtent(); final boolean overscrollHorizontal = overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && canScrollHorizontal); final boolean overscrollVertical = overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && canScrollVertical); int newScrollX = scrollX + deltaX; if (overscrollHorizontal) { // Scale the scroll amount if we're in the dropoff zone final int dropoffX = maxOverscrollX / 2; final int dropoffLeft = -dropoffX; final int dropoffRight = dropoffX + scrollRangeX; if ((scrollX < dropoffLeft && deltaX < 0) || (scrollX > dropoffRight && deltaX > 0)) { newScrollX = scrollX + deltaX / 2; } else { if (newScrollX > dropoffRight && deltaX > 0) { int extra = newScrollX - dropoffRight; newScrollX = dropoffRight + extra / 2; } else if (newScrollX < dropoffLeft && deltaX < 0) { int extra = newScrollX - dropoffLeft; newScrollX = dropoffLeft + extra / 2; } } } else { maxOverscrollX = 0; } int newScrollY = scrollY + deltaY; if (overscrollVertical) { final int dropoffY = maxOverscrollY / 2; final int dropoffTop = -dropoffY; final int dropoffBottom = dropoffY + scrollRangeY; if ((scrollY < dropoffTop && deltaY < 0) || (scrollY > dropoffBottom && deltaY > 0)) { newScrollY = scrollY + deltaY / 2; } else { if (newScrollY > dropoffBottom && deltaY > 0) { int extra = newScrollY - dropoffBottom; newScrollY = dropoffBottom + extra / 2; } else if (newScrollY < dropoffTop && deltaY < 0) { int extra = newScrollY - dropoffTop; newScrollY = dropoffTop + extra / 2; } } } else { maxOverscrollY = 0; } // Clamp values if at the limits and record final int left = -maxOverscrollX; final int right = maxOverscrollX + scrollRangeX; final int top = -maxOverscrollY; final int bottom = maxOverscrollY + scrollRangeY; boolean clampedX = false; if (newScrollX > right) { newScrollX = right; clampedX = true; } else if (newScrollX < left) { newScrollX = left; clampedX = true; } boolean clampedY = false; if (newScrollY > bottom) { newScrollY = bottom; clampedY = true; } else if (newScrollY < top) { newScrollY = top; clampedY = true; } onOverscrolled(newScrollX, newScrollY, clampedX, clampedY); return clampedX || clampedY; } /** * Called by {@link #overscrollBy(int, int, int, int, int, int, int, int, boolean)} to * respond to the results of an overscroll operation. * * @param scrollX New X scroll value in pixels * @param scrollY New Y scroll value in pixels * @param clampedX True if scrollX was clamped to an overscroll boundary * @param clampedY True if scrollY was clamped to an overscroll boundary */ protected void onOverscrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { // Intentionally empty. } /** * Returns the overscroll mode for this view. The result will be * one of {@link #OVERSCROLL_ALWAYS} (default), {@link #OVERSCROLL_IF_CONTENT_SCROLLS} * (allow overscrolling only if the view content is larger than the container), * or {@link #OVERSCROLL_NEVER}. * * @return This view's overscroll mode. */ public int getOverscrollMode() { if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.ALLOW_OVERSCROLL, 1) <= 0) return OVERSCROLL_NEVER; return mOverscrollMode; } /** * Set the overscroll mode for this view. Valid overscroll modes are * {@link #OVERSCROLL_ALWAYS} (default), {@link #OVERSCROLL_IF_CONTENT_SCROLLS} * (allow overscrolling only if the view content is larger than the container), * or {@link #OVERSCROLL_NEVER}. * * Setting the overscroll mode of a view will have an effect only if the * view is capable of scrolling. * * @param overscrollMode The new overscroll mode for this view. */ public void setOverscrollMode(int overscrollMode) { if (overscrollMode != OVERSCROLL_ALWAYS && overscrollMode != OVERSCROLL_IF_CONTENT_SCROLLS && overscrollMode != OVERSCROLL_NEVER) { throw new IllegalArgumentException("Invalid overscroll mode " + overscrollMode); } mOverscrollMode = overscrollMode; } /** * A MeasureSpec encapsulates the layout requirements passed from parent to child. * Each MeasureSpec represents a requirement for either the width or the height. Loading
core/java/android/webkit/WebSettings.java +18 −0 Original line number Diff line number Diff line Loading @@ -208,6 +208,7 @@ public class WebSettings { private boolean mBuiltInZoomControls = false; private boolean mAllowFileAccess = true; private boolean mLoadWithOverviewMode = false; private boolean mUseWebViewBackgroundOverscrollBackground = true; // private WebSettings, not accessible by the host activity static private int mDoubleTapToastCount = 3; Loading Loading @@ -493,6 +494,23 @@ public class WebSettings { return mLoadWithOverviewMode; } /** * Set whether the WebView uses its background for over scroll background. * If true, it will use the WebView's background. If false, it will use an * internal pattern. Default is true. */ public void setUseWebViewBackgroundForOverscrollBackground(boolean view) { mUseWebViewBackgroundOverscrollBackground = view; } /** * Returns true if this WebView uses WebView's background instead of * internal pattern for over scroll background. */ public boolean getUseWebViewBackgroundForOverscrollBackground() { return mUseWebViewBackgroundOverscrollBackground; } /** * Store whether the WebView is saving form data. */ Loading
core/java/android/webkit/WebView.java +145 −39 File changed.Preview size limit exceeded, changes collapsed. Show changes