Merge "[Fingerprint] Make enroll progress bar scalable"
This commit is contained in:
@@ -23,13 +23,12 @@ import android.animation.ValueAnimator;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.DialogFragment;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.drawable.Animatable2;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
@@ -37,7 +36,6 @@ import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -75,7 +73,6 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
private static final int ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN = 3;
|
||||
|
||||
private ProgressBar mProgressBar;
|
||||
private ImageView mFingerprintAnimator;
|
||||
private ObjectAnimator mProgressAnim;
|
||||
private TextView mStartMessage;
|
||||
private TextView mRepeatMessage;
|
||||
@@ -87,6 +84,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
private FingerprintEnrollSidecar mSidecar;
|
||||
private boolean mAnimationCancelled;
|
||||
private AnimatedVectorDrawable mIconAnimationDrawable;
|
||||
private Drawable mIconBackgroundDrawable;
|
||||
private int mIndicatorBackgroundRestingColor;
|
||||
private int mIndicatorBackgroundActivatedColor;
|
||||
private boolean mRestoring;
|
||||
@@ -100,8 +98,11 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
mRepeatMessage = (TextView) findViewById(R.id.repeat_message);
|
||||
mErrorText = (TextView) findViewById(R.id.error_text);
|
||||
mProgressBar = (ProgressBar) findViewById(R.id.fingerprint_progress_bar);
|
||||
mFingerprintAnimator = (ImageView) findViewById(R.id.fingerprint_animator);
|
||||
mIconAnimationDrawable = (AnimatedVectorDrawable) mFingerprintAnimator.getDrawable();
|
||||
final LayerDrawable fingerprintDrawable = (LayerDrawable) mProgressBar.getBackground();
|
||||
mIconAnimationDrawable = (AnimatedVectorDrawable)
|
||||
fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_animation);
|
||||
mIconBackgroundDrawable =
|
||||
fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_background);
|
||||
mIconAnimationDrawable.registerAnimationCallback(mIconAnimationCallback);
|
||||
mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(
|
||||
this, android.R.interpolator.fast_out_slow_in);
|
||||
@@ -109,7 +110,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
this, android.R.interpolator.linear_out_slow_in);
|
||||
mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(
|
||||
this, android.R.interpolator.fast_out_linear_in);
|
||||
mFingerprintAnimator.setOnTouchListener(new View.OnTouchListener() {
|
||||
mProgressBar.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
||||
@@ -117,12 +118,12 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
if (mIconTouchCount == ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN) {
|
||||
showIconTouchDialog();
|
||||
} else {
|
||||
mFingerprintAnimator.postDelayed(mShowDialogRunnable,
|
||||
mProgressBar.postDelayed(mShowDialogRunnable,
|
||||
ICON_TOUCH_DURATION_UNTIL_DIALOG_SHOWN);
|
||||
}
|
||||
} else if (event.getActionMasked() == MotionEvent.ACTION_CANCEL
|
||||
|| event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||
mFingerprintAnimator.removeCallbacks(mShowDialogRunnable);
|
||||
mProgressBar.removeCallbacks(mShowDialogRunnable);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -131,6 +132,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
= getColor(R.color.fingerprint_indicator_background_resting);
|
||||
mIndicatorBackgroundActivatedColor
|
||||
= getColor(R.color.fingerprint_indicator_background_activated);
|
||||
mIconBackgroundDrawable.setTint(mIndicatorBackgroundRestingColor);
|
||||
mRestoring = savedInstanceState != null;
|
||||
}
|
||||
|
||||
@@ -213,8 +215,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
new ValueAnimator.AnimatorUpdateListener() {
|
||||
@Override
|
||||
public void onAnimationUpdate(ValueAnimator animation) {
|
||||
mFingerprintAnimator.setBackgroundTintList(ColorStateList.valueOf(
|
||||
(Integer) animation.getAnimatedValue()));
|
||||
mIconBackgroundDrawable.setTint((Integer) animation.getAnimatedValue());
|
||||
}
|
||||
};
|
||||
anim.addUpdateListener(listener);
|
||||
@@ -400,7 +401,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
|
||||
}
|
||||
|
||||
// Start animation after it has ended.
|
||||
mFingerprintAnimator.post(new Runnable() {
|
||||
mProgressBar.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startIconAnimation();
|
||||
|
57
src/com/android/settings/widget/RingProgressBar.java
Normal file
57
src/com/android/settings/widget/RingProgressBar.java
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
* A (determinate) progress bar in the form of a ring. The progress bar goes clockwise starting
|
||||
* from the 12 o'clock position. This view maintain equal width and height using a strategy similar
|
||||
* to "centerInside" for ImageView.
|
||||
*/
|
||||
public class RingProgressBar extends ProgressBar {
|
||||
|
||||
public RingProgressBar(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public RingProgressBar(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
this(context, attrs, defStyleAttr, R.style.RingProgressBarStyle);
|
||||
}
|
||||
|
||||
public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
final int measuredHeight = getMeasuredHeight();
|
||||
final int measuredWidth = getMeasuredWidth();
|
||||
final int shortSide = Math.min(measuredHeight, measuredWidth);
|
||||
setMeasuredDimension(shortSide, shortSide);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user