Harism制作的Android Page Curl动画显示CurlActivity()的getBitmap()方法中反向索引计数不一致?
我在我的应用程序中使用了Harism的Page Curl动画,但我遇到了一个小问题,我在CurlActivity的getBitmap方法中使用索引值,我需要在页面的每个翻转上向用户显示页码,比如调用Toast.maketext.show,这在从第0页转到pageCount.length时效果很好,但当我将页面从右向左移动页面时,即从pageCount.lenth向相反方向移动到0时,索引值不会一直减少 谁能帮我一下吗 提前谢谢 这将是我关于stackoverflow的第一个问题Harism制作的Android Page Curl动画显示CurlActivity()的getBitmap()方法中反向索引计数不一致?,android,animation,curl,page-curl,Android,Animation,Curl,Page Curl,我在我的应用程序中使用了Harism的Page Curl动画,但我遇到了一个小问题,我在CurlActivity的getBitmap方法中使用索引值,我需要在页面的每个翻转上向用户显示页码,比如调用Toast.maketext.show,这在从第0页转到pageCount.length时效果很好,但当我将页面从右向左移动页面时,即从pageCount.lenth向相反方向移动到0时,索引值不会一直减少 谁能帮我一下吗 提前谢谢 这将是我关于stackoverflow的第一个问题 public B
public Bitmap getBitmap(int width, int height, int index) {
Bitmap b = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);
b.eraseColor(0xFFFFFFFF);
Canvas c = new Canvas(b);
//this is where index seems to go wrong on reverse counting, I believe
Log.e("PAGE--", ""+index);
Toast.makeText(CurlActivity.this, ""+index, Toast.LENGTH_SHORT).show();
Drawable d = getResources().getDrawable(mBitmapIds[index]);
int margin = 7;
int border = 3;
return b
}
问题是,您真的不能依赖请求的页面索引来实现您试图实现的目的。您面临这种行为的原因是,一旦您向前翻页,只会请求“下一页”,在这种情况下,索引似乎就是您所期望的。但向后更改页面的效果正好相反,只请求“上一页”,并且在这些单独的操作之间的索引中存在间隙
有一个方法CurlView.getCurrentIndex,它经常被设置为显示在右边的页面的索引。它应该为您提供显示实际页码的方法。问题在于,您确实不能依赖请求的页面索引来实现您试图实现的目的。您面临这种行为的原因是,一旦您向前翻页,只会请求“下一页”,在这种情况下,索引似乎就是您所期望的。但向后更改页面的效果正好相反,只请求“上一页”,并且在这些单独的操作之间的索引中存在间隙
有一个方法CurlView.getCurrentIndex,它经常被设置为显示在右边的页面的索引。它应该为您提供显示实际页码的方法。首先,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,感谢您分享这个美丽的框架!: 现在,为了补充哈里斯主义的反应: 在处理杂志、书籍等时,我们处理的页面数量不确定 在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);
}}}
我希望我能帮忙
再一次,感谢哈里斯的框架 首先,我要感谢您为我们提供的android页面卷曲的精彩工作。我尝试了您建议的在getBitmap方法内部显示CurlView类的getCurrentIndex方法中的mCurrentIndex的方法,但是getCurrentIndex方法似乎会将右侧页面的计数增加1+1。将页面从左向右移动,并翻转回第一页
e也不会从它开始的地方带回初始值。我在这里哪里出错了?是的,在Curl视图类中得到了我问题的答案,正如您所建议的,我尝试从getBitmap方法获取页面索引是错误的,干杯@有人可以在某处与你分享解决方案,例如,你到底在哪里进行了更改以实现它我遇到了相同的问题,此外,您是否对GetCurrentIndexFunction进行了任何更改,即使它适用于索引。返回时,这不会刷新图像。为什么会发生这种情况?@harism stackoverflow.com/questions/16959530/…您可以检查此线程吗!首先,我要感谢您为我们提供的android页面卷曲的精彩工作。我尝试了您建议的在getBitmap方法内部显示CurlView类的getCurrentIndex方法中的mCurrentIndex的方法,但是getCurrentIndex方法似乎会将右侧页面的计数增加1+1。将页面从左向右移动,并且翻转回第一页也不会从起始位置返回初始值。我在这里哪里出错了?是的,在Curl视图类中得到了我问题的答案,正如您所建议的,我尝试从getBitmap方法获取页面索引是错误的,干杯@有人可以在某处与你分享解决方案,例如,你到底在哪里进行了更改以实现它我遇到了相同的问题,此外,您是否对GetCurrentIndexFunction进行了任何更改,即使它适用于索引。返回时,这不会刷新图像。为什么会发生这种情况?@harism stackoverflow.com/questions/16959530/…您可以检查此线程吗!你能帮我回到上一页的某个特定索引以及下一页的索引吗???@prateek你是指带有滑动动作(例如从左向右滑动)的上一页吗?如果是,则没有实现,因为方法updatePage。。接收int index作为参数,此索引可以根据滑动方向递增或递减。但我面临的问题是,当我尝试返回上一页时,该页上正确的位图不会刷新。你能在这方面帮我吗,非常感谢。我在安卓系统中经历了卷曲效果和翻转效果,其中一本书的页面被翻转,但我需要的是书上的翻转效果,这意味着当我们有一本书的第一页和最后一页是硬装订的,那么翻转风格将不同于卷曲和翻转效果。因此,请任何人告诉我如何实现这一点,并感谢任何支持链接、教程或示例。谢谢您能帮助我使用特定索引返回到前一页以及下一页吗???@prateek您是指具有滑动运动的后页,例如从左向右滑动?如果是,则没有实现,因为方法updatePage。。接收int index作为参数,此索引可以根据滑动方向递增或递减。但我面临的问题是,当我尝试返回上一页时,该页上正确的位图不会刷新。你能在这方面帮我吗,非常感谢。我在安卓系统中经历了卷曲效果和翻转效果,其中一本书的页面被翻转,但我需要的是书上的翻转效果,这意味着当我们有一本书的第一页和最后一页是硬装订的,那么翻转风格将不同于卷曲和翻转效果。因此,请任何人告诉我如何实现这一点,任何支持链接或教程或例子都非常感谢谢谢