jimu-decompiled/sources/androidx/appcompat/widget/TooltipPopup.java
2025-05-13 19:24:51 +02:00

140 lines
5.3 KiB
Java

package androidx.appcompat.widget;
import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.Resources;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.appcompat.R$dimen;
import androidx.appcompat.R$id;
import androidx.appcompat.R$layout;
import androidx.appcompat.R$style;
/* loaded from: classes.dex */
class TooltipPopup {
private final Context a;
private final View b;
private final TextView c;
private final WindowManager.LayoutParams d = new WindowManager.LayoutParams();
private final Rect e = new Rect();
private final int[] f = new int[2];
private final int[] g = new int[2];
TooltipPopup(Context context) {
this.a = context;
this.b = LayoutInflater.from(this.a).inflate(R$layout.abc_tooltip, (ViewGroup) null);
this.c = (TextView) this.b.findViewById(R$id.message);
this.d.setTitle(TooltipPopup.class.getSimpleName());
this.d.packageName = this.a.getPackageName();
WindowManager.LayoutParams layoutParams = this.d;
layoutParams.type = 1002;
layoutParams.width = -2;
layoutParams.height = -2;
layoutParams.format = -3;
layoutParams.windowAnimations = R$style.Animation_AppCompat_Tooltip;
layoutParams.flags = 24;
}
void a(View view, int i, int i2, boolean z, CharSequence charSequence) {
if (b()) {
a();
}
this.c.setText(charSequence);
a(view, i, i2, z, this.d);
((WindowManager) this.a.getSystemService("window")).addView(this.b, this.d);
}
boolean b() {
return this.b.getParent() != null;
}
void a() {
if (b()) {
((WindowManager) this.a.getSystemService("window")).removeView(this.b);
}
}
private void a(View view, int i, int i2, boolean z, WindowManager.LayoutParams layoutParams) {
int height;
int i3;
layoutParams.token = view.getApplicationWindowToken();
int dimensionPixelOffset = this.a.getResources().getDimensionPixelOffset(R$dimen.tooltip_precise_anchor_threshold);
if (view.getWidth() < dimensionPixelOffset) {
i = view.getWidth() / 2;
}
if (view.getHeight() >= dimensionPixelOffset) {
int dimensionPixelOffset2 = this.a.getResources().getDimensionPixelOffset(R$dimen.tooltip_precise_anchor_extra_offset);
height = i2 + dimensionPixelOffset2;
i3 = i2 - dimensionPixelOffset2;
} else {
height = view.getHeight();
i3 = 0;
}
layoutParams.gravity = 49;
int dimensionPixelOffset3 = this.a.getResources().getDimensionPixelOffset(z ? R$dimen.tooltip_y_offset_touch : R$dimen.tooltip_y_offset_non_touch);
View a = a(view);
if (a == null) {
Log.e("TooltipPopup", "Cannot find app view");
return;
}
a.getWindowVisibleDisplayFrame(this.e);
Rect rect = this.e;
if (rect.left < 0 && rect.top < 0) {
Resources resources = this.a.getResources();
int identifier = resources.getIdentifier("status_bar_height", "dimen", "android");
int dimensionPixelSize = identifier != 0 ? resources.getDimensionPixelSize(identifier) : 0;
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
this.e.set(0, dimensionPixelSize, displayMetrics.widthPixels, displayMetrics.heightPixels);
}
a.getLocationOnScreen(this.g);
view.getLocationOnScreen(this.f);
int[] iArr = this.f;
int i4 = iArr[0];
int[] iArr2 = this.g;
iArr[0] = i4 - iArr2[0];
iArr[1] = iArr[1] - iArr2[1];
layoutParams.x = (iArr[0] + i) - (a.getWidth() / 2);
int makeMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, 0);
this.b.measure(makeMeasureSpec, makeMeasureSpec);
int measuredHeight = this.b.getMeasuredHeight();
int[] iArr3 = this.f;
int i5 = ((iArr3[1] + i3) - dimensionPixelOffset3) - measuredHeight;
int i6 = iArr3[1] + height + dimensionPixelOffset3;
if (z) {
if (i5 >= 0) {
layoutParams.y = i5;
return;
} else {
layoutParams.y = i6;
return;
}
}
if (measuredHeight + i6 <= this.e.height()) {
layoutParams.y = i6;
} else {
layoutParams.y = i5;
}
}
private static View a(View view) {
View rootView = view.getRootView();
ViewGroup.LayoutParams layoutParams = rootView.getLayoutParams();
if ((layoutParams instanceof WindowManager.LayoutParams) && ((WindowManager.LayoutParams) layoutParams).type == 2) {
return rootView;
}
for (Context context = view.getContext(); context instanceof ContextWrapper; context = ((ContextWrapper) context).getBaseContext()) {
if (context instanceof Activity) {
return ((Activity) context).getWindow().getDecorView();
}
}
return rootView;
}
}