2014-03-02 21 views
3

我使用Harism https://github.com/harism/android_page_curl的页面卷曲动画。我通过绘制文本而不是图像来测试这个项目。当它是一个页面模式,它显示普通文本:enter image description here页面卷曲由harism,在两页模式下文本显示不正常

然而,当它是两个页面模式(风景),结果如下图所示: enter image description here

问题是文本的在左侧状态。有一种方法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); 
    } 
    } 

改变模式后,页面rects将会更新

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创建。任何帮助?

+0

看来您的左侧纹理坐标不正确。这可能是卷曲库的另一个特征/缺陷。一些代码,指示您如何更改为双页模式将有所帮助。 –

+0

@猪猪我已经更新了我的问题 –

+0

这似乎很合理。如果在if(mViewMode == SHOW_TWO_PAGES)块的末尾将mPageRectLeft.right替换为mPageRectLeft.left,会发生什么? –

回答

0

它看起来像库中的又一个bug。根据GitHub的评论,关于两页功能的代码最近更新了。我建议联系作者并请求修复。

+0

我发现这个项目的另一个旧版本在这里github.com/cags12/android_page_curl。左侧的页面显示正确。现在,我们应该找到做了什么样的改变,影响左侧图像成为错误的位置 –

+0

太好了,现在你已经到了某个地方。 –