Loading core/java/com/android/internal/widget/ResolverDrawerLayout.java +48 −4 Original line number Diff line number Diff line Loading @@ -17,9 +17,14 @@ package com.android.internal.widget; import android.annotation.NonNull; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -85,6 +90,10 @@ public class ResolverDrawerLayout extends ViewGroup { private final float mMinFlingVelocity; private final OverScroller mScroller; private final VelocityTracker mVelocityTracker; private final Drawable mScrollIndicatorDrawable; private final Drawable mFakeForeground; private View mButtonBar; private OnDismissedListener mOnDismissedListener; private RunOnDismissedListener mRunOnDismissedListener; Loading @@ -106,6 +115,8 @@ public class ResolverDrawerLayout extends ViewGroup { } }; private final int[] mTempOffset = new int[2]; public ResolverDrawerLayout(Context context) { this(context, null); } Loading @@ -127,6 +138,9 @@ public class ResolverDrawerLayout extends ViewGroup { mMaxCollapsedHeight); a.recycle(); mScrollIndicatorDrawable = mContext.getDrawable(R.drawable.scroll_indicator_material); mFakeForeground = new ColorDrawable(Color.TRANSPARENT); mScroller = new OverScroller(context, AnimationUtils.loadInterpolator(context, android.R.interpolator.decelerate_quint)); mVelocityTracker = VelocityTracker.obtain(); Loading @@ -138,6 +152,13 @@ public class ResolverDrawerLayout extends ViewGroup { setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); } @Override protected void onFinishInflate() { super.onFinishInflate(); mButtonBar = findViewById(R.id.button_bar); } public void setSmallCollapsed(boolean smallCollapsed) { mSmallCollapsed = smallCollapsed; requestLayout(); Loading Loading @@ -202,8 +223,7 @@ public class ResolverDrawerLayout extends ViewGroup { } final boolean isCollapsedNew = mCollapseOffset != 0; if (isCollapsedOld != isCollapsedNew) { notifyViewAccessibilityStateChangedIfNeeded( AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); onCollapsedChanged(isCollapsedNew); } } else { // Start out collapsed at first unless we restored state for otherwise Loading Loading @@ -442,8 +462,7 @@ public class ResolverDrawerLayout extends ViewGroup { mTopOffset += dy; final boolean isCollapsedNew = newPos != 0; if (isCollapsedOld != isCollapsedNew) { notifyViewAccessibilityStateChangedIfNeeded( AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); onCollapsedChanged(isCollapsedNew); } postInvalidateOnAnimation(); return dy; Loading @@ -451,6 +470,14 @@ public class ResolverDrawerLayout extends ViewGroup { return 0; } private void onCollapsedChanged(boolean isCollapsed) { notifyViewAccessibilityStateChangedIfNeeded( AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); // Set a fake foreground so that we receive onDrawForeground(). setForeground(isCollapsed ? mFakeForeground : null); } void dispatchOnDismissed() { if (mOnDismissedListener != null) { mOnDismissedListener.onDismissed(); Loading Loading @@ -708,6 +735,23 @@ public class ResolverDrawerLayout extends ViewGroup { return false; } @Override public void onDrawForeground(Canvas canvas) { if (isCollapsed() && mButtonBar != null) { // Draw the scroll indicator directly above the button bar. final int height = mScrollIndicatorDrawable.getIntrinsicHeight(); mButtonBar.getLocationInWindow(mTempOffset); final int barTop = mTempOffset[1]; getLocationInWindow(mTempOffset); final int myTop = mTempOffset[1]; final int top = (barTop - myTop) - height; mScrollIndicatorDrawable.setBounds(0, top, getWidth(), top + height); mScrollIndicatorDrawable.draw(canvas); } super.onDrawForeground(canvas); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int sourceWidth = MeasureSpec.getSize(widthMeasureSpec); Loading core/res/res/layout/resolver_list.xml +66 −56 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ android:layout_alwaysShow="true" android:elevation="8dp" android:background="@color/white"> <TextView android:id="@+id/profile_button" <TextView android:id="@+id/profile_button" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginEnd="8dp" Loading @@ -45,7 +47,9 @@ android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:singleLine="true" /> <TextView android:id="@+id/title" <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="56dp" Loading @@ -68,9 +72,11 @@ android:background="@color/white" android:elevation="8dp" android:nestedScrollingEnabled="true" android:scrollIndicators="top|bottom" android:divider="@null" /> <TextView android:id="@+id/empty" <TextView android:id="@+id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alwaysShow="true" Loading @@ -82,7 +88,7 @@ <LinearLayout android:id="@+id/button_bar" android:visibility="gone" style="?android:attr/buttonBarStyle" style="?attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_ignoreOffset="true" Loading @@ -97,22 +103,26 @@ android:paddingStart="12dp" android:paddingEnd="12dp" android:elevation="8dp"> <Button android:id="@+id/button_once" <Button android:id="@+id/button_once" android:layout_width="wrap_content" android:layout_gravity="start" android:maxLines="2" style="?android:attr/buttonBarNegativeButtonStyle" style="?attr/buttonBarNegativeButtonStyle" android:minHeight="@dimen/alert_dialog_button_bar_height" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_once" android:onClick="onButtonClick" /> <Button android:id="@+id/button_always" <Button android:id="@+id/button_always" android:layout_width="wrap_content" android:layout_gravity="end" android:maxLines="2" android:minHeight="@dimen/alert_dialog_button_bar_height" style="?android:attr/buttonBarPositiveButtonStyle" style="?attr/buttonBarPositiveButtonStyle" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_always" Loading core/res/res/layout/resolver_list_with_default.xml +89 −75 Original line number Diff line number Diff line Loading @@ -22,8 +22,7 @@ android:layout_height="match_parent" android:maxWidth="@dimen/resolver_max_width" android:maxCollapsedHeight="144dp" android:id="@id/contentPanel" > android:id="@id/contentPanel"> <LinearLayout android:layout_width="match_parent" Loading @@ -38,7 +37,8 @@ android:layout_height="64dp" android:orientation="horizontal"> <ImageView android:id="@+id/icon" <ImageView android:id="@+id/icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="start|top" Loading @@ -46,15 +46,19 @@ android:layout_marginEnd="16dp" android:layout_marginTop="20dp" android:scaleType="fitCenter" /> <TextView android:id="@+id/title" <TextView android:id="@+id/title" android:layout_width="0dp" android:layout_weight="1" android:layout_height="?android:attr/listPreferredItemHeight" android:layout_height="?attr/listPreferredItemHeight" android:layout_marginStart="16dp" android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?attr/textAppearanceMedium" android:gravity="start|center_vertical" android:paddingEnd="16dp" /> <LinearLayout android:id="@+id/profile_button" <LinearLayout android:id="@+id/profile_button" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginTop="4dp" Loading @@ -66,7 +70,9 @@ android:focusable="true" android:visibility="gone" style="?attr/borderlessButtonStyle"> <ImageView android:id="@+id/icon" <ImageView android:id="@+id/icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="start|center_vertical" Loading @@ -74,7 +80,9 @@ android:layout_marginTop="12dp" android:layout_marginBottom="12dp" android:scaleType="fitCenter" /> <TextView android:id="@id/text1" <TextView android:id="@id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|center_vertical" Loading @@ -90,7 +98,7 @@ <LinearLayout android:id="@+id/button_bar" android:visibility="gone" style="?android:attr/buttonBarStyle" style="?attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alwaysShow="true" Loading @@ -104,30 +112,36 @@ android:paddingEnd="12dp" android:background="@color/white" android:elevation="8dp"> <Button android:id="@+id/button_once" <Button android:id="@+id/button_once" android:layout_width="wrap_content" android:layout_gravity="start" android:maxLines="2" style="?android:attr/buttonBarNegativeButtonStyle" style="?attr/buttonBarNegativeButtonStyle" android:minHeight="@dimen/alert_dialog_button_bar_height" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_once" android:onClick="onButtonClick" /> <Button android:id="@+id/button_always" <Button android:id="@+id/button_always" android:layout_width="wrap_content" android:layout_gravity="end" android:maxLines="2" android:minHeight="@dimen/alert_dialog_button_bar_height" style="?android:attr/buttonBarPositiveButtonStyle" style="?attr/buttonBarPositiveButtonStyle" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_always" android:onClick="onButtonClick" /> </LinearLayout> <View android:layout_width="match_parent" <View android:layout_width="match_parent" android:layout_height="1dp" android:background="?android:attr/dividerVertical" /> android:background="?attr/dividerVertical" /> </LinearLayout> <ListView Loading @@ -140,6 +154,6 @@ android:elevation="8dp" android:nestedScrollingEnabled="true" android:divider="@null" /> android:scrollIndicators="top|bottom" /> </com.android.internal.widget.ResolverDrawerLayout> Loading
core/java/com/android/internal/widget/ResolverDrawerLayout.java +48 −4 Original line number Diff line number Diff line Loading @@ -17,9 +17,14 @@ package com.android.internal.widget; import android.annotation.NonNull; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -85,6 +90,10 @@ public class ResolverDrawerLayout extends ViewGroup { private final float mMinFlingVelocity; private final OverScroller mScroller; private final VelocityTracker mVelocityTracker; private final Drawable mScrollIndicatorDrawable; private final Drawable mFakeForeground; private View mButtonBar; private OnDismissedListener mOnDismissedListener; private RunOnDismissedListener mRunOnDismissedListener; Loading @@ -106,6 +115,8 @@ public class ResolverDrawerLayout extends ViewGroup { } }; private final int[] mTempOffset = new int[2]; public ResolverDrawerLayout(Context context) { this(context, null); } Loading @@ -127,6 +138,9 @@ public class ResolverDrawerLayout extends ViewGroup { mMaxCollapsedHeight); a.recycle(); mScrollIndicatorDrawable = mContext.getDrawable(R.drawable.scroll_indicator_material); mFakeForeground = new ColorDrawable(Color.TRANSPARENT); mScroller = new OverScroller(context, AnimationUtils.loadInterpolator(context, android.R.interpolator.decelerate_quint)); mVelocityTracker = VelocityTracker.obtain(); Loading @@ -138,6 +152,13 @@ public class ResolverDrawerLayout extends ViewGroup { setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); } @Override protected void onFinishInflate() { super.onFinishInflate(); mButtonBar = findViewById(R.id.button_bar); } public void setSmallCollapsed(boolean smallCollapsed) { mSmallCollapsed = smallCollapsed; requestLayout(); Loading Loading @@ -202,8 +223,7 @@ public class ResolverDrawerLayout extends ViewGroup { } final boolean isCollapsedNew = mCollapseOffset != 0; if (isCollapsedOld != isCollapsedNew) { notifyViewAccessibilityStateChangedIfNeeded( AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); onCollapsedChanged(isCollapsedNew); } } else { // Start out collapsed at first unless we restored state for otherwise Loading Loading @@ -442,8 +462,7 @@ public class ResolverDrawerLayout extends ViewGroup { mTopOffset += dy; final boolean isCollapsedNew = newPos != 0; if (isCollapsedOld != isCollapsedNew) { notifyViewAccessibilityStateChangedIfNeeded( AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); onCollapsedChanged(isCollapsedNew); } postInvalidateOnAnimation(); return dy; Loading @@ -451,6 +470,14 @@ public class ResolverDrawerLayout extends ViewGroup { return 0; } private void onCollapsedChanged(boolean isCollapsed) { notifyViewAccessibilityStateChangedIfNeeded( AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); // Set a fake foreground so that we receive onDrawForeground(). setForeground(isCollapsed ? mFakeForeground : null); } void dispatchOnDismissed() { if (mOnDismissedListener != null) { mOnDismissedListener.onDismissed(); Loading Loading @@ -708,6 +735,23 @@ public class ResolverDrawerLayout extends ViewGroup { return false; } @Override public void onDrawForeground(Canvas canvas) { if (isCollapsed() && mButtonBar != null) { // Draw the scroll indicator directly above the button bar. final int height = mScrollIndicatorDrawable.getIntrinsicHeight(); mButtonBar.getLocationInWindow(mTempOffset); final int barTop = mTempOffset[1]; getLocationInWindow(mTempOffset); final int myTop = mTempOffset[1]; final int top = (barTop - myTop) - height; mScrollIndicatorDrawable.setBounds(0, top, getWidth(), top + height); mScrollIndicatorDrawable.draw(canvas); } super.onDrawForeground(canvas); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int sourceWidth = MeasureSpec.getSize(widthMeasureSpec); Loading
core/res/res/layout/resolver_list.xml +66 −56 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ android:layout_alwaysShow="true" android:elevation="8dp" android:background="@color/white"> <TextView android:id="@+id/profile_button" <TextView android:id="@+id/profile_button" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginEnd="8dp" Loading @@ -45,7 +47,9 @@ android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:singleLine="true" /> <TextView android:id="@+id/title" <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="56dp" Loading @@ -68,9 +72,11 @@ android:background="@color/white" android:elevation="8dp" android:nestedScrollingEnabled="true" android:scrollIndicators="top|bottom" android:divider="@null" /> <TextView android:id="@+id/empty" <TextView android:id="@+id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alwaysShow="true" Loading @@ -82,7 +88,7 @@ <LinearLayout android:id="@+id/button_bar" android:visibility="gone" style="?android:attr/buttonBarStyle" style="?attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_ignoreOffset="true" Loading @@ -97,22 +103,26 @@ android:paddingStart="12dp" android:paddingEnd="12dp" android:elevation="8dp"> <Button android:id="@+id/button_once" <Button android:id="@+id/button_once" android:layout_width="wrap_content" android:layout_gravity="start" android:maxLines="2" style="?android:attr/buttonBarNegativeButtonStyle" style="?attr/buttonBarNegativeButtonStyle" android:minHeight="@dimen/alert_dialog_button_bar_height" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_once" android:onClick="onButtonClick" /> <Button android:id="@+id/button_always" <Button android:id="@+id/button_always" android:layout_width="wrap_content" android:layout_gravity="end" android:maxLines="2" android:minHeight="@dimen/alert_dialog_button_bar_height" style="?android:attr/buttonBarPositiveButtonStyle" style="?attr/buttonBarPositiveButtonStyle" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_always" Loading
core/res/res/layout/resolver_list_with_default.xml +89 −75 Original line number Diff line number Diff line Loading @@ -22,8 +22,7 @@ android:layout_height="match_parent" android:maxWidth="@dimen/resolver_max_width" android:maxCollapsedHeight="144dp" android:id="@id/contentPanel" > android:id="@id/contentPanel"> <LinearLayout android:layout_width="match_parent" Loading @@ -38,7 +37,8 @@ android:layout_height="64dp" android:orientation="horizontal"> <ImageView android:id="@+id/icon" <ImageView android:id="@+id/icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="start|top" Loading @@ -46,15 +46,19 @@ android:layout_marginEnd="16dp" android:layout_marginTop="20dp" android:scaleType="fitCenter" /> <TextView android:id="@+id/title" <TextView android:id="@+id/title" android:layout_width="0dp" android:layout_weight="1" android:layout_height="?android:attr/listPreferredItemHeight" android:layout_height="?attr/listPreferredItemHeight" android:layout_marginStart="16dp" android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?attr/textAppearanceMedium" android:gravity="start|center_vertical" android:paddingEnd="16dp" /> <LinearLayout android:id="@+id/profile_button" <LinearLayout android:id="@+id/profile_button" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginTop="4dp" Loading @@ -66,7 +70,9 @@ android:focusable="true" android:visibility="gone" style="?attr/borderlessButtonStyle"> <ImageView android:id="@+id/icon" <ImageView android:id="@+id/icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="start|center_vertical" Loading @@ -74,7 +80,9 @@ android:layout_marginTop="12dp" android:layout_marginBottom="12dp" android:scaleType="fitCenter" /> <TextView android:id="@id/text1" <TextView android:id="@id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|center_vertical" Loading @@ -90,7 +98,7 @@ <LinearLayout android:id="@+id/button_bar" android:visibility="gone" style="?android:attr/buttonBarStyle" style="?attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alwaysShow="true" Loading @@ -104,30 +112,36 @@ android:paddingEnd="12dp" android:background="@color/white" android:elevation="8dp"> <Button android:id="@+id/button_once" <Button android:id="@+id/button_once" android:layout_width="wrap_content" android:layout_gravity="start" android:maxLines="2" style="?android:attr/buttonBarNegativeButtonStyle" style="?attr/buttonBarNegativeButtonStyle" android:minHeight="@dimen/alert_dialog_button_bar_height" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_once" android:onClick="onButtonClick" /> <Button android:id="@+id/button_always" <Button android:id="@+id/button_always" android:layout_width="wrap_content" android:layout_gravity="end" android:maxLines="2" android:minHeight="@dimen/alert_dialog_button_bar_height" style="?android:attr/buttonBarPositiveButtonStyle" style="?attr/buttonBarPositiveButtonStyle" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_always" android:onClick="onButtonClick" /> </LinearLayout> <View android:layout_width="match_parent" <View android:layout_width="match_parent" android:layout_height="1dp" android:background="?android:attr/dividerVertical" /> android:background="?attr/dividerVertical" /> </LinearLayout> <ListView Loading @@ -140,6 +154,6 @@ android:elevation="8dp" android:nestedScrollingEnabled="true" android:divider="@null" /> android:scrollIndicators="top|bottom" /> </com.android.internal.widget.ResolverDrawerLayout>