导航菜单

页面标题

页面副标题

BAM Crawford v6.14.1 - ScreenFragment.java 源代码

正在查看: BAM Crawford v6.14.1 应用的 ScreenFragment.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.swmansion.rnscreens;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.FrameLayout;
import androidx.fragment.app.Fragment;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.uimanager.b1;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import kotlin.jvm.internal.DefaultConstructorMarker;

public class ScreenFragment extends Fragment implements o {
    public static final a Companion = new a(null);
    private boolean canDispatchAppear;
    private boolean canDispatchWillAppear;
    private boolean isTransitioning;
    private final List<l> mChildScreenContainers;
    private float mProgress;
    public j screen;
    private boolean shouldUpdateOnResume;

    public static final class a {
        private a() {
        }

        public a(DefaultConstructorMarker defaultConstructorMarker) {
            this();
        }

        protected final View a(View view) {
            kotlin.jvm.internal.k.e(view, "view");
            ViewParent parent = view.getParent();
            if (parent != null) {
                ViewGroup viewGroup = (ViewGroup) parent;
                viewGroup.endViewTransition(view);
                viewGroup.removeView(view);
            }
            view.setVisibility(0);
            return view;
        }
    }

    public enum b {
        Appear,
        WillAppear,
        Disappear,
        WillDisappear
    }

    private static final class c extends FrameLayout {
        public c(Context context) {
            super(context);
            kotlin.jvm.internal.k.e(context, "context");
        }

        @Override
        public void clearFocus() {
            if (getVisibility() != 4) {
                super.clearFocus();
            }
        }
    }

    public class d {
        public static final int[] a;

        static {
            int[] iArr = new int[b.values().length];
            try {
                iArr[b.WillAppear.ordinal()] = 1;
            } catch (NoSuchFieldError unused) {
            }
            try {
                iArr[b.Appear.ordinal()] = 2;
            } catch (NoSuchFieldError unused2) {
            }
            try {
                iArr[b.WillDisappear.ordinal()] = 3;
            } catch (NoSuchFieldError unused3) {
            }
            try {
                iArr[b.Disappear.ordinal()] = 4;
            } catch (NoSuchFieldError unused4) {
            }
            a = iArr;
        }
    }

    public ScreenFragment() {
        this.mChildScreenContainers = new ArrayList();
        this.mProgress = -1.0f;
        this.canDispatchWillAppear = true;
        this.canDispatchAppear = true;
        throw new IllegalStateException("Screen fragments should never be restored. Follow instructions from https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-424704067 to properly configure your main activity.");
    }

    private final void dispatchOnAppear() {
        dispatchLifecycleEvent(b.Appear, this);
        dispatchTransitionProgressEvent(1.0f, false);
    }

    private final void dispatchOnDisappear() {
        dispatchLifecycleEvent(b.Disappear, this);
        dispatchTransitionProgressEvent(1.0f, true);
    }

    private final void dispatchOnWillAppear() {
        dispatchLifecycleEvent(b.WillAppear, this);
        dispatchTransitionProgressEvent(BitmapDescriptorFactory.HUE_RED, false);
    }

    private final void dispatchOnWillDisappear() {
        dispatchLifecycleEvent(b.WillDisappear, this);
        dispatchTransitionProgressEvent(BitmapDescriptorFactory.HUE_RED, true);
    }

    private final void dispatchViewAnimationEvent(final boolean z) {
        this.isTransitioning = !z;
        Fragment parentFragment = getParentFragment();
        if (parentFragment == null || ((parentFragment instanceof ScreenFragment) && !((ScreenFragment) parentFragment).isTransitioning)) {
            if (isResumed()) {
                UiThreadUtil.runOnUiThread(new Runnable() {
                    @Override
                    public final void run() {
                        ScreenFragment.dispatchViewAnimationEvent$lambda$8(z, this);
                    }
                });
            } else if (z) {
                dispatchOnDisappear();
            } else {
                dispatchOnWillDisappear();
            }
        }
    }

    public static final void dispatchViewAnimationEvent$lambda$8(boolean z, ScreenFragment this$0) {
        kotlin.jvm.internal.k.e(this$0, "this$0");
        if (z) {
            this$0.dispatchOnAppear();
        } else {
            this$0.dispatchOnWillAppear();
        }
    }

    public static void getScreen$annotations() {
    }

    protected static final View recycleView(View view) {
        return Companion.a(view);
    }

    private final void updateWindowTraits() {
        Activity activity = getActivity();
        if (activity == null) {
            this.shouldUpdateOnResume = true;
        } else {
            y.a.v(getScreen(), activity, tryGetContext());
        }
    }

