+ * The default implementation attempts to reset all view properties. This is useful when toggling transforms that do + * not modify the same page properties. For instance changing from a transformation that applies rotation to a + * transformation that fades can inadvertently leave a fragment stuck with a rotation or with some degree of applied + * alpha. + * + * @param page Apply the transformation to this page + * @param position Position of page relative to the current front-and-center position of the pager. 0 is front and + * center. 1 is one full page position to the right, and -1 is one page position to the left. + */ + protected void onPreTransform(View page, float position) { + final float width = page.getWidth(); + + page.setRotationX(0); + page.setRotationY(0); + page.setRotation(0); + page.setScaleX(1); + page.setScaleY(1); + page.setPivotX(0); + page.setPivotY(0); + page.setTranslationY(0); + page.setTranslationX(isPagingEnabled() ? 0f : -width * position); + + if (hideOffscreenPages()) { + page.setAlpha(position <= -1f || position >= 1f ? 0f : 1f); + page.setEnabled(false); + } else { + page.setEnabled(true); + page.setAlpha(1f); + } + } + + /** + * Called each {@link #transformPage(android.view.View, float)} after {@link #onTransform(android.view.View, float)}. + * + * @param page Apply the transformation to this page + * @param position Position of page relative to the current front-and-center position of the pager. 0 is front and + * center. 1 is one full page position to the right, and -1 is one page position to the left. + */ + protected void onPostTransform(View page, float position) { + } + + /** + * Same as {@link Math#min(double, double)} without double casting, zero closest to infinity handling, or NaN support. + * + * @param val + * @param min + * @return + */ + protected static final float min(float val, float min) { + return val < min ? min : val; } } \ No newline at end of file diff --git a/library/src/main/java/com/cpacm/library/transformers/CubeInTransformer.java b/library/src/main/java/com/cpacm/library/transformers/CubeInTransformer.java index d778019..4260854 100644 --- a/library/src/main/java/com/cpacm/library/transformers/CubeInTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/CubeInTransformer.java @@ -4,12 +4,17 @@ public class CubeInTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - // Rotate the fragment on the left or right edge - ViewHelper.setPivotX(view,position > 0 ? 0 : view.getWidth()); - ViewHelper.setPivotY(view,0); - ViewHelper.setRotation(view,-90f * position); - } + @Override + protected void onTransform(View view, float position) { + // Rotate the fragment on the left or right edge + view.setPivotX(position > 0 ? 0 : view.getWidth()); + view.setPivotY(0); + view.setRotation(-90f * position); + } + + @Override + public boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/cpacm/library/transformers/CubeOutTransformer.java b/library/src/main/java/com/cpacm/library/transformers/CubeOutTransformer.java new file mode 100644 index 0000000..edffdcd --- /dev/null +++ b/library/src/main/java/com/cpacm/library/transformers/CubeOutTransformer.java @@ -0,0 +1,19 @@ +package com.cpacm.library.transformers; + +import android.view.View; + +public class CubeOutTransformer extends BaseTransformer { + + @Override + protected void onTransform(View view, float position) { + view.setPivotX(position < 0f ? view.getWidth() : 0f); + view.setPivotY(view.getHeight() * 0.5f); + view.setRotationY(90f * position); + } + + @Override + public boolean isPagingEnabled() { + return true; + } + +} diff --git a/library/src/main/java/com/cpacm/library/transformers/CyclePageTransformer.java b/library/src/main/java/com/cpacm/library/transformers/CyclePageTransformer.java index 87c7c60..02a982b 100644 --- a/library/src/main/java/com/cpacm/library/transformers/CyclePageTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/CyclePageTransformer.java @@ -91,6 +91,12 @@ public CyclePageTransformer(SimpleViewPager viewPager) { resetScaleBy(); } + @Override + public void transformPage(View page, float position) { + onTransform(page, position); + } + + @Override public void onTransform(final View page, final float position) { // Handle page layer and bounds visibility diff --git a/library/src/main/java/com/cpacm/library/transformers/DefaultTransformer.java b/library/src/main/java/com/cpacm/library/transformers/DefaultTransformer.java index 272a51b..1d40d50 100644 --- a/library/src/main/java/com/cpacm/library/transformers/DefaultTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/DefaultTransformer.java @@ -4,8 +4,13 @@ public class DefaultTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - } + @Override + protected void onTransform(View view, float position) { + } + + @Override + public boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/cpacm/library/transformers/DepthPageTransformer.java b/library/src/main/java/com/cpacm/library/transformers/DepthPageTransformer.java index cf814bf..a343288 100644 --- a/library/src/main/java/com/cpacm/library/transformers/DepthPageTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/DepthPageTransformer.java @@ -5,23 +5,28 @@ public class DepthPageTransformer extends BaseTransformer { - private static final float MIN_SCALE = 0.75f; - - @Override - protected void onTransform(View view, float position) { - if (position <= 0f) { - ViewHelper.setTranslationX(view,0f); - ViewHelper.setScaleX(view,1f); - ViewHelper.setScaleY(view,1f); - } else if (position <= 1f) { - final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); - ViewHelper.setAlpha(view,1-position); - ViewHelper.setPivotY(view,0.5f * view.getHeight()); - ViewHelper.setTranslationX(view,view.getWidth() * - position); - ViewHelper.setScaleX(view,scaleFactor); - ViewHelper.setScaleY(view,scaleFactor); - } - } + private static final float MIN_SCALE = 0.75f; + + @Override + protected void onTransform(View view, float position) { + if (position <= 0f) { + view.setTranslationX(0f); + view.setScaleX(1f); + view.setScaleY(1f); + } else if (position <= 1f) { + final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); + view.setAlpha(1 - position); + view.setPivotY(0.5f * view.getHeight()); + view.setTranslationX(view.getWidth() * -position); + view.setScaleX(scaleFactor); + view.setScaleY(scaleFactor); + } + } + + @Override + protected boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/cpacm/library/transformers/DrawerTransformer.java b/library/src/main/java/com/cpacm/library/transformers/DrawerTransformer.java new file mode 100644 index 0000000..eae9e33 --- /dev/null +++ b/library/src/main/java/com/cpacm/library/transformers/DrawerTransformer.java @@ -0,0 +1,15 @@ +package com.cpacm.library.transformers; + +import android.view.View; + +public class DrawerTransformer extends BaseTransformer { + + @Override + protected void onTransform(View view, float position) { + if (position <= 0) { + view.setTranslationX(0); + } else if (position > 0 && position <= 1) { + view.setTranslationX(-view.getWidth() / 2 * position); + } + } +} diff --git a/library/src/main/java/com/cpacm/library/transformers/FadeTransformer.java b/library/src/main/java/com/cpacm/library/transformers/FadeTransformer.java index 02be43e..d82e4f6 100644 --- a/library/src/main/java/com/cpacm/library/transformers/FadeTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/FadeTransformer.java @@ -11,20 +11,20 @@ public class FadeTransformer extends BaseTransformer { protected void onTransform(View view, float position) { // Page is not an immediate sibling, just make transparent - if(position < -1 || position > 1) { - ViewHelper.setAlpha(view,0.6f); + if (position < -1 || position > 1) { + view.setAlpha(0.6f); } // Page is sibling to left or right else if (position <= 0 || position <= 1) { // Calculate alpha. Position is decimal in [-1,0] or [0,1] float alpha = (position <= 0) ? position + 1 : 1 - position; - ViewHelper.setAlpha(view,alpha); + view.setAlpha(alpha); } // Page is active, make fully visible else if (position == 0) { - ViewHelper.setAlpha(view,1); + view.setAlpha(1); } } diff --git a/library/src/main/java/com/cpacm/library/transformers/FlipHorizontalTransformer.java b/library/src/main/java/com/cpacm/library/transformers/FlipHorizontalTransformer.java index 59436d9..39038c6 100644 --- a/library/src/main/java/com/cpacm/library/transformers/FlipHorizontalTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/FlipHorizontalTransformer.java @@ -4,13 +4,25 @@ public class FlipHorizontalTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - final float rotation = 180f * position; - ViewHelper.setAlpha(view,rotation > 90f || rotation < -90f ? 0 : 1); - ViewHelper.setPivotY(view,view.getHeight()*0.5f); - ViewHelper.setPivotX(view,view.getWidth() * 0.5f); - ViewHelper.setRotationY(view,rotation); - } + @Override + protected void onTransform(View view, float position) { + final float rotation = 180f * position; + view.setAlpha(rotation > 90f || rotation < -90f ? 0 : 1); + view.setPivotY(view.getHeight() * 0.5f); + view.setPivotX(view.getWidth() * 0.5f); + view.setRotationY(rotation); + } + + @Override + protected void onPostTransform(View page, float position) { + super.onPostTransform(page, position); + + //resolve problem: new page can't handle click event! + if (position > -0.5f && position < 0.5f) { + page.setVisibility(View.VISIBLE); + } else { + page.setVisibility(View.INVISIBLE); + } + } } diff --git a/library/src/main/java/com/cpacm/library/transformers/FlipPageViewTransformer.java b/library/src/main/java/com/cpacm/library/transformers/FlipPageViewTransformer.java index 2de8948..a8b0249 100644 --- a/library/src/main/java/com/cpacm/library/transformers/FlipPageViewTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/FlipPageViewTransformer.java @@ -10,7 +10,7 @@ public class FlipPageViewTransformer extends BaseTransformer { @Override protected void onTransform(View view, float position) { float percentage = 1 - Math.abs(position); - if(Build.VERSION.SDK_INT >= 13){ + if (Build.VERSION.SDK_INT >= 13) { view.setCameraDistance(12000); } setVisibility(view, position); @@ -30,19 +30,19 @@ private void setVisibility(View page, float position) { private void setTranslation(View view) { ViewPager viewPager = (ViewPager) view.getParent(); int scroll = viewPager.getScrollX() - view.getLeft(); - ViewHelper.setTranslationX(view,scroll); + view.setTranslationX(scroll); } private void setSize(View view, float position, float percentage) { - ViewHelper.setScaleX(view,(position != 0 && position != 1) ? percentage : 1); - ViewHelper.setScaleY(view,(position != 0 && position != 1) ? percentage : 1); + view.setScaleX((position != 0 && position != 1) ? percentage : 1); + view.setScaleY((position != 0 && position != 1) ? percentage : 1); } private void setRotation(View view, float position, float percentage) { if (position > 0) { - ViewHelper.setRotationY(view,-180 * (percentage + 1)); + view.setRotationY(-180 * (percentage + 1)); } else { - ViewHelper.setRotationY(view,180 * (percentage + 1)); + view.setRotationY(180 * (percentage + 1)); } } } \ No newline at end of file diff --git a/library/src/main/java/com/cpacm/library/transformers/ForegroundToBackgroundTransformer.java b/library/src/main/java/com/cpacm/library/transformers/ForegroundToBackgroundTransformer.java index 56ad781..0664ac3 100644 --- a/library/src/main/java/com/cpacm/library/transformers/ForegroundToBackgroundTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/ForegroundToBackgroundTransformer.java @@ -5,21 +5,17 @@ public class ForegroundToBackgroundTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - final float height = view.getHeight(); - final float width = view.getWidth(); - final float scale = min(position > 0 ? 1f : Math.abs(1f + position), 0.5f); + @Override + protected void onTransform(View view, float position) { + final float height = view.getHeight(); + final float width = view.getWidth(); + final float scale = min(position > 0 ? 1f : Math.abs(1f + position), 0.5f); - ViewHelper.setScaleX(view,scale); - ViewHelper.setScaleY(view,scale); - ViewHelper.setPivotX(view,width * 0.5f); - ViewHelper.setPivotY(view,height * 0.5f); - ViewHelper.setTranslationX(view,position > 0 ? width * position : -width * position * 0.25f); - } - - private static final float min(float val, float min) { - return val < min ? min : val; - } + view.setScaleX(scale); + view.setScaleY(scale); + view.setPivotX(width * 0.5f); + view.setPivotY(height * 0.5f); + view.setTranslationX(position > 0 ? width * position : -width * position * 0.25f); + } } diff --git a/library/src/main/java/com/cpacm/library/transformers/RotateDownTransformer.java b/library/src/main/java/com/cpacm/library/transformers/RotateDownTransformer.java index 966534d..6b1f370 100644 --- a/library/src/main/java/com/cpacm/library/transformers/RotateDownTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/RotateDownTransformer.java @@ -4,17 +4,21 @@ public class RotateDownTransformer extends BaseTransformer { - private static final float ROT_MOD = -15f; + private static final float ROT_MOD = -15f; - @Override - protected void onTransform(View view, float position) { - final float width = view.getWidth(); - final float height = view.getHeight(); - final float rotation = ROT_MOD * position * -1.25f; + @Override + protected void onTransform(View view, float position) { + final float width = view.getWidth(); + final float height = view.getHeight(); + final float rotation = ROT_MOD * position * -1.25f; - ViewHelper.setPivotX(view,width * 0.5f); - ViewHelper.setPivotY(view,height); - ViewHelper.setRotation(view,rotation); - } + view.setPivotX(width * 0.5f); + view.setPivotY(height); + view.setRotation(rotation); + } + @Override + protected boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/cpacm/library/transformers/RotateUpTransformer.java b/library/src/main/java/com/cpacm/library/transformers/RotateUpTransformer.java index a64ac05..1879ac3 100644 --- a/library/src/main/java/com/cpacm/library/transformers/RotateUpTransformer.java +++ b/library/src/main/java/com/cpacm/library/transformers/RotateUpTransformer.java @@ -4,17 +4,22 @@ public class RotateUpTransformer extends BaseTransformer { - private static final float ROT_MOD = -15f; + private static final float ROT_MOD = -15f; - @Override - protected void onTransform(View view, float position) { - final float width = view.getWidth(); - final float rotation = ROT_MOD * position; + @Override + protected void onTransform(View view, float position) { + final float width = view.getWidth(); + final float rotation = ROT_MOD * position; - ViewHelper.setPivotX(view,width * 0.5f); - ViewHelper.setPivotY(view,0f); - ViewHelper.setTranslationX(view,0f); - ViewHelper.setRotation(view,rotation); - } + view.setPivotX(width * 0.5f); + view.setPivotY(0f); + view.setTranslationX(0f); + view.setRotation(rotation); + } + + @Override + protected boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/cpacm/library/transformers/ScaleInOutTransformer.java b/library/src/main/java/com/cpacm/library/transformers/ScaleInOutTransformer.java new file mode 100644 index 0000000..d785ccd --- /dev/null +++ b/library/src/main/java/com/cpacm/library/transformers/ScaleInOutTransformer.java @@ -0,0 +1,22 @@ +package com.cpacm.library.transformers; + +import android.view.View; + +/** + *
+ *
+ * @author cpacm 2018/6/6
+ */
+public class ScaleInOutTransformer extends BaseTransformer {
+
+ @Override
+ protected void onTransform(View view, float position) {
+
+ view.setPivotX(position < 0 ? 0 : view.getWidth());
+ view.setPivotY(view.getHeight() / 2f);
+ float scale = position < 0 ? 1f + position : 1f - position;
+ view.setScaleX(scale);
+ view.setScaleY(scale);
+
+ }
+}
diff --git a/library/src/main/java/com/cpacm/library/transformers/StackTransformer.java b/library/src/main/java/com/cpacm/library/transformers/StackTransformer.java
index d1b39cf..8b7a7c3 100644
--- a/library/src/main/java/com/cpacm/library/transformers/StackTransformer.java
+++ b/library/src/main/java/com/cpacm/library/transformers/StackTransformer.java
@@ -6,7 +6,7 @@ public class StackTransformer extends BaseTransformer {
@Override
protected void onTransform(View view, float position) {
- ViewHelper.setTranslationX(view,position < 0 ? 0f : -view.getWidth() * position);
+ view.setTranslationX(position < 0 ? 0f : -view.getWidth() * position);
}
}
diff --git a/library/src/main/java/com/cpacm/library/transformers/TabletTransformer.java b/library/src/main/java/com/cpacm/library/transformers/TabletTransformer.java
index dda2e4d..8943bc3 100644
--- a/library/src/main/java/com/cpacm/library/transformers/TabletTransformer.java
+++ b/library/src/main/java/com/cpacm/library/transformers/TabletTransformer.java
@@ -6,33 +6,33 @@
public class TabletTransformer extends BaseTransformer {
- private static final Matrix OFFSET_MATRIX = new Matrix();
- private static final Camera OFFSET_CAMERA = new Camera();
- private static final float[] OFFSET_TEMP_FLOAT = new float[2];
-
- @Override
- protected void onTransform(View view, float position) {
- final float rotation = (position < 0 ? 30f : -30f) * Math.abs(position);
-
- ViewHelper.setTranslationX(view,getOffsetXForRotation(rotation, view.getWidth(), view.getHeight()));
- ViewHelper.setPivotX(view,view.getWidth() * 0.5f);
- ViewHelper.setPivotY(view,0);
- ViewHelper.setRotationY(view,rotation);
- }
-
- protected static final float getOffsetXForRotation(float degrees, int width, int height) {
- OFFSET_MATRIX.reset();
- OFFSET_CAMERA.save();
- OFFSET_CAMERA.rotateY(Math.abs(degrees));
- OFFSET_CAMERA.getMatrix(OFFSET_MATRIX);
- OFFSET_CAMERA.restore();
-
- OFFSET_MATRIX.preTranslate(-width * 0.5f, -height * 0.5f);
- OFFSET_MATRIX.postTranslate(width * 0.5f, height * 0.5f);
- OFFSET_TEMP_FLOAT[0] = width;
- OFFSET_TEMP_FLOAT[1] = height;
- OFFSET_MATRIX.mapPoints(OFFSET_TEMP_FLOAT);
- return (width - OFFSET_TEMP_FLOAT[0]) * (degrees > 0.0f ? 1.0f : -1.0f);
- }
+ private static final Matrix OFFSET_MATRIX = new Matrix();
+ private static final Camera OFFSET_CAMERA = new Camera();
+ private static final float[] OFFSET_TEMP_FLOAT = new float[2];
+
+ @Override
+ protected void onTransform(View view, float position) {
+ final float rotation = (position < 0 ? 30f : -30f) * Math.abs(position);
+
+ view.setTranslationX(getOffsetXForRotation(rotation, view.getWidth(), view.getHeight()));
+ view.setPivotX(view.getWidth() * 0.5f);
+ view.setPivotY(0);
+ view.setRotationY(rotation);
+ }
+
+ protected static final float getOffsetXForRotation(float degrees, int width, int height) {
+ OFFSET_MATRIX.reset();
+ OFFSET_CAMERA.save();
+ OFFSET_CAMERA.rotateY(Math.abs(degrees));
+ OFFSET_CAMERA.getMatrix(OFFSET_MATRIX);
+ OFFSET_CAMERA.restore();
+
+ OFFSET_MATRIX.preTranslate(-width * 0.5f, -height * 0.5f);
+ OFFSET_MATRIX.postTranslate(width * 0.5f, height * 0.5f);
+ OFFSET_TEMP_FLOAT[0] = width;
+ OFFSET_TEMP_FLOAT[1] = height;
+ OFFSET_MATRIX.mapPoints(OFFSET_TEMP_FLOAT);
+ return (width - OFFSET_TEMP_FLOAT[0]) * (degrees > 0.0f ? 1.0f : -1.0f);
+ }
}
diff --git a/library/src/main/java/com/cpacm/library/transformers/ViewHelper.java b/library/src/main/java/com/cpacm/library/transformers/ViewHelper.java
deleted file mode 100644
index 1957b6f..0000000
--- a/library/src/main/java/com/cpacm/library/transformers/ViewHelper.java
+++ /dev/null
@@ -1,242 +0,0 @@
-package com.cpacm.library.transformers;
-
-/**
- * user for android 3.0+
- * Auther: cpacm
- * Date: 2016/3/18 0018
- */
-
-import android.view.View;
-
-
-public final class ViewHelper {
- private ViewHelper() {
- }
-
- public static float getAlpha(View view) {
- return Honeycomb.getAlpha(view);
- }
-
- public static void setAlpha(View view, float alpha) {
- Honeycomb.setAlpha(view, alpha);
- }
-
- public static float getPivotX(View view) {
- return Honeycomb.getPivotX(view);
- }
-
- public static void setPivotX(View view, float pivotX) {
- Honeycomb.setPivotX(view, pivotX);
- }
-
- public static float getPivotY(View view) {
- return Honeycomb.getPivotY(view);
- }
-
- public static void setPivotY(View view, float pivotY) {
- Honeycomb.setPivotY(view, pivotY);
- }
-
- public static float getRotation(View view) {
- return Honeycomb.getRotation(view);
- }
-
- public static void setRotation(View view, float rotation) {
- Honeycomb.setRotation(view, rotation);
- }
-
- public static float getRotationX(View view) {
- return Honeycomb.getRotationX(view);
- }
-
- public static void setRotationX(View view, float rotationX) {
- Honeycomb.setRotationX(view, rotationX);
- }
-
- public static float getRotationY(View view) {
- return Honeycomb.getRotationY(view);
- }
-
- public static void setRotationY(View view, float rotationY) {
- Honeycomb.setRotationY(view, rotationY);
- }
-
- public static float getScaleX(View view) {
- return Honeycomb.getScaleX(view);
- }
-
- public static void setScaleX(View view, float scaleX) {
- Honeycomb.setScaleX(view, scaleX);
- }
-
- public static float getScaleY(View view) {
- return Honeycomb.getScaleY(view);
- }
-
- public static void setScaleY(View view, float scaleY) {
- Honeycomb.setScaleY(view, scaleY);
- }
-
- public static float getScrollX(View view) {
- return Honeycomb.getScrollX(view);
- }
-
- public static void setScrollX(View view, int scrollX) {
- Honeycomb.setScrollX(view, scrollX);
- }
-
- public static float getScrollY(View view) {
- return Honeycomb.getScrollY(view);
- }
-
- public static void setScrollY(View view, int scrollY) {
- Honeycomb.setScrollY(view, scrollY);
- }
-
- public static float getTranslationX(View view) {
- return Honeycomb.getTranslationX(view);
- }
-
- public static void setTranslationX(View view, float translationX) {
- Honeycomb.setTranslationX(view, translationX);
- }
-
- public static float getTranslationY(View view) {
- return Honeycomb.getTranslationY(view);
- }
-
- public static void setTranslationY(View view, float translationY) {
- Honeycomb.setTranslationY(view, translationY);
- }
-
- public static float getX(View view) {
- return Honeycomb.getX(view);
- }
-
- public static void setX(View view, float x) {
- Honeycomb.setX(view, x);
- }
-
- public static float getY(View view) {
- return Honeycomb.getY(view);
- }
-
- public static void setY(View view, float y) {
- Honeycomb.setY(view, y);
- }
-
- private static final class Honeycomb {
- static float getAlpha(View view) {
- return view.getAlpha();
- }
-
- static void setAlpha(View view, float alpha) {
- view.setAlpha(alpha);
- }
-
- static float getPivotX(View view) {
- return view.getPivotX();
- }
-
- static void setPivotX(View view, float pivotX) {
- view.setPivotX(pivotX);
- }
-
- static float getPivotY(View view) {
- return view.getPivotY();
- }
-
- static void setPivotY(View view, float pivotY) {
- view.setPivotY(pivotY);
- }
-
- static float getRotation(View view) {
- return view.getRotation();
- }
-
- static void setRotation(View view, float rotation) {
- view.setRotation(rotation);
- }
-
- static float getRotationX(View view) {
- return view.getRotationX();
- }
-
- static void setRotationX(View view, float rotationX) {
- view.setRotationX(rotationX);
- }
-
- static float getRotationY(View view) {
- return view.getRotationY();
- }
-
- static void setRotationY(View view, float rotationY) {
- view.setRotationY(rotationY);
- }
-
- static float getScaleX(View view) {
- return view.getScaleX();
- }
-
- static void setScaleX(View view, float scaleX) {
- view.setScaleX(scaleX);
- }
-
- static float getScaleY(View view) {
- return view.getScaleY();
- }
-
- static void setScaleY(View view, float scaleY) {
- view.setScaleY(scaleY);
- }
-
- static float getScrollX(View view) {
- return view.getScrollX();
- }
-
- static void setScrollX(View view, int scrollX) {
- view.setScrollX(scrollX);
- }
-
- static float getScrollY(View view) {
- return view.getScrollY();
- }
-
- static void setScrollY(View view, int scrollY) {
- view.setScrollY(scrollY);
- }
-
- static float getTranslationX(View view) {
- return view.getTranslationX();
- }
-
- static void setTranslationX(View view, float translationX) {
- view.setTranslationX(translationX);
- }
-
- static float getTranslationY(View view) {
- return view.getTranslationY();
- }
-
- static void setTranslationY(View view, float translationY) {
- view.setTranslationY(translationY);
- }
-
- static float getX(View view) {
- return view.getX();
- }
-
- static void setX(View view, float x) {
- view.setX(x);
- }
-
- static float getY(View view) {
- return view.getY();
- }
-
- static void setY(View view, float y) {
- view.setY(y);
- }
- }
-}
-
diff --git a/library/src/main/java/com/cpacm/library/transformers/ZoomInTransformer.java b/library/src/main/java/com/cpacm/library/transformers/ZoomInTransformer.java
index e706ef7..8a69676 100644
--- a/library/src/main/java/com/cpacm/library/transformers/ZoomInTransformer.java
+++ b/library/src/main/java/com/cpacm/library/transformers/ZoomInTransformer.java
@@ -4,14 +4,14 @@
public class ZoomInTransformer extends BaseTransformer {
- @Override
- protected void onTransform(View view, float position) {
- final float scale = position < 0 ? position + 1f : Math.abs(1f - position);
- ViewHelper.setScaleX(view,scale);
- ViewHelper.setScaleY(view,scale);
- ViewHelper.setPivotX(view,view.getWidth() * 0.5f);
- ViewHelper.setPivotY(view,view.getHeight() * 0.5f);
- ViewHelper.setAlpha(view,position < -1f || position > 1f ? 0f : 1f - (scale - 1f));
- }
+ @Override
+ protected void onTransform(View view, float position) {
+ final float scale = position < 0 ? position + 1f : Math.abs(1f - position);
+ view.setScaleX(scale);
+ view.setScaleY(scale);
+ view.setPivotX(view.getWidth() * 0.5f);
+ view.setPivotY(view.getHeight() * 0.5f);
+ view.setAlpha(position < -1f || position > 1f ? 0f : 1f - (scale - 1f));
+ }
}
diff --git a/library/src/main/java/com/cpacm/library/transformers/ZoomOutSlideTransformer.java b/library/src/main/java/com/cpacm/library/transformers/ZoomOutSlideTransformer.java
index 4790562..711833a 100644
--- a/library/src/main/java/com/cpacm/library/transformers/ZoomOutSlideTransformer.java
+++ b/library/src/main/java/com/cpacm/library/transformers/ZoomOutSlideTransformer.java
@@ -12,26 +12,28 @@ protected void onTransform(View view, float position) {
if (position >= -1 || position <= 1) {
// Modify the default slide transition to shrink the page as well
final float height = view.getHeight();
+ final float width = view.getWidth();
final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
final float vertMargin = height * (1 - scaleFactor) / 2;
- final float horzMargin = view.getWidth() * (1 - scaleFactor) / 2;
+ final float horzMargin = width * (1 - scaleFactor) / 2;
- // Center vertically
- ViewHelper.setPivotY(view,0.5f * height);
+ // Center vertically
+ view.setPivotY(0.5f * height);
+ view.setPivotX(0.5f * width);
if (position < 0) {
- ViewHelper.setTranslationX(view,horzMargin - vertMargin / 2);
+ view.setTranslationX(horzMargin - vertMargin / 2);
} else {
- ViewHelper.setTranslationX(view,-horzMargin + vertMargin / 2);
+ view.setTranslationX(-horzMargin + vertMargin / 2);
}
// Scale the page down (between MIN_SCALE and 1)
- ViewHelper.setScaleX(view,scaleFactor);
- ViewHelper.setScaleY(view,scaleFactor);
+ view.setScaleX(scaleFactor);
+ view.setScaleY(scaleFactor);
// Fade the page relative to its size.
- ViewHelper.setAlpha(view,MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
+ view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
}
}
diff --git a/library/src/main/java/com/cpacm/library/transformers/ZoomOutTransformer.java b/library/src/main/java/com/cpacm/library/transformers/ZoomOutTransformer.java
new file mode 100644
index 0000000..e1ea9d1
--- /dev/null
+++ b/library/src/main/java/com/cpacm/library/transformers/ZoomOutTransformer.java
@@ -0,0 +1,18 @@
+package com.cpacm.library.transformers;
+
+import android.view.View;
+
+public class ZoomOutTransformer extends BaseTransformer {
+ @Override
+ protected void onTransform(View view, float position) {
+ final float scale = 1f + Math.abs(position);
+ view.setScaleX(scale);
+ view.setScaleY(scale);
+ view.setPivotX(view.getWidth() * 0.5f);
+ view.setPivotY(view.getHeight() * 0.5f);
+ view.setAlpha(position < -1f || position > 1f ? 0f : 1f - (scale - 1f));
+ if (position == -1) {
+ view.setTranslationX(view.getWidth() * -1);
+ }
+ }
+}
diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml
deleted file mode 100644
index a955128..0000000
--- a/library/src/main/res/values/attrs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-