【发布时间】:2014-03-02 12:29:32
【问题描述】:
我正在使用 Harism https://github.com/harism/android_page_curl的翻页动画。我正在通过绘制文本而不是图像来测试这个项目。单页模式时,显示正常文字:
但是,当它是两页模式(横向)时,结果如下:
问题是左侧的文本状态。有一个方法 onSizeChanged 可以控制屏幕方向和改变页面模式:
@Override
public void onSizeChanged(int w, int h) {
if (w > h) {
mCurlView.setViewMode(CurlView.SHOW_TWO_PAGES);
mCurlView.setMargins(.1f, .05f, .1f, .05f);
} else {
mCurlView.setViewMode(CurlView.SHOW_ONE_PAGE);
mCurlView.setMargins(.1f, .1f, .1f, .1f);
}
}
更改模式后,页面矩形将被更新
private void updatePageRects() { if (mViewRect.width() == 0 || mViewRect.height() == 0) { return; } else if (mViewMode == SHOW_ONE_PAGE) { mPageRectRight.set(mViewRect); mPageRectRight.left += mViewRect.width() * mMargins.left; mPageRectRight.right -= mViewRect.width() * mMargins.right; mPageRectRight.top += mViewRect.height() * mMargins.top; mPageRectRight.bottom -= mViewRect.height() * mMargins.bottom; mPageRectLeft.set(mPageRectRight); mPageRectLeft.offset(-mPageRectRight.width(), 0); int bitmapW = (int) ((mPageRectRight.width() * mViewportWidth) / mViewRect .width()); int bitmapH = (int) ((mPageRectRight.height() * mViewportHeight) / mViewRect .height()); mObserver.onPageSizeChanged(bitmapW, bitmapH); } else if (mViewMode == SHOW_TWO_PAGES) { mPageRectRight.set(mViewRect); mPageRectRight.left += mViewRect.width() * mMargins.left; mPageRectRight.right -= mViewRect.width() * mMargins.right; mPageRectRight.top += mViewRect.height() * mMargins.top; mPageRectRight.bottom -= mViewRect.height() * mMargins.bottom; mPageRectLeft.set(mPageRectRight); mPageRectLeft.right = (mPageRectLeft.right + mPageRectLeft.left) / 2; mPageRectRight.left = mPageRectLeft.right; int bitmapW = (int) ((mPageRectRight.width() * mViewportWidth) / mViewRect .width()); int bitmapH = (int) ((mPageRectRight.height() * mViewportHeight) / mViewRect .height()); mObserver.onPageSizeChanged(bitmapW, bitmapH); } }
此项目使用 OpenGL/ES 创建。有什么帮助吗?
【问题讨论】:
-
您的左侧纹理坐标似乎不正确。它可能是 curl 库的另一个功能/错误。一些代码,说明如何更改为两页模式会有所帮助。
-
@猪我更新了我的问题
-
这似乎很合理。如果在
if(mViewMode == SHOW_TWO_PAGES)块末尾将mPageRectLeft.right替换为mPageRectLeft.left会发生什么? -
好吧,实际上,更多地研究 curl 的工作原理,这似乎是“正确”的行为,因为左侧页面有时被设置为翻转和不翻转。看来这个库是为了迷惑人而写的。
-
我们该如何解决这个问题?