    @Override
    public void addChildScreenContainer(l container) {
        kotlin.jvm.internal.k.e(container, "container");
        this.mChildScreenContainers.add(container);
    }

    public boolean canDispatchLifecycleEvent(b event) {
        kotlin.jvm.internal.k.e(event, "event");
        int i = d.a[event.ordinal()];
        if (i == 1) {
            return this.canDispatchWillAppear;
        }
        if (i == 2) {
            return this.canDispatchAppear;
        }
        if (i != 3) {
            if (i != 4) {
                throw new vj.k();
            }
            if (!this.canDispatchAppear) {
                return true;
            }
        } else if (!this.canDispatchWillAppear) {
            return true;
        }
        return false;
    }

    public void dispatchHeaderBackButtonClickedEvent() {
        ReactContext context = getScreen().getContext();
        kotlin.jvm.internal.k.c(context, "null cannot be cast to non-null type com.facebook.react.bridge.ReactContext");
        ReactContext reactContext = context;
        int e = b1.e(reactContext);
        com.facebook.react.uimanager.events.d c2 = b1.c(reactContext, getScreen().getId());
        if (c2 != null) {
            c2.c(new ej.b(e, getScreen().getId()));
        }
    }

    public void dispatchLifecycleEvent(b event, o fragmentWrapper) {
        com.facebook.react.uimanager.events.c iVar;
        kotlin.jvm.internal.k.e(event, "event");
        kotlin.jvm.internal.k.e(fragmentWrapper, "fragmentWrapper");
        Fragment fragment = fragmentWrapper.getFragment();
        if (fragment instanceof ScreenStackFragment) {
            ScreenStackFragment screenStackFragment = (ScreenStackFragment) fragment;
            if (screenStackFragment.canDispatchLifecycleEvent(event)) {
                j screen = screenStackFragment.getScreen();
                fragmentWrapper.updateLastEventDispatched(event);
                int f = b1.f(screen);
                int i = d.a[event.ordinal()];
                if (i == 1) {
                    iVar = new ej.i(f, screen.getId());
                } else if (i == 2) {
                    iVar = new ej.e(f, screen.getId());
                } else if (i == 3) {
                    iVar = new ej.j(f, screen.getId());
                } else {
                    if (i != 4) {
                        throw new vj.k();
                    }
                    iVar = new ej.f(f, screen.getId());
                }
                ReactContext context = getScreen().getContext();
                kotlin.jvm.internal.k.c(context, "null cannot be cast to non-null type com.facebook.react.bridge.ReactContext");
                com.facebook.react.uimanager.events.d c2 = b1.c(context, getScreen().getId());
                if (c2 != null) {
                    c2.c(iVar);
                }
                fragmentWrapper.dispatchLifecycleEventInChildContainers(event);
            }
        }
    }

    @Override
    public void dispatchLifecycleEventInChildContainers(b event) {
        o fragmentWrapper;
        kotlin.jvm.internal.k.e(event, "event");
        List<l> list = this.mChildScreenContainers;
        ArrayList arrayList = new ArrayList();
        for (Object obj : list) {
            if (((l) obj).getScreenCount() > 0) {
                arrayList.add(obj);
            }
        }
        Iterator it = arrayList.iterator();
        while (it.hasNext()) {
            j topScreen = ((l) it.next()).getTopScreen();
            if (topScreen != null && (fragmentWrapper = topScreen.getFragmentWrapper()) != null) {
                dispatchLifecycleEvent(event, fragmentWrapper);
            }
        }
    }

    public void dispatchTransitionProgressEvent(float f, boolean z) {
        if (this instanceof ScreenStackFragment) {
            if (this.mProgress == f) {
                return;
            }
            float max = Math.max(BitmapDescriptorFactory.HUE_RED, Math.min(1.0f, f));
            this.mProgress = max;
            if (!(max == BitmapDescriptorFactory.HUE_RED)) {
                r1 = (max != 1.0f ? 0 : 1) != 0 ? 2 : 3;
            }
            short s = (short) r1;
            l container = getScreen().getContainer();
            boolean goingForward = container instanceof q ? ((q) container).getGoingForward() : false;
            ReactContext context = getScreen().getContext();
            kotlin.jvm.internal.k.c(context, "null cannot be cast to non-null type com.facebook.react.bridge.ReactContext");
            ReactContext reactContext = context;
            com.facebook.react.uimanager.events.d c2 = b1.c(reactContext, getScreen().getId());
            if (c2 != null) {
                c2.c(new ej.h(b1.e(reactContext), getScreen().getId(), this.mProgress, z, goingForward, s));
            }
        }
    }

    @Override
    public List<l> getChildScreenContainers() {
        return this.mChildScreenContainers;
    }

