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

scrolling refactoring (in progress)

This commit is contained in:
Nikolay Pultsin 2011-03-27 07:38:59 +01:00
parent caea6f0f7f
commit 56302ca25a

View file

@ -75,7 +75,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
myScrollingShift = 0; myScrollingShift = 0;
myScreenIsTouched = false; myScreenIsTouched = false;
view.onScrollingFinished(ZLView.PAGE_CENTRAL); view.onScrollingFinished(ZLView.PAGE_CENTRAL);
setPageToScroll(ZLView.PAGE_CENTRAL); setPageToScrollTo(ZLView.PAGE_CENTRAL);
} }
} }
@ -137,10 +137,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
} }
myScrollingSpeed *= 1.5; myScrollingSpeed *= 1.5;
} }
final boolean horizontal = final int size = myScrollHorizontally ? w : h;
myViewPageToScroll == ZLView.PAGE_RIGHT ||
myViewPageToScroll == ZLView.PAGE_LEFT;
final int size = horizontal ? w : h;
int shift = myScrollingShift < 0 ? myScrollingShift + size : myScrollingShift - size; int shift = myScrollingShift < 0 ? myScrollingShift + size : myScrollingShift - size;
switch (view.getAnimationType()) { switch (view.getAnimationType()) {
case none: case none:
@ -148,8 +145,8 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
case shift: case shift:
canvas.drawBitmap( canvas.drawBitmap(
mySecondaryBitmap, mySecondaryBitmap,
horizontal ? shift : 0, myScrollHorizontally ? shift : 0,
horizontal ? 0 : shift, myScrollHorizontally ? 0 : shift,
myPaint myPaint
); );
break; break;
@ -174,8 +171,8 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
case slide: case slide:
canvas.drawBitmap( canvas.drawBitmap(
myMainBitmap, myMainBitmap,
horizontal ? myScrollingShift : 0, myScrollHorizontally ? myScrollingShift : 0,
horizontal ? 0 : myScrollingShift, myScrollHorizontally ? 0 : myScrollingShift,
myPaint myPaint
); );
if (shift < 0) { if (shift < 0) {
@ -184,7 +181,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
// TODO: set color // TODO: set color
if (shift > 0 && shift < size) { if (shift > 0 && shift < size) {
myPaint.setColor(Color.rgb(127, 127, 127)); myPaint.setColor(Color.rgb(127, 127, 127));
if (horizontal) { if (myScrollHorizontally) {
canvas.drawLine(shift, 0, shift, h + 1, myPaint); canvas.drawLine(shift, 0, shift, h + 1, myPaint);
} else { } else {
canvas.drawLine(0, shift, w + 1, shift, myPaint); canvas.drawLine(0, shift, w + 1, shift, myPaint);
@ -194,7 +191,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
case curl: case curl:
{ {
final int x, y; final int x, y;
if (horizontal) { if (myScrollHorizontally) {
x = - myScrollingShift; x = - myScrollingShift;
y = x * h / w; y = x * h / w;
} else { } else {
@ -240,12 +237,12 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
myMainBitmap = mySecondaryBitmap; myMainBitmap = mySecondaryBitmap;
mySecondaryBitmap = swap; mySecondaryBitmap = swap;
mySecondaryBitmapIsUpToDate = false; mySecondaryBitmapIsUpToDate = false;
view.onScrollingFinished(myViewPageToScroll); view.onScrollingFinished(myViewPageToScrollTo);
ZLApplication.Instance().onRepaintFinished(); ZLApplication.Instance().onRepaintFinished();
} else { } else {
view.onScrollingFinished(ZLView.PAGE_CENTRAL); view.onScrollingFinished(ZLView.PAGE_CENTRAL);
} }
setPageToScroll(ZLView.PAGE_CENTRAL); setPageToScrollTo(ZLView.PAGE_CENTRAL);
myScrollingInProgress = false; myScrollingInProgress = false;
myScrollingShift = 0; myScrollingShift = 0;
} else { } else {
@ -257,15 +254,17 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
drawFooter(canvas); drawFooter(canvas);
} }
private int myViewPageToScroll = ZLView.PAGE_CENTRAL; private int myViewPageToScrollTo = ZLView.PAGE_CENTRAL;
private void setPageToScroll(int viewPage) { private boolean myScrollHorizontally;
if (myViewPageToScroll != viewPage) { private void setPageToScrollTo(int viewPage) {
myViewPageToScroll = viewPage; if (myViewPageToScrollTo != viewPage) {
myViewPageToScrollTo = viewPage;
mySecondaryBitmapIsUpToDate = false; mySecondaryBitmapIsUpToDate = false;
} }
} }
public void scrollManually(int startX, int startY, int endX, int endY, boolean horizontally) { public void scrollManually(int startX, int startY, int endX, int endY, boolean horizontally) {
myScrollHorizontally = horizontally;
final int shift = horizontally ? endX - startX : endY - startY; final int shift = horizontally ? endX - startX : endY - startY;
final int viewPage = horizontally final int viewPage = horizontally
? (shift < 0 ? ZLView.PAGE_RIGHT : ZLView.PAGE_LEFT) ? (shift < 0 ? ZLView.PAGE_RIGHT : ZLView.PAGE_LEFT)
@ -279,7 +278,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
mySecondaryBitmapIsUpToDate = false; mySecondaryBitmapIsUpToDate = false;
} }
myScrollingShift = shift; myScrollingShift = shift;
setPageToScroll(viewPage); setPageToScrollTo(viewPage);
drawOnBitmap(mySecondaryBitmap); drawOnBitmap(mySecondaryBitmap);
postInvalidate(); postInvalidate();
} }
@ -289,7 +288,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
return; return;
} }
myScrollingShift = 0; myScrollingShift = 0;
setPageToScroll(ZLView.PAGE_CENTRAL); setPageToScrollTo(ZLView.PAGE_CENTRAL);
drawOnBitmap(mySecondaryBitmap); drawOnBitmap(mySecondaryBitmap);
postInvalidate(); postInvalidate();
} }
@ -301,7 +300,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
myScrollingInProgress = true; myScrollingInProgress = true;
switch (viewPage) { switch (viewPage) {
case ZLView.PAGE_CENTRAL: case ZLView.PAGE_CENTRAL:
switch (myViewPageToScroll) { switch (myViewPageToScrollTo) {
case ZLView.PAGE_CENTRAL: case ZLView.PAGE_CENTRAL:
myScrollingSpeed = 0; myScrollingSpeed = 0;
break; break;
@ -319,22 +318,26 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
case ZLView.PAGE_LEFT: case ZLView.PAGE_LEFT:
myScrollingSpeed = 3; myScrollingSpeed = 3;
myScrollingBound = getWidth(); myScrollingBound = getWidth();
myScrollHorizontally = true;
break; break;
case ZLView.PAGE_RIGHT: case ZLView.PAGE_RIGHT:
myScrollingSpeed = -3; myScrollingSpeed = -3;
myScrollingBound = -getWidth(); myScrollingBound = -getWidth();
myScrollHorizontally = true;
break; break;
case ZLView.PAGE_TOP: case ZLView.PAGE_TOP:
myScrollingSpeed = 3; myScrollingSpeed = 3;
myScrollingBound = getMainAreaHeight(); myScrollingBound = getMainAreaHeight();
myScrollHorizontally = false;
break; break;
case ZLView.PAGE_BOTTOM: case ZLView.PAGE_BOTTOM:
myScrollingSpeed = -3; myScrollingSpeed = -3;
myScrollingBound = -getMainAreaHeight(); myScrollingBound = -getMainAreaHeight();
myScrollHorizontally = false;
break; break;
} }
if (viewPage != ZLView.PAGE_CENTRAL) { if (viewPage != ZLView.PAGE_CENTRAL) {
setPageToScroll(viewPage); setPageToScrollTo(viewPage);
} }
drawOnBitmap(mySecondaryBitmap); drawOnBitmap(mySecondaryBitmap);
postInvalidate(); postInvalidate();
@ -360,7 +363,7 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
getMainAreaHeight(), getMainAreaHeight(),
view.isScrollbarShown() ? getVerticalScrollbarWidth() : 0 view.isScrollbarShown() ? getVerticalScrollbarWidth() : 0
); );
view.paint(context, (bitmap == myMainBitmap) ? ZLView.PAGE_CENTRAL : myViewPageToScroll); view.paint(context, (bitmap == myMainBitmap) ? ZLView.PAGE_CENTRAL : myViewPageToScrollTo);
} }
private void drawFooter(Canvas canvas) { private void drawFooter(Canvas canvas) {
@ -600,11 +603,8 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
} }
if (myScrollingInProgress || (myScrollingShift != 0)) { if (myScrollingInProgress || (myScrollingShift != 0)) {
final int from = view.getScrollbarThumbLength(ZLView.PAGE_CENTRAL); final int from = view.getScrollbarThumbLength(ZLView.PAGE_CENTRAL);
final int to = view.getScrollbarThumbLength(myViewPageToScroll); final int to = view.getScrollbarThumbLength(myViewPageToScrollTo);
final boolean horizontal = final int size = myScrollHorizontally ? getWidth() : getMainAreaHeight();
myViewPageToScroll == ZLView.PAGE_RIGHT ||
myViewPageToScroll == ZLView.PAGE_LEFT;
final int size = horizontal ? getWidth() : getMainAreaHeight();
final int shift = Math.abs(myScrollingShift); final int shift = Math.abs(myScrollingShift);
return (from * (size - shift) + to * shift) / size; return (from * (size - shift) + to * shift) / size;
} else { } else {
@ -619,11 +619,8 @@ public class ZLAndroidWidget extends View implements View.OnLongClickListener {
} }
if (myScrollingInProgress || (myScrollingShift != 0)) { if (myScrollingInProgress || (myScrollingShift != 0)) {
final int from = view.getScrollbarThumbPosition(ZLView.PAGE_CENTRAL); final int from = view.getScrollbarThumbPosition(ZLView.PAGE_CENTRAL);
final int to = view.getScrollbarThumbPosition(myViewPageToScroll); final int to = view.getScrollbarThumbPosition(myViewPageToScrollTo);
final boolean horizontal = final int size = myScrollHorizontally ? getWidth() : getMainAreaHeight();
myViewPageToScroll == ZLView.PAGE_RIGHT ||
myViewPageToScroll == ZLView.PAGE_LEFT;
final int size = horizontal ? getWidth() : getMainAreaHeight();
final int shift = Math.abs(myScrollingShift); final int shift = Math.abs(myScrollingShift);
return (from * (size - shift) + to * shift) / size; return (from * (size - shift) + to * shift) / size;
} else { } else {