1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 02:39:23 +02:00

animation refactoring: code cleanup

This commit is contained in:
Nikolay Pultsin 2011-04-02 16:05:43 +01:00
parent ce6c8c741b
commit f7e913cd2c
2 changed files with 18 additions and 19 deletions

View file

@ -24,7 +24,7 @@ import android.graphics.*;
import org.geometerplus.zlibrary.core.view.ZLView; import org.geometerplus.zlibrary.core.view.ZLView;
abstract class AnimationProvider { abstract class AnimationProvider {
static enum ScrollingMode { static enum Mode {
NoScrolling(false), NoScrolling(false),
ManualScrolling(false), ManualScrolling(false),
AutoScrollingForward(true), AutoScrollingForward(true),
@ -32,11 +32,11 @@ abstract class AnimationProvider {
final boolean Auto; final boolean Auto;
ScrollingMode(boolean auto) { Mode(boolean auto) {
Auto = auto; Auto = auto;
} }
} }
private ScrollingMode myMode = ScrollingMode.NoScrolling; private Mode myMode = Mode.NoScrolling;
protected final Paint myPaint; protected final Paint myPaint;
protected int myStartX; protected int myStartX;
@ -54,17 +54,18 @@ abstract class AnimationProvider {
myPaint = paint; myPaint = paint;
} }
ScrollingMode getScrollingMode() { Mode getMode() {
return myMode; return myMode;
} }
void setScrollingMode(ScrollingMode state) { void terminate() {
myMode = state; myMode = Mode.NoScrolling;
mySpeed = 0;
} }
void terminate() { void startManualScrolling(int startX, int startY, int endX, int endY, ZLView.Direction direction, int w, int h) {
myMode = ScrollingMode.NoScrolling; myMode = Mode.ManualScrolling;
mySpeed = 0; setup(startX, startY, endX, endY, direction, w, h);
} }
void startAutoScrolling(boolean forward, float speed, ZLView.Direction direction, int w, int h) { void startAutoScrolling(boolean forward, float speed, ZLView.Direction direction, int w, int h) {
@ -81,20 +82,20 @@ abstract class AnimationProvider {
} }
myMode = forward myMode = forward
? ScrollingMode.AutoScrollingForward ? Mode.AutoScrollingForward
: ScrollingMode.AutoScrollingBackward; : Mode.AutoScrollingBackward;
mySpeed = speed; mySpeed = speed;
} }
boolean inProgress() { boolean inProgress() {
return myMode != ScrollingMode.NoScrolling; return myMode != Mode.NoScrolling;
} }
private int getScrollingShift() { private int getScrollingShift() {
return myDirection.IsHorizontal ? myEndX - myStartX : myEndY - myStartY; return myDirection.IsHorizontal ? myEndX - myStartX : myEndY - myStartY;
} }
void setup(int startX, int startY, int endX, int endY, ZLView.Direction direction, int width, int height) { private void setup(int startX, int startY, int endX, int endY, ZLView.Direction direction, int width, int height) {
myStartX = startX; myStartX = startX;
myStartY = startY; myStartY = startY;
myEndX = endX; myEndX = endX;
@ -124,7 +125,7 @@ abstract class AnimationProvider {
break; break;
} }
final int bound; final int bound;
if (myMode == ScrollingMode.AutoScrollingForward) { if (myMode == Mode.AutoScrollingForward) {
bound = myDirection.IsHorizontal ? myWidth : myHeight; bound = myDirection.IsHorizontal ? myWidth : myHeight;
} else { } else {
bound = 0; bound = 0;

View file

@ -141,11 +141,11 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
final int h = getMainAreaHeight(); final int h = getMainAreaHeight();
final AnimationProvider animator = getAnimationProvider(); final AnimationProvider animator = getAnimationProvider();
final AnimationProvider.ScrollingMode oldMode = animator.getScrollingMode(); final AnimationProvider.Mode oldMode = animator.getMode();
animator.doStep(); animator.doStep();
if (animator.inProgress()) { if (animator.inProgress()) {
animator.draw(canvas, mySecondaryBitmap, myMainBitmap); animator.draw(canvas, mySecondaryBitmap, myMainBitmap);
if (animator.getScrollingMode().Auto) { if (animator.getMode().Auto) {
postInvalidate(); postInvalidate();
} }
drawFooter(canvas); drawFooter(canvas);
@ -181,9 +181,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
return; return;
} }
getAnimationProvider().setScrollingMode(AnimationProvider.ScrollingMode.ManualScrolling); getAnimationProvider().startManualScrolling(
getAnimationProvider().setup(
startX, startY, startX, startY,
endX, endY, endX, endY,
direction, direction,