package agency.tango.materialintroscreen.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<View> 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);
}
}
}