ADD week 5
This commit is contained in:
@@ -0,0 +1,335 @@
|
||||
package com.google.android.material.textfield;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.Editable;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Spinner;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.accessibility.AccessibilityManagerCompat;
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
|
||||
import com.google.android.material.R;
|
||||
import com.google.android.material.animation.AnimationUtils;
|
||||
import com.google.android.material.motion.MotionUtils;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
class DropdownMenuEndIconDelegate extends EndIconDelegate {
|
||||
private static final int DEFAULT_ANIMATION_FADE_IN_DURATION = 67;
|
||||
private static final int DEFAULT_ANIMATION_FADE_OUT_DURATION = 50;
|
||||
private static final boolean IS_LOLLIPOP = true;
|
||||
private AccessibilityManager accessibilityManager;
|
||||
private final int animationFadeInDuration;
|
||||
private final TimeInterpolator animationFadeInterpolator;
|
||||
private final int animationFadeOutDuration;
|
||||
private AutoCompleteTextView autoCompleteTextView;
|
||||
private long dropdownPopupActivatedAt;
|
||||
private boolean dropdownPopupDirty;
|
||||
private boolean editTextHasFocus;
|
||||
private ValueAnimator fadeInAnim;
|
||||
private ValueAnimator fadeOutAnim;
|
||||
private boolean isEndIconChecked;
|
||||
private final View.OnFocusChangeListener onEditTextFocusChangeListener;
|
||||
private final View.OnClickListener onIconClickListener;
|
||||
private final AccessibilityManagerCompat.TouchExplorationStateChangeListener touchExplorationStateChangeListener;
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
View.OnFocusChangeListener getOnEditTextFocusChangeListener() {
|
||||
return this.onEditTextFocusChangeListener;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
View.OnClickListener getOnIconClickListener() {
|
||||
return this.onIconClickListener;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
public AccessibilityManagerCompat.TouchExplorationStateChangeListener getTouchExplorationStateChangeListener() {
|
||||
return this.touchExplorationStateChangeListener;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
boolean isBoxBackgroundModeSupported(int i) {
|
||||
return i != 0;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
boolean isIconActivable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
boolean isIconActivated() {
|
||||
return this.editTextHasFocus;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
boolean isIconCheckable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
boolean isIconChecked() {
|
||||
return this.isEndIconChecked;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
boolean shouldTintIconOnError() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* renamed from: lambda$new$0$com-google-android-material-textfield-DropdownMenuEndIconDelegate, reason: not valid java name */
|
||||
/* synthetic */ void m273xd03fedd4(View view) {
|
||||
showHideDropdown();
|
||||
}
|
||||
|
||||
/* renamed from: lambda$new$1$com-google-android-material-textfield-DropdownMenuEndIconDelegate, reason: not valid java name */
|
||||
/* synthetic */ void m274xac016995(View view, boolean z) {
|
||||
this.editTextHasFocus = z;
|
||||
refreshIconState();
|
||||
if (z) {
|
||||
return;
|
||||
}
|
||||
setEndIconChecked(false);
|
||||
this.dropdownPopupDirty = false;
|
||||
}
|
||||
|
||||
/* renamed from: lambda$new$2$com-google-android-material-textfield-DropdownMenuEndIconDelegate, reason: not valid java name */
|
||||
/* synthetic */ void m275x87c2e556(boolean z) {
|
||||
AutoCompleteTextView autoCompleteTextView = this.autoCompleteTextView;
|
||||
if (autoCompleteTextView == null || EditTextUtils.isEditable(autoCompleteTextView)) {
|
||||
return;
|
||||
}
|
||||
ViewCompat.setImportantForAccessibility(this.endIconView, z ? 2 : 1);
|
||||
}
|
||||
|
||||
DropdownMenuEndIconDelegate(EndCompoundLayout endCompoundLayout) {
|
||||
super(endCompoundLayout);
|
||||
this.onIconClickListener = new View.OnClickListener() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate$$ExternalSyntheticLambda0
|
||||
@Override // android.view.View.OnClickListener
|
||||
public final void onClick(View view) {
|
||||
DropdownMenuEndIconDelegate.this.m273xd03fedd4(view);
|
||||
}
|
||||
};
|
||||
this.onEditTextFocusChangeListener = new View.OnFocusChangeListener() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate$$ExternalSyntheticLambda1
|
||||
@Override // android.view.View.OnFocusChangeListener
|
||||
public final void onFocusChange(View view, boolean z) {
|
||||
DropdownMenuEndIconDelegate.this.m274xac016995(view, z);
|
||||
}
|
||||
};
|
||||
this.touchExplorationStateChangeListener = new AccessibilityManagerCompat.TouchExplorationStateChangeListener() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate$$ExternalSyntheticLambda2
|
||||
@Override // androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener
|
||||
public final void onTouchExplorationStateChanged(boolean z) {
|
||||
DropdownMenuEndIconDelegate.this.m275x87c2e556(z);
|
||||
}
|
||||
};
|
||||
this.dropdownPopupActivatedAt = Long.MAX_VALUE;
|
||||
this.animationFadeInDuration = MotionUtils.resolveThemeDuration(endCompoundLayout.getContext(), R.attr.motionDurationShort3, 67);
|
||||
this.animationFadeOutDuration = MotionUtils.resolveThemeDuration(endCompoundLayout.getContext(), R.attr.motionDurationShort3, 50);
|
||||
this.animationFadeInterpolator = MotionUtils.resolveThemeInterpolator(endCompoundLayout.getContext(), R.attr.motionEasingLinearInterpolator, AnimationUtils.LINEAR_INTERPOLATOR);
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
void setUp() {
|
||||
initAnimators();
|
||||
this.accessibilityManager = (AccessibilityManager) this.context.getSystemService("accessibility");
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
void tearDown() {
|
||||
AutoCompleteTextView autoCompleteTextView = this.autoCompleteTextView;
|
||||
if (autoCompleteTextView != null) {
|
||||
autoCompleteTextView.setOnTouchListener(null);
|
||||
if (IS_LOLLIPOP) {
|
||||
this.autoCompleteTextView.setOnDismissListener(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
int getIconDrawableResId() {
|
||||
return IS_LOLLIPOP ? R.drawable.mtrl_dropdown_arrow : R.drawable.mtrl_ic_arrow_drop_down;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
int getIconContentDescriptionResId() {
|
||||
return R.string.exposed_dropdown_menu_content_description;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
public void onEditTextAttached(EditText editText) {
|
||||
this.autoCompleteTextView = castAutoCompleteTextViewOrThrow(editText);
|
||||
setUpDropdownShowHideBehavior();
|
||||
this.textInputLayout.setErrorIconDrawable((Drawable) null);
|
||||
if (!EditTextUtils.isEditable(editText) && this.accessibilityManager.isTouchExplorationEnabled()) {
|
||||
ViewCompat.setImportantForAccessibility(this.endIconView, 2);
|
||||
}
|
||||
this.textInputLayout.setEndIconVisible(true);
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
public void afterEditTextChanged(Editable editable) {
|
||||
if (this.accessibilityManager.isTouchExplorationEnabled() && EditTextUtils.isEditable(this.autoCompleteTextView) && !this.endIconView.hasFocus()) {
|
||||
this.autoCompleteTextView.dismissDropDown();
|
||||
}
|
||||
this.autoCompleteTextView.post(new Runnable() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate$$ExternalSyntheticLambda4
|
||||
@Override // java.lang.Runnable
|
||||
public final void run() {
|
||||
DropdownMenuEndIconDelegate.this.m271xae660ff2();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* renamed from: lambda$afterEditTextChanged$3$com-google-android-material-textfield-DropdownMenuEndIconDelegate, reason: not valid java name */
|
||||
/* synthetic */ void m271xae660ff2() {
|
||||
boolean isPopupShowing = this.autoCompleteTextView.isPopupShowing();
|
||||
setEndIconChecked(isPopupShowing);
|
||||
this.dropdownPopupDirty = isPopupShowing;
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
|
||||
if (!EditTextUtils.isEditable(this.autoCompleteTextView)) {
|
||||
accessibilityNodeInfoCompat.setClassName(Spinner.class.getName());
|
||||
}
|
||||
if (accessibilityNodeInfoCompat.isShowingHintText()) {
|
||||
accessibilityNodeInfoCompat.setHintText(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.google.android.material.textfield.EndIconDelegate
|
||||
public void onPopulateAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) {
|
||||
if (!this.accessibilityManager.isEnabled() || EditTextUtils.isEditable(this.autoCompleteTextView)) {
|
||||
return;
|
||||
}
|
||||
boolean z = accessibilityEvent.getEventType() == 32768 && this.isEndIconChecked && !this.autoCompleteTextView.isPopupShowing();
|
||||
if (accessibilityEvent.getEventType() == 1 || z) {
|
||||
showHideDropdown();
|
||||
updateDropdownPopupDirty();
|
||||
}
|
||||
}
|
||||
|
||||
private void showHideDropdown() {
|
||||
if (this.autoCompleteTextView == null) {
|
||||
return;
|
||||
}
|
||||
if (isDropdownPopupActive()) {
|
||||
this.dropdownPopupDirty = false;
|
||||
}
|
||||
if (this.dropdownPopupDirty) {
|
||||
this.dropdownPopupDirty = false;
|
||||
return;
|
||||
}
|
||||
if (IS_LOLLIPOP) {
|
||||
setEndIconChecked(!this.isEndIconChecked);
|
||||
} else {
|
||||
this.isEndIconChecked = !this.isEndIconChecked;
|
||||
refreshIconState();
|
||||
}
|
||||
if (this.isEndIconChecked) {
|
||||
this.autoCompleteTextView.requestFocus();
|
||||
this.autoCompleteTextView.showDropDown();
|
||||
} else {
|
||||
this.autoCompleteTextView.dismissDropDown();
|
||||
}
|
||||
}
|
||||
|
||||
private void setUpDropdownShowHideBehavior() {
|
||||
this.autoCompleteTextView.setOnTouchListener(new View.OnTouchListener() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate$$ExternalSyntheticLambda5
|
||||
@Override // android.view.View.OnTouchListener
|
||||
public final boolean onTouch(View view, MotionEvent motionEvent) {
|
||||
return DropdownMenuEndIconDelegate.this.m276x5f2e2537(view, motionEvent);
|
||||
}
|
||||
});
|
||||
if (IS_LOLLIPOP) {
|
||||
this.autoCompleteTextView.setOnDismissListener(new AutoCompleteTextView.OnDismissListener() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate$$ExternalSyntheticLambda6
|
||||
@Override // android.widget.AutoCompleteTextView.OnDismissListener
|
||||
public final void onDismiss() {
|
||||
DropdownMenuEndIconDelegate.this.m277x3aefa0f8();
|
||||
}
|
||||
});
|
||||
}
|
||||
this.autoCompleteTextView.setThreshold(0);
|
||||
}
|
||||
|
||||
/* renamed from: lambda$setUpDropdownShowHideBehavior$4$com-google-android-material-textfield-DropdownMenuEndIconDelegate, reason: not valid java name */
|
||||
/* synthetic */ boolean m276x5f2e2537(View view, MotionEvent motionEvent) {
|
||||
if (motionEvent.getAction() == 1) {
|
||||
if (isDropdownPopupActive()) {
|
||||
this.dropdownPopupDirty = false;
|
||||
}
|
||||
showHideDropdown();
|
||||
updateDropdownPopupDirty();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* renamed from: lambda$setUpDropdownShowHideBehavior$5$com-google-android-material-textfield-DropdownMenuEndIconDelegate, reason: not valid java name */
|
||||
/* synthetic */ void m277x3aefa0f8() {
|
||||
updateDropdownPopupDirty();
|
||||
setEndIconChecked(false);
|
||||
}
|
||||
|
||||
private boolean isDropdownPopupActive() {
|
||||
long currentTimeMillis = System.currentTimeMillis() - this.dropdownPopupActivatedAt;
|
||||
return currentTimeMillis < 0 || currentTimeMillis > 300;
|
||||
}
|
||||
|
||||
private static AutoCompleteTextView castAutoCompleteTextViewOrThrow(EditText editText) {
|
||||
if (!(editText instanceof AutoCompleteTextView)) {
|
||||
throw new RuntimeException("EditText needs to be an AutoCompleteTextView if an Exposed Dropdown Menu is being used.");
|
||||
}
|
||||
return (AutoCompleteTextView) editText;
|
||||
}
|
||||
|
||||
private void updateDropdownPopupDirty() {
|
||||
this.dropdownPopupDirty = true;
|
||||
this.dropdownPopupActivatedAt = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
private void setEndIconChecked(boolean z) {
|
||||
if (this.isEndIconChecked != z) {
|
||||
this.isEndIconChecked = z;
|
||||
this.fadeInAnim.cancel();
|
||||
this.fadeOutAnim.start();
|
||||
}
|
||||
}
|
||||
|
||||
private void initAnimators() {
|
||||
this.fadeInAnim = getAlphaAnimator(this.animationFadeInDuration, 0.0f, 1.0f);
|
||||
ValueAnimator alphaAnimator = getAlphaAnimator(this.animationFadeOutDuration, 1.0f, 0.0f);
|
||||
this.fadeOutAnim = alphaAnimator;
|
||||
alphaAnimator.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate.1
|
||||
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
||||
public void onAnimationEnd(Animator animator) {
|
||||
DropdownMenuEndIconDelegate.this.refreshIconState();
|
||||
DropdownMenuEndIconDelegate.this.fadeInAnim.start();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private ValueAnimator getAlphaAnimator(int i, float... fArr) {
|
||||
ValueAnimator ofFloat = ValueAnimator.ofFloat(fArr);
|
||||
ofFloat.setInterpolator(this.animationFadeInterpolator);
|
||||
ofFloat.setDuration(i);
|
||||
ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.textfield.DropdownMenuEndIconDelegate$$ExternalSyntheticLambda3
|
||||
@Override // android.animation.ValueAnimator.AnimatorUpdateListener
|
||||
public final void onAnimationUpdate(ValueAnimator valueAnimator) {
|
||||
DropdownMenuEndIconDelegate.this.m272x6b943a83(valueAnimator);
|
||||
}
|
||||
});
|
||||
return ofFloat;
|
||||
}
|
||||
|
||||
/* renamed from: lambda$getAlphaAnimator$6$com-google-android-material-textfield-DropdownMenuEndIconDelegate, reason: not valid java name */
|
||||
/* synthetic */ void m272x6b943a83(ValueAnimator valueAnimator) {
|
||||
this.endIconView.setAlpha(((Float) valueAnimator.getAnimatedValue()).floatValue());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user