2012-01-12 33 views
2

我已經對我的應用程序使用Harism的Page Curl動畫,但我一直面臨一個小問題,我在CurlActivity的getBitmap()方法中使用索引Value,我需要在每次翻轉時向用戶顯示頁碼(比如使用對Toast.maketext()。show)的調用),這種方式在從第0頁到第pageCount.length時正常工作,但是當我將頁面從右向左移動時(即從頁面移動到另一頁pageCount.lenth爲0)索引值不會一直減少。由Harism的Android頁面Curl Animation顯示CurlActiviy()的getBitmap()方法中的反向索引計數不一致?

任何人都可以幫助我這個。

在此先感謝。

P.S.:That將是我的計算器

  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; 

回答

1

問題是,你真的不能依靠請求的頁面索引的目的,你試圖實現的第一個問題。你面對的行爲的理由是,一旦你向前翻頁,只需要'下一頁',在這種情況下,索引似乎是你所期望的。但是向後改變頁面的方式恰恰相反,只需要「前一頁」,並且這些單獨操作之間的索引之間存在差距。

有一種方法CurlView.getCurrentIndex()雖然它不斷地設置爲右側顯示的頁面的索引。它應該爲您提供顯示實際頁碼的手段。

+0

讓我先謝謝你爲我們提供了所有在android中使用頁面捲曲的精彩作品。 我試過你的建議方式,從getBitmap()方法內部的CurlView類的getCurrentIndex方法顯示mCurrentIndex,但似乎getCurrentIndex方法增加了右側頁面的數量(+1)翻轉(即將頁面從左向右移動),而且翻回第一頁也不會使初始值(從它開始的位置)恢復。 我在哪裏錯了? – 2012-01-12 22:38:31

+1

是的,只是在您的建議中得到了我在Curl視圖類中的問題的答案,我錯誤地試圖從getBitmap方法獲取頁面索引 乾杯! – 2012-01-13 12:14:49

+0

@SomeoneSomewhere可以分享解決方案,即你究竟做了什麼改變來實現它我陷入了同樣的問題,你是否對getCurrentIndexFunction做了任何修改 – Prateek 2013-05-24 13:44:24

3

首先,Harism,謝謝你分享這個美麗的框架! :)

現在,只有補充Harism的響應:

當雜誌,書籍等工作,我們處理的頁面數量不確定。

在項目Harism-Android-Page-Curl的類CurlActivity中提供的示例中,使用「Switch」來控制頁面。爲了能夠滿足我的需求,我必須更改方法「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); 

     }}} 

我希望我幫助!

再一次感謝Harist框架!

+0

你可以幫助我回到以前的頁面有一個特定的索引,以及它爲下一頁? – Prateek 2013-05-24 13:11:12

+0

@prateek您的意思是指背頁有滑動動作(例如從左向右滑動)?如果是這樣,則沒有實現,因爲方法updatePage(..)接收int index作爲參數,並且可以根據滑動的方向來增加或減少此索引。 – 2013-05-24 16:28:54

+0

但是我面臨的問題是,當我嘗試返回到上一頁時,該頁面上的正確位圖不會刷新。 – Prateek 2013-05-25 12:41:01