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

Commit 05ebc568 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Setting NumPadAnimator only if background is RippleDrawable" into sc-dev

parents 63a50896 43b7eada
Loading
Loading
Loading
Loading
+27 −6
Original line number Diff line number Diff line
@@ -16,22 +16,36 @@
package com.android.keyguard;

import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
import android.graphics.drawable.VectorDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.annotation.Nullable;

import com.android.settingslib.Utils;
import com.android.systemui.R;

/**
 * Similar to the {@link NumPadKey}, but displays an image.
 */
public class NumPadButton extends AlphaOptimizedImageButton {

    @Nullable
    private NumPadAnimator mAnimator;

    public NumPadButton(Context context, AttributeSet attrs) {
        super(context, attrs);

        Drawable background = getBackground();
        if (background instanceof RippleDrawable) {
            mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(),
                    attrs.getStyleAttribute());
        } else {
            mAnimator = null;
        }
    }

    @Override
@@ -41,7 +55,7 @@ public class NumPadButton extends AlphaOptimizedImageButton {
        // Set width/height to the same value to ensure a smooth circle for the bg, but shrink
        // the height to match the old pin bouncer
        int width = getMeasuredWidth();
        int height = width;
        int height = mAnimator == null ? (int) (width * .75f) : width;

        setMeasuredDimension(getMeasuredWidth(), height);
    }
@@ -50,12 +64,12 @@ public class NumPadButton extends AlphaOptimizedImageButton {
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);

        mAnimator.onLayout(b - t);
        if (mAnimator != null) mAnimator.onLayout(b - t);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN && mAnimator != null) {
            mAnimator.start();
        }
        return super.onTouchEvent(event);
@@ -65,6 +79,13 @@ public class NumPadButton extends AlphaOptimizedImageButton {
     * Reload colors from resources.
     **/
    public void reloadColors() {
        if (mAnimator != null) {
            mAnimator.reloadColors(getContext());
	} else {
            // Needed for old style pin
            int textColor = Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary)
                    .getDefaultColor();
            ((VectorDrawable) getDrawable()).setTintList(ColorStateList.valueOf(textColor));
        }
    }
}
+15 −6
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.keyguard;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
import android.os.PowerManager;
import android.os.SystemClock;
@@ -30,6 +31,8 @@ import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager;
import android.widget.TextView;

import androidx.annotation.Nullable;

import com.android.internal.widget.LockPatternUtils;
import com.android.settingslib.Utils;
import com.android.systemui.R;
@@ -47,6 +50,7 @@ public class NumPadKey extends ViewGroup {
    private int mTextViewResId;
    private PasswordTextView mTextView;

    @Nullable
    private NumPadAnimator mAnimator;

    private View.OnClickListener mListener = new View.OnClickListener() {
@@ -126,8 +130,13 @@ public class NumPadKey extends ViewGroup {

        setContentDescription(mDigitText.getText().toString());

        mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(),
        Drawable background = getBackground();
        if (background instanceof RippleDrawable) {
            mAnimator = new NumPadAnimator(context, (RippleDrawable) background,
                    R.style.NumPadKey);
        } else {
            mAnimator = null;
        }
    }

    /**
@@ -141,14 +150,14 @@ public class NumPadKey extends ViewGroup {
        mDigitText.setTextColor(textColor);
        mKlondikeText.setTextColor(klondikeColor);

        mAnimator.reloadColors(getContext());
        if (mAnimator != null) mAnimator.reloadColors(getContext());
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
            doHapticKeyClick();
            mAnimator.start();
            if (mAnimator != null) mAnimator.start();
        }

        return super.onTouchEvent(event);
@@ -162,7 +171,7 @@ public class NumPadKey extends ViewGroup {
        // Set width/height to the same value to ensure a smooth circle for the bg, but shrink
        // the height to match the old pin bouncer
        int width = getMeasuredWidth();
        int height = width;
        int height = mAnimator == null ? (int) (width * .75f) : width;

        setMeasuredDimension(getMeasuredWidth(), height);
    }
@@ -183,7 +192,7 @@ public class NumPadKey extends ViewGroup {
        left = centerX - mKlondikeText.getMeasuredWidth() / 2;
        mKlondikeText.layout(left, top, left + mKlondikeText.getMeasuredWidth(), bottom);

        mAnimator.onLayout(b - t);
        if (mAnimator != null) mAnimator.onLayout(b - t);
    }

    @Override