mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-26 09:02:34 -06:00
168 lines
6.2 KiB
Java
168 lines
6.2 KiB
Java
|
package androidx.transition;
|
||
|
|
||
|
import android.graphics.Canvas;
|
||
|
import android.graphics.Matrix;
|
||
|
import android.view.View;
|
||
|
import android.view.ViewGroup;
|
||
|
import android.view.ViewTreeObserver;
|
||
|
import androidx.core.view.ViewCompat;
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
||
|
/* loaded from: classes2.dex */
|
||
|
public class GhostViewPort extends ViewGroup implements GhostView {
|
||
|
private Matrix mMatrix;
|
||
|
private final ViewTreeObserver.OnPreDrawListener mOnPreDrawListener;
|
||
|
int mReferences;
|
||
|
ViewGroup mStartParent;
|
||
|
View mStartView;
|
||
|
final View mView;
|
||
|
|
||
|
@Override // android.view.ViewGroup, android.view.View
|
||
|
protected void onLayout(boolean z, int i, int i2, int i3, int i4) {
|
||
|
}
|
||
|
|
||
|
@Override // androidx.transition.GhostView
|
||
|
public void reserveEndViewTransition(ViewGroup viewGroup, View view) {
|
||
|
this.mStartParent = viewGroup;
|
||
|
this.mStartView = view;
|
||
|
}
|
||
|
|
||
|
void setMatrix(Matrix matrix) {
|
||
|
this.mMatrix = matrix;
|
||
|
}
|
||
|
|
||
|
GhostViewPort(View view) {
|
||
|
super(view.getContext());
|
||
|
this.mOnPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { // from class: androidx.transition.GhostViewPort.1
|
||
|
@Override // android.view.ViewTreeObserver.OnPreDrawListener
|
||
|
public boolean onPreDraw() {
|
||
|
ViewCompat.postInvalidateOnAnimation(GhostViewPort.this);
|
||
|
if (GhostViewPort.this.mStartParent == null || GhostViewPort.this.mStartView == null) {
|
||
|
return true;
|
||
|
}
|
||
|
GhostViewPort.this.mStartParent.endViewTransition(GhostViewPort.this.mStartView);
|
||
|
ViewCompat.postInvalidateOnAnimation(GhostViewPort.this.mStartParent);
|
||
|
GhostViewPort.this.mStartParent = null;
|
||
|
GhostViewPort.this.mStartView = null;
|
||
|
return true;
|
||
|
}
|
||
|
};
|
||
|
this.mView = view;
|
||
|
setWillNotDraw(false);
|
||
|
setClipChildren(false);
|
||
|
setLayerType(2, null);
|
||
|
}
|
||
|
|
||
|
@Override // android.view.View, androidx.transition.GhostView
|
||
|
public void setVisibility(int i) {
|
||
|
super.setVisibility(i);
|
||
|
if (getGhostView(this.mView) == this) {
|
||
|
ViewUtils.setTransitionVisibility(this.mView, i == 0 ? 4 : 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override // android.view.ViewGroup, android.view.View
|
||
|
protected void onAttachedToWindow() {
|
||
|
super.onAttachedToWindow();
|
||
|
setGhostView(this.mView, this);
|
||
|
this.mView.getViewTreeObserver().addOnPreDrawListener(this.mOnPreDrawListener);
|
||
|
ViewUtils.setTransitionVisibility(this.mView, 4);
|
||
|
if (this.mView.getParent() != null) {
|
||
|
((View) this.mView.getParent()).invalidate();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override // android.view.ViewGroup, android.view.View
|
||
|
protected void onDetachedFromWindow() {
|
||
|
this.mView.getViewTreeObserver().removeOnPreDrawListener(this.mOnPreDrawListener);
|
||
|
ViewUtils.setTransitionVisibility(this.mView, 0);
|
||
|
setGhostView(this.mView, null);
|
||
|
if (this.mView.getParent() != null) {
|
||
|
((View) this.mView.getParent()).invalidate();
|
||
|
}
|
||
|
super.onDetachedFromWindow();
|
||
|
}
|
||
|
|
||
|
@Override // android.view.View
|
||
|
protected void onDraw(Canvas canvas) {
|
||
|
CanvasUtils.enableZ(canvas, true);
|
||
|
canvas.setMatrix(this.mMatrix);
|
||
|
ViewUtils.setTransitionVisibility(this.mView, 0);
|
||
|
this.mView.invalidate();
|
||
|
ViewUtils.setTransitionVisibility(this.mView, 4);
|
||
|
drawChild(canvas, this.mView, getDrawingTime());
|
||
|
CanvasUtils.enableZ(canvas, false);
|
||
|
}
|
||
|
|
||
|
static void copySize(View view, View view2) {
|
||
|
ViewUtils.setLeftTopRightBottom(view2, view2.getLeft(), view2.getTop(), view2.getLeft() + view.getWidth(), view2.getTop() + view.getHeight());
|
||
|
}
|
||
|
|
||
|
static GhostViewPort getGhostView(View view) {
|
||
|
return (GhostViewPort) view.getTag(R.id.ghost_view);
|
||
|
}
|
||
|
|
||
|
static void setGhostView(View view, GhostViewPort ghostViewPort) {
|
||
|
view.setTag(R.id.ghost_view, ghostViewPort);
|
||
|
}
|
||
|
|
||
|
static void calculateMatrix(View view, ViewGroup viewGroup, Matrix matrix) {
|
||
|
ViewGroup viewGroup2 = (ViewGroup) view.getParent();
|
||
|
matrix.reset();
|
||
|
ViewUtils.transformMatrixToGlobal(viewGroup2, matrix);
|
||
|
matrix.preTranslate(-viewGroup2.getScrollX(), -viewGroup2.getScrollY());
|
||
|
ViewUtils.transformMatrixToLocal(viewGroup, matrix);
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
||
|
public static GhostViewPort addGhost(View view, ViewGroup viewGroup, Matrix matrix) {
|
||
|
int i;
|
||
|
GhostViewHolder ghostViewHolder;
|
||
|
if (!(view.getParent() instanceof ViewGroup)) {
|
||
|
throw new IllegalArgumentException("Ghosted views must be parented by a ViewGroup");
|
||
|
}
|
||
|
GhostViewHolder holder = GhostViewHolder.getHolder(viewGroup);
|
||
|
GhostViewPort ghostView = getGhostView(view);
|
||
|
if (ghostView == null || (ghostViewHolder = (GhostViewHolder) ghostView.getParent()) == holder) {
|
||
|
i = 0;
|
||
|
} else {
|
||
|
i = ghostView.mReferences;
|
||
|
ghostViewHolder.removeView(ghostView);
|
||
|
ghostView = null;
|
||
|
}
|
||
|
if (ghostView == null) {
|
||
|
if (matrix == null) {
|
||
|
matrix = new Matrix();
|
||
|
calculateMatrix(view, viewGroup, matrix);
|
||
|
}
|
||
|
ghostView = new GhostViewPort(view);
|
||
|
ghostView.setMatrix(matrix);
|
||
|
if (holder == null) {
|
||
|
holder = new GhostViewHolder(viewGroup);
|
||
|
} else {
|
||
|
holder.popToOverlayTop();
|
||
|
}
|
||
|
copySize(viewGroup, holder);
|
||
|
copySize(viewGroup, ghostView);
|
||
|
holder.addGhostView(ghostView);
|
||
|
ghostView.mReferences = i;
|
||
|
} else if (matrix != null) {
|
||
|
ghostView.setMatrix(matrix);
|
||
|
}
|
||
|
ghostView.mReferences++;
|
||
|
return ghostView;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
||
|
public static void removeGhost(View view) {
|
||
|
GhostViewPort ghostView = getGhostView(view);
|
||
|
if (ghostView != null) {
|
||
|
int i = ghostView.mReferences - 1;
|
||
|
ghostView.mReferences = i;
|
||
|
if (i <= 0) {
|
||
|
((GhostViewHolder) ghostView.getParent()).removeView(ghostView);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|