diff --git a/src/org/geometerplus/zlibrary/ui/android/view/AnimationProvider.java b/src/org/geometerplus/zlibrary/ui/android/view/AnimationProvider.java index 26b3af1d4..ddaf76984 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/AnimationProvider.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/AnimationProvider.java @@ -23,10 +23,23 @@ import android.graphics.*; abstract class AnimationProvider { protected final Paint myPaint; + protected int myStartX; + protected int myStartY; + protected int myEndX; + protected int myEndY; + protected boolean myHorizontal; protected AnimationProvider(Paint paint) { myPaint = paint; } - public abstract void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap, int startX, int startY, int endX, int endY, boolean horizontal); + public void setup(int startX, int startY, int endX, int endY, boolean horizontal) { + myStartX = startX; + myStartX = startY; + myEndX = endX; + myEndY = endY; + myHorizontal = horizontal; + } + + public abstract void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap); } diff --git a/src/org/geometerplus/zlibrary/ui/android/view/NoneAnimationProvider.java b/src/org/geometerplus/zlibrary/ui/android/view/NoneAnimationProvider.java index dfa9f61d7..4b3ad1528 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/NoneAnimationProvider.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/NoneAnimationProvider.java @@ -27,7 +27,7 @@ class NoneAnimationProvider extends AnimationProvider { } @Override - public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap, int startX, int startY, int endX, int endY, boolean horizontal) { + public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap) { canvas.drawBitmap(fgBitmap, 0, 0, myPaint); } } diff --git a/src/org/geometerplus/zlibrary/ui/android/view/ShiftAnimationProvider.java b/src/org/geometerplus/zlibrary/ui/android/view/ShiftAnimationProvider.java index 2e8ee5082..c27358c5f 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/ShiftAnimationProvider.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/ShiftAnimationProvider.java @@ -27,12 +27,12 @@ class ShiftAnimationProvider extends AnimationProvider { } @Override - public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap, int startX, int startY, int endX, int endY, boolean horizontal) { + public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap) { final int w = fgBitmap.getWidth(); final int h = fgBitmap.getHeight(); myPaint.setColor(Color.rgb(127, 127, 127)); - if (horizontal) { - final int dX = endX - startX; + if (myHorizontal) { + final int dX = myEndX - myStartX; canvas.drawBitmap(bgBitmap, dX > 0 ? dX - w : dX + w, 0, myPaint); canvas.drawBitmap(fgBitmap, dX, 0, myPaint); if (dX > 0 && dX < w) { @@ -41,7 +41,7 @@ class ShiftAnimationProvider extends AnimationProvider { canvas.drawLine(dX + w, 0, dX + w, h + 1, myPaint); } } else { - final int dY = endY - startY; + final int dY = myEndY - myStartY; canvas.drawBitmap(bgBitmap, 0, dY > 0 ? dY - h : dY + h, myPaint); canvas.drawBitmap(fgBitmap, 0, dY, myPaint); if (dY > 0 && dY < h) { diff --git a/src/org/geometerplus/zlibrary/ui/android/view/SlideAnimationProvider.java b/src/org/geometerplus/zlibrary/ui/android/view/SlideAnimationProvider.java index 5c54dccfa..b1ce0bc87 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/SlideAnimationProvider.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/SlideAnimationProvider.java @@ -27,13 +27,13 @@ class SlideAnimationProvider extends AnimationProvider { } @Override - public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap, int startX, int startY, int endX, int endY, boolean horizontal) { + public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap) { canvas.drawBitmap(bgBitmap, 0, 0, myPaint); final int w = fgBitmap.getWidth(); final int h = fgBitmap.getHeight(); myPaint.setColor(Color.rgb(127, 127, 127)); - if (horizontal) { - final int dX = endX - startX; + if (myHorizontal) { + final int dX = myEndX - myStartX; canvas.drawBitmap(fgBitmap, dX, 0, myPaint); if (dX > 0 && dX < w) { canvas.drawLine(dX, 0, dX, h + 1, myPaint); @@ -41,7 +41,7 @@ class SlideAnimationProvider extends AnimationProvider { canvas.drawLine(dX + w, 0, dX + w, h + 1, myPaint); } } else { - final int dY = endY - startY; + final int dY = myEndY - myStartY; canvas.drawBitmap(fgBitmap, 0, dY, myPaint); if (dY > 0 && dY < h) { canvas.drawLine(0, dY, w + 1, dY, myPaint); diff --git a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java index 5aca2d22d..caec56859 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java @@ -143,7 +143,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener { } @Override - public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap, int startX, int startY, int endX, int endY, boolean horizontal) { + public void draw(Canvas canvas, Bitmap bgBitmap, Bitmap fgBitmap) { canvas.drawBitmap(bgBitmap, 0, 0, myPaint); } } @@ -208,13 +208,15 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener { myScrollingSpeed *= 1.5; } - getAnimationProvider().draw( - canvas, - mySecondaryBitmap, myMainBitmap, + getAnimationProvider().setup( myStartX, myStartY, myEndX, myEndY, myScrollHorizontally ); + getAnimationProvider().draw( + canvas, + mySecondaryBitmap, myMainBitmap + ); switch (view.getAnimationType()) { case curl: