Skip to content

Commit 246467c

Browse files
feat: ability to set custom PageTransformer
1 parent 403f76f commit 246467c

File tree

7 files changed

+41
-10
lines changed

7 files changed

+41
-10
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ All you need to do is:
3131
First, add gradle dependency into your build.gradle:
3232
```groovy
3333
dependencies {
34-
compile 'com.cleveroad:slidingtutorial:1.0.3'
34+
compile 'com.cleveroad:slidingtutorial:1.0.4'
3535
}
3636
```
3737

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ buildscript {
55
jcenter()
66
}
77
dependencies {
8-
classpath 'com.android.tools.build:gradle:2.1.0'
8+
classpath 'com.android.tools.build:gradle:2.2.0'
99
// NOTE: Do not place your application dependencies here; they belong
1010
// in the individual module build.gradle files
1111
}

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
VERSION_NAME=1.0.3
2-
VERSION_CODE=13
1+
VERSION_NAME=1.0.4
2+
VERSION_CODE=14
33
GROUP=com.cleveroad
44

55
POM_DESCRIPTION=Sliding tutorial is simple library that help other developers easy create great tutotial
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Thu Aug 18 11:11:03 EEST 2016
1+
#Wed Sep 21 09:37:23 EEST 2016
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

lib/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
defaultConfig {
88
minSdkVersion 14
99
targetSdkVersion 24
10-
versionCode 12
11-
versionName "1.0.2"
10+
versionCode 14
11+
versionName "1.0.4"
1212
}
1313
buildTypes {
1414
release {
@@ -22,7 +22,7 @@ android {
2222

2323
dependencies {
2424
compile fileTree(dir: 'libs', include: ['*.jar'])
25-
compile 'com.android.support:support-v4:24.2.0'
25+
compile 'com.android.support:support-v4:24.2.1'
2626
}
2727

2828
apply from: './gradle-mvn-push.gradle'

lib/src/main/java/com/cleveroad/slidingtutorial/TutorialImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,11 @@ public void transformPage(View view, float position) {
295295
if (obj instanceof PageImpl) {
296296
((PageImpl) obj).transformPage(view.getWidth(), position);
297297
}
298+
299+
ViewPager.PageTransformer userPageTransformer = mTutorialOptions.getPageTransformer();
300+
if(userPageTransformer != null) {
301+
userPageTransformer.transformPage(view, position);
302+
}
298303
}
299304
}
300305

lib/src/main/java/com/cleveroad/slidingtutorial/TutorialOptions.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import android.content.Context;
2727
import android.support.annotation.NonNull;
2828
import android.support.annotation.Nullable;
29+
import android.support.v4.view.ViewPager;
2930
import android.view.View;
3031

3132
/**
@@ -41,13 +42,16 @@ public final class TutorialOptions {
4142
private View.OnClickListener mOnSkipClickListener;
4243
private IndicatorOptions mIndicatorOptions;
4344
private TutorialPageProvider mTutorialPageProvider;
45+
private ViewPager.PageTransformer mPageTransformer;
4446

4547
@SuppressWarnings("unchecked")
4648
static TutorialOptions create(@NonNull Builder builder) {
47-
return new TutorialOptions(builder.isUseAutoRemoveTutorialFragment(),
49+
TutorialOptions tutorialOptions = new TutorialOptions(builder.isUseAutoRemoveTutorialFragment(),
4850
builder.isUseInfiniteScroll(), builder.getPagesCount(), builder.getPagesColors(),
4951
builder.getOnSkipClickListener(), builder.getTutorialPageProvider(),
5052
builder.getIndicatorOptions());
53+
tutorialOptions.mPageTransformer = builder.mPageTransformer;
54+
return tutorialOptions;
5155
}
5256

5357
private TutorialOptions(boolean autoRemoveTutorialFragment, boolean useInfiniteScroll,
@@ -96,6 +100,11 @@ TutorialPageProvider getTutorialPageProvider() {
96100
return mTutorialPageProvider;
97101
}
98102

103+
@Nullable
104+
ViewPager.PageTransformer getPageTransformer() {
105+
return mPageTransformer;
106+
}
107+
99108
/**
100109
* Create new {@link TutorialOptions.Builder} instance.
101110
*
@@ -120,6 +129,7 @@ public final static class Builder<TFragment> {
120129
private IndicatorOptions mIndicatorOptions;
121130
private TutorialPageProvider<TFragment> mTutorialPageProvider;
122131
private Context mContext;
132+
private ViewPager.PageTransformer mPageTransformer;
123133

124134
private Builder(@NonNull Context context, Class<TFragment> aClass) {
125135
mContext = ValidationUtil.checkNotNull(context);
@@ -266,6 +276,22 @@ public Builder<TFragment> setTutorialPageProvider(@NonNull TutorialPageProvider<
266276
return this;
267277
}
268278

279+
/**
280+
* Set a {@link ViewPager.PageTransformer} that will be called for each attached page whenever
281+
* the scroll position is changed. This allows the application to apply custom property
282+
* transformations to each page, overriding the default sliding look and feel.
283+
*
284+
* <p><em>Note:</em> Prior to Android 3.0 the property animation APIs did not exist.
285+
* As a result, setting a PageTransformer prior to Android 3.0 (API 11) will have no effect.</p>
286+
* @param pageTransformer PageTransformer that will modify each page's animation properties
287+
* @return current {@link Builder}
288+
* @see ViewPager#setPageTransformer(boolean, ViewPager.PageTransformer)
289+
*/
290+
public Builder<TFragment> setPageTransformer(ViewPager.PageTransformer pageTransformer) {
291+
mPageTransformer = pageTransformer;
292+
return this;
293+
}
294+
269295
/**
270296
* Create {@link TutorialOptions} instance based on specified parameters in {@link Builder}.
271297
*

0 commit comments

Comments
 (0)