    public n0.a getDefaultViewModelCreationExtras() {
        return super/*androidx.lifecycle.e*/.getDefaultViewModelCreationExtras();
    }

    @Override
    public Fragment getFragment() {
        return this;
    }

    @Override
    public j getScreen() {
        j jVar = this.screen;
        if (jVar != null) {
            return jVar;
        }
        kotlin.jvm.internal.k.o("screen");
        return null;
    }

    @Override
    public void onContainerUpdate() {
        updateWindowTraits();
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) {
        kotlin.jvm.internal.k.e(inflater, "inflater");
        getScreen().setLayoutParams(new FrameLayout.LayoutParams(-1, -1));
        Context context = getContext();
        if (context == null) {
            return null;
        }
        c cVar = new c(context);
        cVar.addView(recycleView(getScreen()));
        return cVar;
    }

    public void onDestroy() {
        super.onDestroy();
        l container = getScreen().getContainer();
        if (container == null || !container.l(this)) {
            ReactContext context = getScreen().getContext();
            if (context instanceof ReactContext) {
                int e = b1.e(context);
                com.facebook.react.uimanager.events.d c2 = b1.c(context, getScreen().getId());
                if (c2 != null) {
                    c2.c(new ej.g(e, getScreen().getId()));
                }
            }
        }
        this.mChildScreenContainers.clear();
    }

    public void onResume() {
        super.onResume();
        if (this.shouldUpdateOnResume) {
            this.shouldUpdateOnResume = false;
            y.a.v(getScreen(), tryGetActivity(), tryGetContext());
        }
    }

    public void onViewAnimationEnd() {
        dispatchViewAnimationEvent(true);
    }

    public void onViewAnimationStart() {
        dispatchViewAnimationEvent(false);
    }

    @Override
    public void removeChildScreenContainer(l container) {
        kotlin.jvm.internal.k.e(container, "container");
        this.mChildScreenContainers.remove(container);
    }

    public void setScreen(j jVar) {
        kotlin.jvm.internal.k.e(jVar, "<set-?>");
        this.screen = jVar;
    }

    @Override
    public Activity tryGetActivity() {
        Fragment fragment;
        androidx.fragment.app.d activity;
        androidx.fragment.app.d activity2 = getActivity();
        if (activity2 != null) {
            return activity2;
        }
        ReactContext context = getScreen().getContext();
        if (context instanceof ReactContext) {
            ReactContext reactContext = context;
            if (reactContext.getCurrentActivity() != null) {
                return reactContext.getCurrentActivity();
            }
        }
        for (ViewParent container = getScreen().getContainer(); container != null; container = container.getParent()) {
            if ((container instanceof j) && (fragment = ((j) container).getFragment()) != null && (activity = fragment.getActivity()) != null) {
                return activity;
            }
        }
        return null;
    }

    @Override
    public ReactContext tryGetContext() {
        if (getContext() instanceof ReactContext) {
            ReactContext context = getContext();
            kotlin.jvm.internal.k.c(context, "null cannot be cast to non-null type com.facebook.react.bridge.ReactContext");
            return context;
        }
        if (getScreen().getContext() instanceof ReactContext) {
            ReactContext context2 = getScreen().getContext();
            kotlin.jvm.internal.k.c(context2, "null cannot be cast to non-null type com.facebook.react.bridge.ReactContext");
            return context2;
        }
        for (ViewParent container = getScreen().getContainer(); container != null; container = container.getParent()) {
            if (container instanceof j) {
                j jVar = (j) container;
                if (jVar.getContext() instanceof ReactContext) {
                    ReactContext context3 = jVar.getContext();
                    kotlin.jvm.internal.k.c(context3, "null cannot be cast to non-null type com.facebook.react.bridge.ReactContext");
                    return context3;
                }
            }
        }
        return null;
    }

    @Override
    public void updateLastEventDispatched(b event) {
        kotlin.jvm.internal.k.e(event, "event");
        int i = d.a[event.ordinal()];
        if (i == 1) {
            this.canDispatchWillAppear = false;
            return;
        }
        if (i == 2) {
            this.canDispatchAppear = false;
        } else if (i == 3) {
            this.canDispatchWillAppear = true;
        } else {
            if (i != 4) {
                return;
            }
            this.canDispatchAppear = true;
        }
    }

    @SuppressLint({"ValidFragment"})
    public ScreenFragment(j screenView) {
        kotlin.jvm.internal.k.e(screenView, "screenView");
        this.mChildScreenContainers = new ArrayList();
        this.mProgress = -1.0f;
        this.canDispatchWillAppear = true;
        this.canDispatchAppear = true;
        setScreen(screenView);
    }
}