diff --git a/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/FragmentSlide.java b/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/FragmentSlide.java index 7b18bb0..e7c9d8a 100644 --- a/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/FragmentSlide.java +++ b/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/FragmentSlide.java @@ -3,9 +3,7 @@ import android.content.Context; import android.os.Bundle; import android.support.annotation.ColorRes; -import android.support.annotation.FloatRange; import android.support.annotation.LayoutRes; -import android.support.annotation.Nullable; import android.support.annotation.StyleRes; import android.support.v4.app.Fragment; import android.support.v7.view.ContextThemeWrapper; @@ -14,10 +12,7 @@ import android.view.ViewGroup; import com.heinrichreimersoftware.materialintro.app.SlideFragment; -import com.heinrichreimersoftware.materialintro.view.parallax.Parallaxable; - -import java.util.LinkedList; -import java.util.Queue; +import com.heinrichreimersoftware.materialintro.view.parallax.ParallaxFragment; public class FragmentSlide implements Slide, RestorableSlide { @@ -128,15 +123,12 @@ public FragmentSlide build(){ } } - public static class FragmentSlideFragment extends Fragment implements Parallaxable { + public static class FragmentSlideFragment extends ParallaxFragment { private static final String ARGUMENT_LAYOUT_RES = "com.heinrichreimersoftware.materialintro.SimpleFragment.ARGUMENT_LAYOUT_RES"; private static final String ARGUMENT_THEME_RES = "com.heinrichreimersoftware.materialintro.SimpleFragment.ARGUMENT_THEME_RES"; - @Nullable - private Parallaxable parallaxLayout; - public FragmentSlideFragment() { } @@ -167,32 +159,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, } LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); - View root = localInflater.inflate(getArguments().getInt(ARGUMENT_LAYOUT_RES), container, false); - parallaxLayout = findParallaxLayout(root); - return root; - } - - public Parallaxable findParallaxLayout(View root) { - Queue queue = new LinkedList<>(); - queue.add(root); - while (!queue.isEmpty()) { - View child = queue.remove(); - if (child instanceof Parallaxable) { - return (Parallaxable) child; - } else if (child instanceof ViewGroup) { - ViewGroup viewGroup = (ViewGroup) child; - for (int i = viewGroup.getChildCount() - 1; i >= 0; i--) { - queue.add(viewGroup.getChildAt(i)); - } - } - } - return null; - } - - @Override - public void setOffset(@FloatRange(from = -1.0, to = 1.0) float offset) { - if (parallaxLayout != null) - parallaxLayout.setOffset(offset); + return localInflater.inflate(getArguments().getInt(ARGUMENT_LAYOUT_RES), container, false); } } } diff --git a/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/SimpleSlide.java b/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/SimpleSlide.java index a946dad..4988ca4 100644 --- a/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/SimpleSlide.java +++ b/library/src/main/java/com/heinrichreimersoftware/materialintro/slide/SimpleSlide.java @@ -23,7 +23,7 @@ import android.widget.TextView; import com.heinrichreimersoftware.materialintro.R; -import com.heinrichreimersoftware.materialintro.app.SlideFragment; +import com.heinrichreimersoftware.materialintro.view.parallax.ParallaxSlideFragment; import java.util.ArrayList; import java.util.List; @@ -314,7 +314,7 @@ public SimpleSlide build() { } } - public static class SimpleSlideFragment extends SlideFragment { + public static class SimpleSlideFragment extends ParallaxSlideFragment { private static final String ARGUMENT_TITLE = "com.heinrichreimersoftware.materialintro.SimpleFragment.ARGUMENT_TITLE"; private static final String ARGUMENT_TITLE_RES = diff --git a/library/src/main/java/com/heinrichreimersoftware/materialintro/view/parallax/ParallaxFragment.java b/library/src/main/java/com/heinrichreimersoftware/materialintro/view/parallax/ParallaxFragment.java new file mode 100644 index 0000000..c623f4e --- /dev/null +++ b/library/src/main/java/com/heinrichreimersoftware/materialintro/view/parallax/ParallaxFragment.java @@ -0,0 +1,45 @@ +package com.heinrichreimersoftware.materialintro.view.parallax; + +import android.os.Bundle; +import android.support.annotation.FloatRange; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.View; +import android.view.ViewGroup; + +import java.util.LinkedList; +import java.util.Queue; + +public class ParallaxFragment extends Fragment implements Parallaxable { + @Nullable + private Parallaxable parallaxLayout; + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + parallaxLayout = findParallaxLayout(view); + } + + public Parallaxable findParallaxLayout(View root) { + Queue queue = new LinkedList<>(); + queue.add(root); + while (!queue.isEmpty()) { + View child = queue.remove(); + if (child instanceof Parallaxable) { + return (Parallaxable) child; + } + else if (child instanceof ViewGroup) { + ViewGroup viewGroup = (ViewGroup) child; + for (int i = viewGroup.getChildCount() - 1; i >= 0; i--) { + queue.add(viewGroup.getChildAt(i)); + } + } + } + return null; + } + + @Override + public void setOffset(@FloatRange(from = -1.0, to = 1.0) float offset) { + if (parallaxLayout != null) + parallaxLayout.setOffset(offset); + } +} diff --git a/library/src/main/java/com/heinrichreimersoftware/materialintro/view/parallax/ParallaxSlideFragment.java b/library/src/main/java/com/heinrichreimersoftware/materialintro/view/parallax/ParallaxSlideFragment.java new file mode 100644 index 0000000..33a16aa --- /dev/null +++ b/library/src/main/java/com/heinrichreimersoftware/materialintro/view/parallax/ParallaxSlideFragment.java @@ -0,0 +1,46 @@ +package com.heinrichreimersoftware.materialintro.view.parallax; + +import android.os.Bundle; +import android.support.annotation.FloatRange; +import android.support.annotation.Nullable; +import android.view.View; +import android.view.ViewGroup; + +import com.heinrichreimersoftware.materialintro.app.SlideFragment; + +import java.util.LinkedList; +import java.util.Queue; + +public class ParallaxSlideFragment extends SlideFragment implements Parallaxable { + @Nullable + private Parallaxable parallaxLayout; + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + parallaxLayout = findParallaxLayout(view); + } + + public Parallaxable findParallaxLayout(View root) { + Queue queue = new LinkedList<>(); + queue.add(root); + while (!queue.isEmpty()) { + View child = queue.remove(); + if (child instanceof Parallaxable) { + return (Parallaxable) child; + } + else if (child instanceof ViewGroup) { + ViewGroup viewGroup = (ViewGroup) child; + for (int i = viewGroup.getChildCount() - 1; i >= 0; i--) { + queue.add(viewGroup.getChildAt(i)); + } + } + } + return null; + } + + @Override + public void setOffset(@FloatRange(from = -1.0, to = 1.0) float offset) { + if (parallaxLayout != null) + parallaxLayout.setOffset(offset); + } +}