自從之前發佈了《Android 實現書籍翻頁效果----完結篇 》之後,收到了很多朋友給我留言,前段時間由於事情較多,博客寫得太匆忙很多細節地方沒有描述清楚。所以不少人對其中的地方有不少不明白之處,也有不少人對其中出現的Bug進行了反饋。今天終於找出了段時間對這段時間的一些問題做個簡單的總結。
之前給出的例子只是能使書籍進行簡單的拖拽,沒有實現翻頁的動畫效果,很多人希望我能加上這一個,所以首先我們就來說說這個翻頁的動畫。
其實翻頁的動畫很容易實現,只要在Touch擡起後不斷的刷新mTouch.x , mTouch.y 的值就行了, 你可以使用handler,thread,也可以使用Scroller,我個人比較喜歡Scroller,這個比較簡單。
新添兩個函數:
接着在按下擡起時調用就行了
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