本專案旨在基於OpenGL 2.0在Android系統上實現3D風格的翻頁。
JNI版本請見: android-PageFlip-JNI
預覽
安裝
安卓版本支持
用法
執照
將其添加到您的 build.gradle 中:
allprojects {
repositories {
maven { url " https://jitpack.io " }
}
}
和:
dependencies {
compile ' com.github.eschao:android-PageFlip:1.0.2 '
}
以下版本已在模擬器上測試:
安卓版本 | API版本 | 支援 |
---|---|---|
3.2 | API 13 | x |
4.1 | API 16 | √ |
4.2 | API 17 | √ |
4.3 | API 18 | √ |
4.4 | API 19 | √ |
5.0 | API 21 | √ |
5.1 | API 22 | √ |
6.0 | API 23 | √ |
7.0 | API 24 | √ |
7.1.1 | API 25 | √ |
7.+ | API 26 | √ |
建立一個從GLSurfaceView擴展的表面視圖類
實作 android Renderer接口,將內容繪製在點陣圖上並將其設定為PageFlip的紋理
在表面視圖的建構函式中實例化PageFlip對象
配置PageFlip ,例如:設定動畫持續時間、頁面模式或網格像素
處理以下 Android 事件:
您可能需要一個訊息處理程序來傳送/接收繪圖訊息。請參考範例應用程式中的PageFlipView 。
您可能需要一個鎖定來避免主執行緒和 OpenGL 渲染執行緒之間的衝突。請參考範例應用程式中的PageFlipView 。
更多詳細信息,請查看範例應用程式中的PageFlipView 。
PageFlip庫提供了一些用於自訂其行為的配置。例如:陰影顏色和 Alpha、網格像素和頁面模式。
PageFlip提供兩種頁面模式:
您可以使用enableAutoPage來啟用或停用自動分頁模式(同樣啟用單頁模式)。
例子:
// enable auto page mode
mPageFlip . enableAutopage ( true );
您可以啟用/停用點擊螢幕翻轉
例子:
// enable clicking to flip
mPageFlip . enableClickToFlip ( true );
你可以給定一個0到0.5f之間的頁面寬度比例來設定回應點擊事件觸發頁面翻轉的區域。預設值為0.5f ,這表示在單頁模式下,點擊螢幕左半部將發生後翻,點擊螢幕右半部將開始前翻。
例子:
// set ratio with 0.3
mPageFlip . setWidthRatioOfClickToFlip ( 0.3f );
您可以設定一個偵聽器來告訴PageFlip是否會發生向前翻轉或向後翻轉。
例子:
mPageFlip . setListener ( mListener );
設定網格使用多少像素。網格使用的像素越少,繪圖越精細,效能越低。預設值為 10 像素。
例子:
mPageFlip . setPixelsOfMesh ( 5 );
當頁面捲曲時, PageFlip實際上將其處理為半圓柱體。您可以設定半圓柱體的大小來改變翻轉形狀。由於半圓柱體取決於從觸摸點到原點的直線長度(請參閱下圖),因此您需要提供該直線長度的比率來告訴PageFlip半圓柱體的周長。預設值為 0.8f。
+----------------+
| touchP |
| . |
| |
| + p0 |
| |
| |
| p1 + |
| |
+----------------+
original point, that means you drag the page from here to touch point(touchP)
The length from p0 to p1 is peremeter of semi-cylinder and determined by ratio your giving
例子:
mPageFlip . setSemiPerimeterRatio ( 0.6f );
當頁面在單頁模式下捲曲時,您可以設定折疊頁面背面的蒙版 Alpha。預設值為 0.6f。
例子:
mPageFlip . setMaskAlphaOfFold ( 0.5f );
您可以設定折疊頁邊緣陰影的開始/結束顏色和開始/結束 Alpha。
例子:
// set start color with 0.1f, start alpha with 0.2f, end color with 0.5f
// and end alpha with 1f
mPageFlip . setShadowColorOfFoldBase ( 0.1f , 0.2f , 0.5f , 1f );
您可以為折疊頁面的基礎陰影設定開始/結束顏色和開始/結束 Alpha。
例子:
mPageFlip . setShadowColorOfFoldBase ( 0.05f , 0.2f , 0.5f , 1f );
當頁面捲曲時,摺頁的尺寸會隨著手指的移動而改變,其邊緣陰影寬度也會隨之改變。您可以為陰影寬度設定適當的寬度範圍。
例子:
// set the minimal width is 5 pixels and maximum width is 40 pixels.
// set the ratio is 0.3f which means the width will be firstly computed by formula:
// width = diameter of semi-cylinder * 0.3f, and then compare it with minimal
// and maximal value to make sure the width is in range.
mPageFlip . setShadowWidthOfFoldEdges ( 5 , 40 , 0.3f );
與摺頁邊緣陰影寬度一樣,您可以為摺頁基礎陰影設定適當的寬度範圍。
例子:
// see {@link #setShadowWidthOfFoldEdges} function
mPageFlip . setShadowWidthOfFoldBase ( 5 , 40 , 0.4f );
當您呼叫onFingerUp函數來處理手指向上事件時,您可以指定翻轉動畫的持續時間。
例子:
// the last parameter is duration with millisecond unit, here we set it with 2 seconds.
mPageFlip . onFingerUp ( x , y , 2000 );
該項目根據 Apache License Version 2.0 獲得許可。