Skip to content

Commit 60b9d97

Browse files
committed
Added RaiseFromCenter, RotateAboutTop and RotateAboutBottom Transformers
1 parent b242966 commit 60b9d97

File tree

5 files changed

+84
-7
lines changed

5 files changed

+84
-7
lines changed

app/src/main/java/me/kungfucat/pagetransformerslibrary/MainActivity.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010

1111
import java.util.ArrayList;
1212

13-
import me.kungfucat.viewpagertransformers.DepthPageTransformer;
14-
import me.kungfucat.viewpagertransformers.DrawerTransformer;
15-
import me.kungfucat.viewpagertransformers.WindmillTransformer;
16-
import me.kungfucat.viewpagertransformers.ZoomOutPageTransformer;
13+
import me.kungfucat.viewpagertransformers.RaiseFromCenterTransformer;
14+
import me.kungfucat.viewpagertransformers.RotateAboutBottomTransformer;
15+
import me.kungfucat.viewpagertransformers.RotateAboutTopTransformer;
1716

1817
public class MainActivity extends AppCompatActivity {
1918

@@ -43,7 +42,8 @@ protected void onCreate(Bundle savedInstanceState) {
4342
// viewPager.setPageTransformer(true,new CubeOutTransformer());
4443
// viewPager.setPageTransformer(true, new RandomTransformer());
4544
// viewPager.setPageTransformer(true, new DepthPageTransformer());
46-
viewPager.setPageTransformer(true, new DrawerTransformer());
45+
// viewPager.setPageTransformer(true, new RotateAboutTopTransformer());
46+
viewPager.setPageTransformer(true,new RaiseFromCenterTransformer());
4747
}
4848

4949

viewpagertransformers/src/main/java/me/kungfucat/viewpagertransformers/DrawerTransformer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
public class DrawerTransformer implements ViewPager.PageTransformer {
88
@Override
99
public void transformPage(@NonNull View page, float position) {
10-
int width=page.getWidth();
10+
int width = page.getWidth();
1111

1212
if (position < -1) {
1313
page.setTranslationX(0);
1414
} else if (position > 0 && position <= 1) {
15-
page.setTranslationX(-width/2*position);
15+
page.setTranslationX(-width/2 * position);
1616
} else {
1717
page.setTranslationX(0);
1818
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package me.kungfucat.viewpagertransformers;
2+
3+
import android.support.annotation.NonNull;
4+
import android.support.v4.view.ViewPager;
5+
import android.view.View;
6+
7+
public class RaiseFromCenterTransformer implements ViewPager.PageTransformer {
8+
@Override
9+
public void transformPage(@NonNull View page, float position) {
10+
int width = page.getWidth(), height = page.getHeight();
11+
12+
if (position < -1) {
13+
page.setTranslationX(0);
14+
} else if (position < 0) {
15+
16+
float scale = 1 + position;
17+
page.setPivotX(width/2);
18+
page.setPivotY(height/2);
19+
page.setScaleY(scale);
20+
page.setScaleX(scale);
21+
// Counteract the default motion
22+
page.setTranslationX(-position*width);
23+
} else if (position < 1) {
24+
float scale = 1 - position;
25+
page.setPivotX(width/2);
26+
page.setPivotY(height/2);
27+
page.setScaleY(scale);
28+
page.setScaleX(scale);
29+
// Counteract the default motion
30+
page.setTranslationX(-width * position);
31+
32+
} else {
33+
page.setTranslationX(0);
34+
}
35+
}
36+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package me.kungfucat.viewpagertransformers;
2+
3+
import android.support.annotation.NonNull;
4+
import android.support.v4.view.ViewPager;
5+
import android.view.View;
6+
7+
public class RotateAboutBottomTransformer implements ViewPager.PageTransformer {
8+
@Override
9+
public void transformPage(@NonNull View page, float position) {
10+
11+
final float width = page.getWidth(), height = page.getHeight();
12+
13+
// Rotate about centre bottom part
14+
page.setPivotX(width / 2);
15+
page.setPivotY(height);
16+
// Rotate 20 degrees in anticlockwise
17+
// If want to rotate clockwise, use negative sign
18+
page.setRotation(position * 20);
19+
20+
}
21+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package me.kungfucat.viewpagertransformers;
2+
3+
import android.support.annotation.NonNull;
4+
import android.support.v4.view.ViewPager;
5+
import android.view.View;
6+
7+
public class RotateAboutTopTransformer implements ViewPager.PageTransformer {
8+
9+
@Override
10+
public void transformPage(@NonNull View page, float position) {
11+
12+
final float width = page.getWidth();
13+
14+
//Rotate about top centre of screen, i.e pivoted at width/2 and 0
15+
page.setPivotX(width/2);
16+
page.setPivotY(0f);
17+
page.setRotation(-position*20);
18+
19+
}
20+
}

0 commit comments

Comments
 (0)