Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 59c1ac83 authored by Alan Viverette's avatar Alan Viverette Committed by android-build-merger
Browse files

Merge "Add scroll indicators to resolver list layouts" into nyc-dev

am: a27c1df9

* commit 'a27c1df9':
  Add scroll indicators to resolver list layouts

Change-Id: Ie0eee40b6f08756cec5894c7ceed6a3508293dbc
parents 9015b219 a27c1df9
Loading
Loading
Loading
Loading
+48 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -106,6 +115,8 @@ public class ResolverDrawerLayout extends ViewGroup {
                }
            };

    private final int[] mTempOffset = new int[2];

    public ResolverDrawerLayout(Context context) {
        this(context, null);
    }
@@ -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();
@@ -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();
@@ -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
@@ -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;
@@ -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();
@@ -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);
+66 −56
Original line number Diff line number Diff line
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
+89 −75
Original line number Diff line number Diff line
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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
@@ -140,6 +154,6 @@
        android:elevation="8dp"
        android:nestedScrollingEnabled="true"
        android:divider="@null"
        />
        android:scrollIndicators="top|bottom" />

</com.android.internal.widget.ResolverDrawerLayout>