Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Harism制作的Android Page Curl动画显示CurlActivity()的getBitmap()方法中反向索引计数不一致?_Android_Animation_Curl_Page Curl - Fatal编程技术网

Harism制作的Android Page Curl动画显示CurlActivity()的getBitmap()方法中反向索引计数不一致?

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

我在我的应用程序中使用了Harism的Page Curl动画,但我遇到了一个小问题,我在CurlActivity的getBitmap方法中使用索引值,我需要在页面的每个翻转上向用户显示页码,比如调用Toast.maketext.show,这在从第0页转到pageCount.length时效果很好,但当我将页面从右向左移动页面时,即从pageCount.lenth向相反方向移动到0时,索引值不会一直减少

谁能帮我一下吗

提前谢谢

这将是我关于stackoverflow的第一个问题

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作为参数,此索引可以根据滑动方向递增或递减。但我面临的问题是,当我尝试返回上一页时,该页上正确的位图不会刷新。你能在这方面帮我吗,非常感谢。我在安卓系统中经历了卷曲效果和翻转效果,其中一本书的页面被翻转,但我需要的是书上的翻转效果,这意味着当我们有一本书的第一页和最后一页是硬装订的,那么翻转风格将不同于卷曲和翻转效果。因此,请任何人告诉我如何实现这一点,任何支持链接或教程或例子都非常感谢谢谢