Android 實現書籍翻頁效果----完結篇

By 何明桂(http://blog.csdn.net/hmg25) 轉載請註明出處

      之前由於種種瑣事,暫停了這個翻頁效果的實現,終於在這週末完成了大部分功能,但是這裏只是給出了一個基本的雛形,沒有添加翻頁的動畫效果,由於下個週末開始,需要轉向去研究framework層(短暫的醬油期就這樣結束啦 o(︶︿︶)o唉),將會暫停翻頁的開發,所以想要進一步提高功能的童鞋需要自己動手~~~稍後發佈的將是本人提供的完結篇代碼。 

    今天一個熱心的csdn好友-- xiaofanqingzjj 告訴我:“這兩天把你的代碼整了一下,實現了 根據滑動速度或位置翻頁自動彈回,或者自動翻轉到下一頁的動畫,等整好了,再發布上來”, 呵呵,感想他的熱心,也希望以後大家有什麼好的改進也可以發佈出來讓大家都可以一起學習下。

   閒話少說,在最後關頭和大家說說完結篇代碼裏的改進 ,上圖看效果:

  

                                       By 何明桂(http://blog.csdn.net/hmg25) 轉載請註明出處

    有圖可以看到,首先是修復了之前翻起頁陰影頂點,定位異常的問題,然後是添加了翻起頁背面的顯示,以及光影效果,並且修復了,放翻頁趨向於垂直方向時,光影效果出現的漂移現象。

    文章後邊已經上傳翻頁效果的源碼了,我這裏不詳細講太多,稍後有時間的話,我會把光影效果這部分代碼的原理,另外寫一篇博客。下面只是給個概述,方便大家研究代碼。

   首先分析陰影頂點的定位問題,先來看一種特殊情況:

 

      假設直線aT處於垂直位置,兩邊陰影寬度都爲一致,假設爲25px, 容易得aT爲25*√2=25*1.414,那麼處於這種特殊情況下的頂點爲:

  a.x=T.x;

 a.y=T.y-25*1.414

現在我們來看一般性情況:

 

AT依舊爲25*1.414,那麼如果要定位A點的座標,就需要求出AB和BT的長度(AB垂直於BT),通過分析可以知道夾角BAT,等於45度角加上夾腳DTE,而夾腳DTE是可以通過Touch點和mBezierControl1的座標求出的:

    Math.atan2(mBezierControl1.y - mTouch.y, mTouch.x- mBezierControl1.x);

   通過以上計算就可以求出陰影頂點座標了。

翻起頁背面分爲兩部分求解,第一部分是將原圖翻轉得到:

 

以上效果是通過創建一個Matrix mMatrix和float[] mMatrixArray 實現

mMatrix.setValues(mMatrixArray);

mMatrix.preTranslate(-mBezierControl1.x, -mBezierControl1.y);

mMatrix.postTranslate(mBezierControl1.x, mBezierControl1.y);

翻轉之後爲了實現翻起後的光影效果,需要使用 ColorMatrixFilter ,實現以下效果,對這兩個不熟的自己找資料研究去~~~╭(╯^╰)╮

 

呵呵,大概就是這些個內容了,具體的自己研究代碼去~~下邊給出一個程序中各個點的標示,方便研究:

 

                     By 何明桂(http://blog.csdn.net/hmg25) 轉載請註明出處

源碼地址:http://download.csdn.net/source/3216809

希望大家也把自己改動的地方發佈出來一起研究。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/hmg25/archive/2011/04/22/6342539.aspx

發佈了39 篇原創文章 · 獲贊 2 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章