首先,Harism,感谢您分享这个美丽的框架!:)
现在,只是为了补充 Harism 的回应:
在处理杂志、书籍等时,我们会处理不确定数量的页面。
在 Harism-Android-Page-Curl 项目的 CurlActivity 类中展示的示例中,使用“开关”来控制页面。为了能够满足我的需求,我不得不改变方法“updatePage”,然后更适当地控制我的杂志,不管页面的数量。
我需要根据(方法签名本身的)索引和当前的定向设备来呈现下面的大纲:
横向(“侧背”与下一页)
索引 | 左页 | 页面右
0 | 0 | 1
1 | 2 | 3
2 | 4 | 4
3 | 6 | 7
4 | 8 | 9
纵向(“背面”与同一页面镜像)
索引 | 页
0 | 0
1 | 1
2 | 2
3 | 3
4 | 4
……
要实现此方案,首先必须更改 getPageCount 方法:
public int getPageCount() {
//return 5;
int pagesCount = 0;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int wwidth = displaymetrics.widthPixels;
int hheight = displaymetrics.heightPixels;
if(wwidth > hheight){
if((mBitmapIds.length % 2) > 0)
pagesCount = (mBitmapIds.length / 2) + 1;
else
pagesCount = mBitmapIds.length / 2;
}else{
pagesCount = mBitmapIds.length;
}
return pagesCount;
}
这将允许页面计数器返回实际的页数。
然后更改方法updatePage,符合以下代码:
public void updatePage(CurlPage page, int width, int height, int index) {
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int wwidth = displaymetrics.widthPixels;
int hheight = displaymetrics.heightPixels;
if(wwidth > hheight){
System.out.println("case landscape orientation...");
Bitmap front = loadBitmap(width, height, (index * 2));
Bitmap back = loadBitmap(width, height, (index * 2) + 1);
Matrix matrix = new Matrix();
matrix.preScale(-1.0f, 1.0f);
Bitmap mirroredBitmap = Bitmap.createBitmap(back, 0, 0, back.getWidth(), back.getHeight(), matrix, false);
page.setTexture(front, CurlPage.SIDE_FRONT);
page.setTexture(mirroredBitmap, CurlPage.SIDE_BACK);
}else{
System.out.println("case portrait orientation...");
Bitmap front = loadBitmap(width, height, index);
Bitmap back = loadBitmap(width, height, index);
page.setTexture(front, CurlPage.SIDE_FRONT);
page.setTexture(back, CurlPage.SIDE_BACK);
}}}
我希望我有所帮助!
再次感谢 Harism 框架!