mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 10:49:24 +02:00
scrolling refactoring (in progress)
This commit is contained in:
parent
caea6f0f7f
commit
56302ca25a
1 changed files with 29 additions and 32 deletions
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue