ADD week 5
This commit is contained in:
@ -0,0 +1,197 @@
|
||||
package androidx.appcompat.widget;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.ViewConfigurationCompat;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
class TooltipCompatHandler implements View.OnLongClickListener, View.OnHoverListener, View.OnAttachStateChangeListener {
|
||||
private static final long HOVER_HIDE_TIMEOUT_MS = 15000;
|
||||
private static final long HOVER_HIDE_TIMEOUT_SHORT_MS = 3000;
|
||||
private static final long LONG_CLICK_HIDE_TIMEOUT_MS = 2500;
|
||||
private static final String TAG = "TooltipCompatHandler";
|
||||
private static TooltipCompatHandler sActiveHandler;
|
||||
private static TooltipCompatHandler sPendingHandler;
|
||||
private final View mAnchor;
|
||||
private int mAnchorX;
|
||||
private int mAnchorY;
|
||||
private boolean mForceNextChangeSignificant;
|
||||
private boolean mFromTouch;
|
||||
private final int mHoverSlop;
|
||||
private TooltipPopup mPopup;
|
||||
private final CharSequence mTooltipText;
|
||||
private final Runnable mShowRunnable = new Runnable() { // from class: androidx.appcompat.widget.TooltipCompatHandler$$ExternalSyntheticLambda0
|
||||
@Override // java.lang.Runnable
|
||||
public final void run() {
|
||||
TooltipCompatHandler.this.m44lambda$new$0$androidxappcompatwidgetTooltipCompatHandler();
|
||||
}
|
||||
};
|
||||
private final Runnable mHideRunnable = new Runnable() { // from class: androidx.appcompat.widget.TooltipCompatHandler$$ExternalSyntheticLambda1
|
||||
@Override // java.lang.Runnable
|
||||
public final void run() {
|
||||
TooltipCompatHandler.this.hide();
|
||||
}
|
||||
};
|
||||
|
||||
private void forceNextChangeSignificant() {
|
||||
this.mForceNextChangeSignificant = true;
|
||||
}
|
||||
|
||||
@Override // android.view.View.OnAttachStateChangeListener
|
||||
public void onViewAttachedToWindow(View view) {
|
||||
}
|
||||
|
||||
/* renamed from: lambda$new$0$androidx-appcompat-widget-TooltipCompatHandler, reason: not valid java name */
|
||||
/* synthetic */ void m44lambda$new$0$androidxappcompatwidgetTooltipCompatHandler() {
|
||||
show(false);
|
||||
}
|
||||
|
||||
public static void setTooltipText(View view, CharSequence charSequence) {
|
||||
TooltipCompatHandler tooltipCompatHandler = sPendingHandler;
|
||||
if (tooltipCompatHandler != null && tooltipCompatHandler.mAnchor == view) {
|
||||
setPendingHandler(null);
|
||||
}
|
||||
if (TextUtils.isEmpty(charSequence)) {
|
||||
TooltipCompatHandler tooltipCompatHandler2 = sActiveHandler;
|
||||
if (tooltipCompatHandler2 != null && tooltipCompatHandler2.mAnchor == view) {
|
||||
tooltipCompatHandler2.hide();
|
||||
}
|
||||
view.setOnLongClickListener(null);
|
||||
view.setLongClickable(false);
|
||||
view.setOnHoverListener(null);
|
||||
return;
|
||||
}
|
||||
new TooltipCompatHandler(view, charSequence);
|
||||
}
|
||||
|
||||
private TooltipCompatHandler(View view, CharSequence charSequence) {
|
||||
this.mAnchor = view;
|
||||
this.mTooltipText = charSequence;
|
||||
this.mHoverSlop = ViewConfigurationCompat.getScaledHoverSlop(ViewConfiguration.get(view.getContext()));
|
||||
forceNextChangeSignificant();
|
||||
view.setOnLongClickListener(this);
|
||||
view.setOnHoverListener(this);
|
||||
}
|
||||
|
||||
@Override // android.view.View.OnLongClickListener
|
||||
public boolean onLongClick(View view) {
|
||||
this.mAnchorX = view.getWidth() / 2;
|
||||
this.mAnchorY = view.getHeight() / 2;
|
||||
show(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override // android.view.View.OnHoverListener
|
||||
public boolean onHover(View view, MotionEvent motionEvent) {
|
||||
if (this.mPopup != null && this.mFromTouch) {
|
||||
return false;
|
||||
}
|
||||
AccessibilityManager accessibilityManager = (AccessibilityManager) this.mAnchor.getContext().getSystemService("accessibility");
|
||||
if (accessibilityManager.isEnabled() && accessibilityManager.isTouchExplorationEnabled()) {
|
||||
return false;
|
||||
}
|
||||
int action = motionEvent.getAction();
|
||||
if (action != 7) {
|
||||
if (action == 10) {
|
||||
forceNextChangeSignificant();
|
||||
hide();
|
||||
}
|
||||
} else if (this.mAnchor.isEnabled() && this.mPopup == null && updateAnchorPos(motionEvent)) {
|
||||
setPendingHandler(this);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override // android.view.View.OnAttachStateChangeListener
|
||||
public void onViewDetachedFromWindow(View view) {
|
||||
hide();
|
||||
}
|
||||
|
||||
void show(boolean z) {
|
||||
long longPressTimeout;
|
||||
long j;
|
||||
long j2;
|
||||
if (ViewCompat.isAttachedToWindow(this.mAnchor)) {
|
||||
setPendingHandler(null);
|
||||
TooltipCompatHandler tooltipCompatHandler = sActiveHandler;
|
||||
if (tooltipCompatHandler != null) {
|
||||
tooltipCompatHandler.hide();
|
||||
}
|
||||
sActiveHandler = this;
|
||||
this.mFromTouch = z;
|
||||
TooltipPopup tooltipPopup = new TooltipPopup(this.mAnchor.getContext());
|
||||
this.mPopup = tooltipPopup;
|
||||
tooltipPopup.show(this.mAnchor, this.mAnchorX, this.mAnchorY, this.mFromTouch, this.mTooltipText);
|
||||
this.mAnchor.addOnAttachStateChangeListener(this);
|
||||
if (this.mFromTouch) {
|
||||
j2 = LONG_CLICK_HIDE_TIMEOUT_MS;
|
||||
} else {
|
||||
if ((ViewCompat.getWindowSystemUiVisibility(this.mAnchor) & 1) == 1) {
|
||||
longPressTimeout = ViewConfiguration.getLongPressTimeout();
|
||||
j = HOVER_HIDE_TIMEOUT_SHORT_MS;
|
||||
} else {
|
||||
longPressTimeout = ViewConfiguration.getLongPressTimeout();
|
||||
j = HOVER_HIDE_TIMEOUT_MS;
|
||||
}
|
||||
j2 = j - longPressTimeout;
|
||||
}
|
||||
this.mAnchor.removeCallbacks(this.mHideRunnable);
|
||||
this.mAnchor.postDelayed(this.mHideRunnable, j2);
|
||||
}
|
||||
}
|
||||
|
||||
void hide() {
|
||||
if (sActiveHandler == this) {
|
||||
sActiveHandler = null;
|
||||
TooltipPopup tooltipPopup = this.mPopup;
|
||||
if (tooltipPopup != null) {
|
||||
tooltipPopup.hide();
|
||||
this.mPopup = null;
|
||||
forceNextChangeSignificant();
|
||||
this.mAnchor.removeOnAttachStateChangeListener(this);
|
||||
} else {
|
||||
Log.e(TAG, "sActiveHandler.mPopup == null");
|
||||
}
|
||||
}
|
||||
if (sPendingHandler == this) {
|
||||
setPendingHandler(null);
|
||||
}
|
||||
this.mAnchor.removeCallbacks(this.mHideRunnable);
|
||||
}
|
||||
|
||||
private static void setPendingHandler(TooltipCompatHandler tooltipCompatHandler) {
|
||||
TooltipCompatHandler tooltipCompatHandler2 = sPendingHandler;
|
||||
if (tooltipCompatHandler2 != null) {
|
||||
tooltipCompatHandler2.cancelPendingShow();
|
||||
}
|
||||
sPendingHandler = tooltipCompatHandler;
|
||||
if (tooltipCompatHandler != null) {
|
||||
tooltipCompatHandler.scheduleShow();
|
||||
}
|
||||
}
|
||||
|
||||
private void scheduleShow() {
|
||||
this.mAnchor.postDelayed(this.mShowRunnable, ViewConfiguration.getLongPressTimeout());
|
||||
}
|
||||
|
||||
private void cancelPendingShow() {
|
||||
this.mAnchor.removeCallbacks(this.mShowRunnable);
|
||||
}
|
||||
|
||||
private boolean updateAnchorPos(MotionEvent motionEvent) {
|
||||
int x = (int) motionEvent.getX();
|
||||
int y = (int) motionEvent.getY();
|
||||
if (!this.mForceNextChangeSignificant && Math.abs(x - this.mAnchorX) <= this.mHoverSlop && Math.abs(y - this.mAnchorY) <= this.mHoverSlop) {
|
||||
return false;
|
||||
}
|
||||
this.mAnchorX = x;
|
||||
this.mAnchorY = y;
|
||||
this.mForceNextChangeSignificant = false;
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user