本项目旨在基于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 获得许可。