Android 實現書籍翻頁效果—-升級篇

來源:互聯網
上載者:User

      自從之前發布了《Android 實現書籍翻頁效果----完結篇 》之後,收到了很多朋友給我留言,前段時間由於事情較多,部落格寫得太匆忙很多細節地方沒有描述清楚。所以不少人對其中的地方有不少不明白之處,也有不少人對其中出現的Bug進行了反饋。今天終於找出了段時間對這段時間的一些問題做個簡單的總結。

     之前給出的例子只是能使書籍進行簡單的拖拽,沒有實現翻頁的動畫效果,很多人希望我能加上這一個,所以首先我們就來說說這個翻頁的動畫。

  其實翻頁的動畫很容易實現,只要在Touch抬起後不斷的重新整理mTouch.x , mTouch.y 的值就行了,   你可以使用handler,thread,也可以使用Scroller,我個人比較喜歡Scroller,這個比較簡單。

  新添兩個函數:

private void startAnimation(int delayMillis) {<br />int dx, dy;<br />// dx 水平方向滑動的距離,負值會使滾動向左滾動<br />// dy 垂直方向滑動的距離,負值會使滾動向上滾動<br />if (mCornerX > 0) {<br />dx = -(int) (mWidth + mTouch.x);<br />} else {<br />dx = (int) (mWidth - mTouch.x + mWidth);<br />}<br />if (mCornerY > 0) {<br />dy = (int) (mHeight - mTouch.y);<br />} else {<br />dy = (int) (1 - mTouch.y); // 防止mTouch.y最終變為0<br />}<br />mScroller.startScroll((int) mTouch.x, (int) mTouch.y, dx, dy,<br />delayMillis);<br />}</p><p>public void computeScroll() {<br />super.computeScroll();<br />if (mScroller.computeScrollOffset()) {<br />float x = mScroller.getCurrX();<br />float y = mScroller.getCurrY();<br />mTouch.x = x;<br />mTouch.y = y;<br />postInvalidate();<br />}<br />}

接著在按下抬起時調用就行了

if (event.getAction() == MotionEvent.ACTION_UP) {
   if (canDragOver()) {   //判斷是否可以翻頁
    startAnimation(1200);
   } else {
    mTouch.x = mCornerX - 0.09f;   //如果不能翻頁就讓mTouch返回沒有靜止時的狀態
    mTouch.y = mCornerY - 0.09f;   // - 0.09f是防止mTouch = 800 或mTouch= 0 要不在這些值時會出現BUG
   }

 

還需要修改的地方是calcPoints() 這個函數,之前為了防止一個bug出現,添加了if (mBezierStart1.x < 0 || mBezierStart1.x > mWidth) {這個判斷,但是在翻頁動畫時mTouch.x會小於0(從右向左翻時)或者mTouch.x>mWidth(從左往右)這時並不需要在進入這個函數進行處理,所以要在這個情況時將其屏蔽,改為:

if (mTouch.x > 0 && mTouch.x < mWidth) {
   if (mBezierStart1.x < 0 || mBezierStart1.x > mWidth) {

……}

}

經過上邊的修改就可以完成動畫效果了。

 

還有的童鞋想將這個做成一個電子書閱讀器,但是不知道如何將txt中的內容轉換為翻頁所需的圖片,並在翻頁後進行切換。所以我新添加了一個簡單的類BookPageFactory,用來讀取SD卡中的一個txt,並將讀取的內容轉換為一個bitmap用於顯示。哈哈,這個只是一個功能很小的類,只是給大家做個示範,起到拋磚引玉的作用。大家請根據自己所需的功能酌情修改。

源碼附帶的是一個簡單的帶翻頁動畫的電子書閱讀器,大家測試時請將test.txt放於SD卡根目錄下:

pagefactory.openbook("/sdcard/test.txt");

 

新的介面:

       

 

 

源碼:

      http://download.csdn.net/source/3278901

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.