From 726f466c029b6e2e5a4e15190ab5d4312e7ae5f6 Mon Sep 17 00:00:00 2001 From: Denis Karmyshakov Date: Fri, 7 Sep 2018 13:42:08 +0300 Subject: [PATCH] Removed PlaceholderView nesting --- .../fragments/ViewControllerFragment.java | 57 ++--------------- .../viewcontrollers/DefaultViewController.kt | 21 ------- .../viewcontrollers/ViewController.java | 62 +++++-------------- 3 files changed, 21 insertions(+), 119 deletions(-) delete mode 100644 src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/DefaultViewController.kt diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/fragments/ViewControllerFragment.java b/src/main/java/ru/touchin/roboswag/components/navigation/fragments/ViewControllerFragment.java index 74f290d..21c956e 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/fragments/ViewControllerFragment.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/fragments/ViewControllerFragment.java @@ -20,9 +20,7 @@ package ru.touchin.roboswag.components.navigation.fragments; import android.animation.Animator; -import android.content.Context; import android.content.Intent; -import android.graphics.Canvas; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; @@ -30,7 +28,6 @@ import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.FragmentActivity; -import android.support.v4.view.ViewCompat; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -38,11 +35,9 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; -import android.widget.FrameLayout; import java.lang.reflect.Constructor; -import ru.touchin.roboswag.components.R; import ru.touchin.roboswag.components.navigation.viewcontrollers.ViewController; import ru.touchin.roboswag.components.utils.UiUtils; import ru.touchin.roboswag.core.log.Lc; @@ -152,15 +147,13 @@ public class ViewControllerFragment constructor = viewControllerClass.getConstructors()[0]; - final ViewController.CreationContext creationContext = new ViewController.CreationContext(activity, this, view); final long creationTime = inDebugMode ? SystemClock.elapsedRealtime() : 0; try { switch (constructor.getParameterTypes().length) { @@ -194,16 +187,16 @@ public class ViewControllerFragment 0) { - final long layoutTime = SystemClock.uptimeMillis() - lastMeasureTime; - if (layoutTime > acceptableUiCalculationTime) { - UiUtils.UI_METRICS_LC_GROUP.w("Measure and layout of %s took too much: %dms", tagName, layoutTime); - } - lastMeasureTime = 0; - } - } - - } - private static class ActivityResult { public final int requestCode; public final int resultCode; diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/DefaultViewController.kt b/src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/DefaultViewController.kt deleted file mode 100644 index 0fae24f..0000000 --- a/src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/DefaultViewController.kt +++ /dev/null @@ -1,21 +0,0 @@ -package ru.touchin.roboswag.components.navigation.viewcontrollers - -import android.os.Bundle -import android.os.Parcelable -import android.support.annotation.LayoutRes -import android.support.v4.app.FragmentActivity - -abstract class DefaultViewController( - @LayoutRes layoutRes: Int, - creationContext: CreationContext, - savedInstanceState: Bundle? -) : ViewController( - creationContext, - savedInstanceState -) { - - init { - setContentView(layoutRes) - } - -} diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/ViewController.java b/src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/ViewController.java index 363e628..b4a5df8 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/ViewController.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/viewcontrollers/ViewController.java @@ -41,6 +41,7 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -59,7 +60,7 @@ import ru.touchin.roboswag.core.log.Lc; * @param Type of activity where such {@link ViewController} could be; * @param Type of state; */ -public class ViewController implements LifecycleOwner { +public abstract class ViewController implements LifecycleOwner { @NonNull private final LifecycleRegistry lifecycleRegistry = new LifecycleRegistry(this); @@ -68,14 +69,14 @@ public class ViewController fragment; @NonNull - private final ViewGroup container; + private final View view; @SuppressWarnings({"unchecked", "PMD.UnusedFormalParameter"}) //UnusedFormalParameter: savedInstanceState could be used by children - public ViewController(@NonNull final CreationContext creationContext, @Nullable final Bundle savedInstanceState) { + public ViewController(@NonNull final CreationContext creationContext, @Nullable final Bundle savedInstanceState, @LayoutRes final int layoutRes) { this.activity = (TActivity) creationContext.activity; this.fragment = creationContext.fragment; - this.container = creationContext.container; + view = creationContext.inflater.inflate(layoutRes, creationContext.container, false); } @NonNull @@ -110,7 +111,7 @@ public class ViewController 0) { - getContainer().removeAllViews(); - } - UiUtils.inflateAndAdd(layoutResId, getContainer()); - } - - /** - * Set the view controller content to an explicit view. - * This view is placed directly into the container's ({@link #getContainer()}) view hierarchy. - * - * @param view The desired content to display. - */ - protected final void setContentView(@NonNull final View view) { - setContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - } - - /** - * Set the view controller content to an explicit view with specific layout parameters. - * This view is placed directly into the container's ({@link #getContainer()}) view hierarchy. - * - * @param view The desired content to display; - * @param layoutParams Layout parameters for the view. - */ - protected final void setContentView(@NonNull final View view, @NonNull final ViewGroup.LayoutParams layoutParams) { - if (getContainer().getChildCount() > 0) { - getContainer().removeAllViews(); - } - getContainer().addView(view, layoutParams); + public final View getView() { + return view; } /** @@ -170,7 +134,7 @@ public class ViewController T findViewById(@IdRes final int id) { - return getContainer().findViewById(id); + return getView().findViewById(id); } /** @@ -337,7 +301,7 @@ public class ViewController