Skip to content

Commit 32bafa3

Browse files
Added parallax feature to simple slide
1 parent 2facd23 commit 32bafa3

File tree

4 files changed

+96
-38
lines changed

4 files changed

+96
-38
lines changed

library/src/main/java/com/heinrichreimersoftware/materialintro/slide/FragmentSlide.java

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import android.content.Context;
44
import android.os.Bundle;
55
import android.support.annotation.ColorRes;
6-
import android.support.annotation.FloatRange;
76
import android.support.annotation.LayoutRes;
8-
import android.support.annotation.Nullable;
97
import android.support.annotation.StyleRes;
108
import android.support.v4.app.Fragment;
119
import android.support.v7.view.ContextThemeWrapper;
@@ -14,10 +12,7 @@
1412
import android.view.ViewGroup;
1513

1614
import com.heinrichreimersoftware.materialintro.app.SlideFragment;
17-
import com.heinrichreimersoftware.materialintro.view.parallax.Parallaxable;
18-
19-
import java.util.LinkedList;
20-
import java.util.Queue;
15+
import com.heinrichreimersoftware.materialintro.view.parallax.ParallaxFragment;
2116

2217
public class FragmentSlide implements Slide, RestorableSlide {
2318

@@ -128,15 +123,12 @@ public FragmentSlide build(){
128123
}
129124
}
130125

131-
public static class FragmentSlideFragment extends Fragment implements Parallaxable {
126+
public static class FragmentSlideFragment extends ParallaxFragment {
132127
private static final String ARGUMENT_LAYOUT_RES =
133128
"com.heinrichreimersoftware.materialintro.SimpleFragment.ARGUMENT_LAYOUT_RES";
134129
private static final String ARGUMENT_THEME_RES =
135130
"com.heinrichreimersoftware.materialintro.SimpleFragment.ARGUMENT_THEME_RES";
136131

137-
@Nullable
138-
private Parallaxable parallaxLayout;
139-
140132
public FragmentSlideFragment() {
141133
}
142134

@@ -167,32 +159,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
167159
}
168160
LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);
169161

170-
View root = localInflater.inflate(getArguments().getInt(ARGUMENT_LAYOUT_RES), container, false);
171-
parallaxLayout = findParallaxLayout(root);
172-
return root;
173-
}
174-
175-
public Parallaxable findParallaxLayout(View root) {
176-
Queue<View> queue = new LinkedList<>();
177-
queue.add(root);
178-
while (!queue.isEmpty()) {
179-
View child = queue.remove();
180-
if (child instanceof Parallaxable) {
181-
return (Parallaxable) child;
182-
} else if (child instanceof ViewGroup) {
183-
ViewGroup viewGroup = (ViewGroup) child;
184-
for (int i = viewGroup.getChildCount() - 1; i >= 0; i--) {
185-
queue.add(viewGroup.getChildAt(i));
186-
}
187-
}
188-
}
189-
return null;
190-
}
191-
192-
@Override
193-
public void setOffset(@FloatRange(from = -1.0, to = 1.0) float offset) {
194-
if (parallaxLayout != null)
195-
parallaxLayout.setOffset(offset);
162+
return localInflater.inflate(getArguments().getInt(ARGUMENT_LAYOUT_RES), container, false);
196163
}
197164
}
198165
}

library/src/main/java/com/heinrichreimersoftware/materialintro/slide/SimpleSlide.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import android.widget.TextView;
2424

2525
import com.heinrichreimersoftware.materialintro.R;
26-
import com.heinrichreimersoftware.materialintro.app.SlideFragment;
26+
import com.heinrichreimersoftware.materialintro.view.parallax.ParallaxSlideFragment;
2727

2828
import java.util.ArrayList;
2929
import java.util.List;
@@ -314,7 +314,7 @@ public SimpleSlide build() {
314314
}
315315
}
316316

317-
public static class SimpleSlideFragment extends SlideFragment {
317+
public static class SimpleSlideFragment extends ParallaxSlideFragment {
318318
private static final String ARGUMENT_TITLE =
319319
"com.heinrichreimersoftware.materialintro.SimpleFragment.ARGUMENT_TITLE";
320320
private static final String ARGUMENT_TITLE_RES =
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.heinrichreimersoftware.materialintro.view.parallax;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.FloatRange;
5+
import android.support.annotation.Nullable;
6+
import android.support.v4.app.Fragment;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
10+
import java.util.LinkedList;
11+
import java.util.Queue;
12+
13+
public class ParallaxFragment extends Fragment implements Parallaxable {
14+
@Nullable
15+
private Parallaxable parallaxLayout;
16+
17+
@Override
18+
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
19+
parallaxLayout = findParallaxLayout(view);
20+
}
21+
22+
public Parallaxable findParallaxLayout(View root) {
23+
Queue<View> queue = new LinkedList<>();
24+
queue.add(root);
25+
while (!queue.isEmpty()) {
26+
View child = queue.remove();
27+
if (child instanceof Parallaxable) {
28+
return (Parallaxable) child;
29+
}
30+
else if (child instanceof ViewGroup) {
31+
ViewGroup viewGroup = (ViewGroup) child;
32+
for (int i = viewGroup.getChildCount() - 1; i >= 0; i--) {
33+
queue.add(viewGroup.getChildAt(i));
34+
}
35+
}
36+
}
37+
return null;
38+
}
39+
40+
@Override
41+
public void setOffset(@FloatRange(from = -1.0, to = 1.0) float offset) {
42+
if (parallaxLayout != null)
43+
parallaxLayout.setOffset(offset);
44+
}
45+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.heinrichreimersoftware.materialintro.view.parallax;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.FloatRange;
5+
import android.support.annotation.Nullable;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
9+
import com.heinrichreimersoftware.materialintro.app.SlideFragment;
10+
11+
import java.util.LinkedList;
12+
import java.util.Queue;
13+
14+
public class ParallaxSlideFragment extends SlideFragment implements Parallaxable {
15+
@Nullable
16+
private Parallaxable parallaxLayout;
17+
18+
@Override
19+
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
20+
parallaxLayout = findParallaxLayout(view);
21+
}
22+
23+
public Parallaxable findParallaxLayout(View root) {
24+
Queue<View> queue = new LinkedList<>();
25+
queue.add(root);
26+
while (!queue.isEmpty()) {
27+
View child = queue.remove();
28+
if (child instanceof Parallaxable) {
29+
return (Parallaxable) child;
30+
}
31+
else if (child instanceof ViewGroup) {
32+
ViewGroup viewGroup = (ViewGroup) child;
33+
for (int i = viewGroup.getChildCount() - 1; i >= 0; i--) {
34+
queue.add(viewGroup.getChildAt(i));
35+
}
36+
}
37+
}
38+
return null;
39+
}
40+
41+
@Override
42+
public void setOffset(@FloatRange(from = -1.0, to = 1.0) float offset) {
43+
if (parallaxLayout != null)
44+
parallaxLayout.setOffset(offset);
45+
}
46+
}

0 commit comments

Comments
 (0)