-
Notifications
You must be signed in to change notification settings - Fork 377
Quick Start
Alexander Vlasov edited this page Sep 7, 2016
·
8 revisions
First, add gradle dependency into your build.gradle:
dependencies {
compile 'com.cleveroad:slidingtutorial:1.0.3'
}
There are two common variants of using library: via TutorialPageProvider and via TutorialPageOptionsProvider.
You have to create page fragments where each fragment must extend from PageFragment, override PageFragment#getLayoutResId() and PageFragment#getTransformItems(). Also you have to create your layout xml file with images.
public class FirstCustomPageFragment extends PageFragment {
@Override
protected int getLayoutResId() {
return R.layout.fragment_page_first;
}
@Override
protected TransformItem[] provideTransformItems() {
return new TransformItem[] {
// TransformItem.create(view for transform, moving direction, shift coefficient)
TransformItem.create(R.id.ivFirstImage, Direction.LEFT_TO_RIGHT, 0.2f),
TransformItem.create(R.id.ivSecondImage, Direction.RIGHT_TO_LEFT, 0.06f),
TransformItem.create(R.id.ivThirdImage, Direction.LEFT_TO_RIGHT, 0.08f),
TransformItem.create(R.id.ivFourthImage, Direction.RIGHT_TO_LEFT, 0.1f),
TransformItem.create(R.id.ivFifthImage, Direction.RIGHT_TO_LEFT, 0.03f),
TransformItem.create(R.id.ivSixthImage, Direction.RIGHT_TO_LEFT, 0.09f),
TransformItem.create(R.id.ivSeventhImage, Direction.RIGHT_TO_LEFT, 0.14f),
TransformItem.create(R.id.ivEighthImage, Direction.RIGHT_TO_LEFT, 0.07f)
};
}
}
Pass TutorialPageProvider instance to TutorialOptions.Builder#setTutorialPageProvider(TutorialPageProvider).
public class CustomTutorialFragment extends TutorialFragment {
private static final int TOTAL_PAGES = 3;
private final TutorialPageProvider<Fragment> mTutorialPageProvider = new TutorialPageProvider<Fragment>() {
@NonNull
@Override
public Fragment providePage(int position) {
switch (position) {
case 0:
return new FirstCustomPageFragment();
case 1:
return new SecondCustomPageFragment();
case 2:
return new ThirdCustomPageFragment();
default:
throw new IllegalArgumentException("Unknown position: " + position);
}
}
};
@Override
protected TutorialOptions provideTutorialOptions() {
return newTutorialOptionsBuilder(getContext())
.setPagesCount(TOTAL_PAGES)
.setTutorialPageProvider(mTutorialPageProvider)
.build();
}
}
Or you can create TutorialPageOptionsProvider and pass it to TutorialOptions.Builder#setTutorialPageProvider(TutorialPageOptionsProvider). It will automatically provide PageFragment instance with specified PageOptions configuration.
public class CustomTutorialFragment extends TutorialFragment {
private static final int TOTAL_PAGES = 3;
private final TutorialPageOptionsProvider mTutorialPageOptionsProvider = new TutorialPageOptionsProvider() {
@NonNull
@Override
public PageOptions provide(int position) {
@LayoutRes int pageLayoutResId;
TransformItem[] tutorialItems;
switch (position) {
case 0: {
pageLayoutResId = R.layout.fragment_page_first;
tutorialItems = new TransformItem[]{
TransformItem.create(R.id.ivFirstImage, Direction.LEFT_TO_RIGHT, 0.2f),
TransformItem.create(R.id.ivSecondImage, Direction.RIGHT_TO_LEFT, 0.06f),
TransformItem.create(R.id.ivThirdImage, Direction.LEFT_TO_RIGHT, 0.08f),
TransformItem.create(R.id.ivFourthImage, Direction.RIGHT_TO_LEFT, 0.1f),
TransformItem.create(R.id.ivFifthImage, Direction.RIGHT_TO_LEFT, 0.03f),
TransformItem.create(R.id.ivSixthImage, Direction.RIGHT_TO_LEFT, 0.09f),
TransformItem.create(R.id.ivSeventhImage, Direction.RIGHT_TO_LEFT, 0.14f),
TransformItem.create(R.id.ivEighthImage, Direction.RIGHT_TO_LEFT, 0.07f)
};
break;
}
case 1: {
pageLayoutResId = R.layout.fragment_page_second;
tutorialItems = new TransformItem[]{
TransformItem.create(R.id.ivFirstImage, Direction.RIGHT_TO_LEFT, 0.2f),
TransformItem.create(R.id.ivSecondImage, Direction.LEFT_TO_RIGHT, 0.06f),
TransformItem.create(R.id.ivThirdImage, Direction.RIGHT_TO_LEFT, 0.08f),
TransformItem.create(R.id.ivFourthImage, Direction.LEFT_TO_RIGHT, 0.1f),
TransformItem.create(R.id.ivFifthImage, Direction.LEFT_TO_RIGHT, 0.03f),
TransformItem.create(R.id.ivSixthImage, Direction.LEFT_TO_RIGHT, 0.09f),
TransformItem.create(R.id.ivSeventhImage, Direction.LEFT_TO_RIGHT, 0.14f),
TransformItem.create(R.id.ivEighthImage, Direction.LEFT_TO_RIGHT, 0.07f)
};
break;
}
case 2: {
pageLayoutResId = R.layout.fragment_page_third;
tutorialItems = new TransformItem[]{
TransformItem.create(R.id.ivFirstImage, Direction.RIGHT_TO_LEFT, 0.2f),
TransformItem.create(R.id.ivSecondImage, Direction.LEFT_TO_RIGHT, 0.06f),
TransformItem.create(R.id.ivThirdImage, Direction.RIGHT_TO_LEFT, 0.08f),
TransformItem.create(R.id.ivFourthImage, Direction.LEFT_TO_RIGHT, 0.1f),
TransformItem.create(R.id.ivFifthImage, Direction.LEFT_TO_RIGHT, 0.03f),
TransformItem.create(R.id.ivSixthImage, Direction.LEFT_TO_RIGHT, 0.09f),
TransformItem.create(R.id.ivSeventhImage, Direction.LEFT_TO_RIGHT, 0.14f)
};
break;
}
default: {
throw new IllegalArgumentException("Unknown position: " + position);
}
}
return PageOptions.create(pageLayoutResId, position, tutorialItems);
}
};
@Override
protected TutorialOptions provideTutorialOptions() {
return newTutorialOptionsBuilder(getContext())
.setPagesCount(TOTAL_PAGES)
.setTutorialPageProvider(mTutorialPageOptionsProvider)
.build();
}
}