Este proyecto tiene como objetivo implementar el cambio de página de estilo 3D en un sistema Android basado en OpenGL 2.0.
Para la versión JNI , visite: android-PageFlip-JNI
Avance
Instalación
Soporte de versión de Android
Uso
Licencia
Agréguelo a su build.gradle con:
allprojects {
repositories {
maven { url " https://jitpack.io " }
}
}
y:
dependencies {
compile ' com.github.eschao:android-PageFlip:1.0.2 '
}
Se han probado las siguientes versiones en el emulador:
versión de Android | Versión API | Apoyo |
---|---|---|
3.2 | API 13 | incógnita |
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 | √ |
Crea una clase de vista de superficie que se extiende desde GLSurfaceView
Implementa la interfaz de Android Renderer para dibujar su contenido en un mapa de bits y configurarlo como una textura de PageFlip
Crea una instancia de un objeto PageFlip en el constructor de su vista de superficie.
Configura PageFlip , por ejemplo: establece la duración de la animación, el modo de página o los píxeles de malla
Maneja los siguientes eventos de Android:
Es posible que necesite un controlador de mensajes para enviar/recibir un mensaje de dibujo. Consulte PageFlipView en la aplicación de muestra.
Es posible que necesite un bloqueo para evitar conflictos entre el hilo principal y el hilo de renderizado OpenGL. Consulte PageFlipView en la aplicación de muestra.
Más detalles, eche un vistazo a PageFlipView en la aplicación de muestra.
La biblioteca PageFlip proporciona algunas configuraciones para personalizar sus comportamientos. Por ejemplo: color de sombra y alfa, píxeles de malla y modo de página.
Hay dos modos de página proporcionados por PageFlip :
Puede usar enableAutoPage para habilitar el modo de página automática o deshabilitarlo (también habilitar el modo de página única).
Ejemplo:
// enable auto page mode
mPageFlip . enableAutopage ( true );
Puede habilitar/deshabilitar hacer clic en la pantalla para voltear
Ejemplo:
// enable clicking to flip
mPageFlip . enableClickToFlip ( true );
Puede proporcionar una proporción de ancho de página de 0 a 0,5 f para establecer un área para responder al evento de clic y activar un cambio de página. El valor predeterminado es 0.5f , lo que significa que el giro hacia atrás se producirá si hace clic en la mitad izquierda de la pantalla y el giro hacia adelante comenzará si hace clic en la mitad derecha de la pantalla en el modo de una sola página.
Ejemplo:
// set ratio with 0.3
mPageFlip . setWidthRatioOfClickToFlip ( 0.3f );
Puede configurar un oyente para que le diga a PageFlip si podría ocurrir un giro hacia adelante o hacia atrás.
Ejemplo:
mPageFlip . setListener ( mListener );
Establece cuántos píxeles se utilizan para una malla. Cuantos menos píxeles utilice la malla, más fino será el dibujo y menor será el rendimiento. El valor predeterminado es 10 píxeles.
Ejemplo:
mPageFlip . setPixelsOfMesh ( 5 );
Cuando la página está curvada, PageFlip la aborda como un semicilindro. Puede establecer el tamaño del semicilindro para cambiar la forma del giro. Dado que el semicilindro depende de la longitud de la línea desde el punto de contacto hasta el punto original (consulte la ilustración a continuación), debe proporcionar una relación de esta longitud de línea para indicarle a PageFlip el perímetro del semicilindro. El valor predeterminado es 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
Ejemplo:
mPageFlip . setSemiPerimeterRatio ( 0.6f );
Puede configurar la máscara alfa para la parte posterior de la página plegada cuando la página está curvada en el modo de una sola página. El valor predeterminado es 0,6f.
Ejemplo:
mPageFlip . setMaskAlphaOfFold ( 0.5f );
Puede establecer el color de inicio/fin y el alfa de inicio/fin para la sombra del borde de la página plegada.
Ejemplo:
// 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 );
Puede establecer el color de inicio/fin y el alfa de inicio/fin para la sombra base de la página plegada.
Ejemplo:
mPageFlip . setShadowColorOfFoldBase ( 0.05f , 0.2f , 0.5f , 1f );
Cuando la página está curvada, el tamaño de la página plegada seguirá el movimiento del dedo que se va a cambiar y el ancho de la sombra del borde se debe cambiar en consecuencia. Puede establecer un rango de ancho apropiado para el ancho de la sombra.
Ejemplo:
// 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 );
Al igual que el ancho de la sombra del borde de la página plegada , puede establecer un rango de ancho apropiado para la sombra base de la página plegada.
Ejemplo:
// see {@link #setShadowWidthOfFoldEdges} function
mPageFlip . setShadowWidthOfFoldBase ( 5 , 40 , 0.4f );
Puede dar una duración para la animación de giro cuando llama a la función onFingerUp para manejar el evento de dedo hacia arriba.
Ejemplo:
// the last parameter is duration with millisecond unit, here we set it with 2 seconds.
mPageFlip . onFingerUp ( x , y , 2000 );
Este proyecto tiene la licencia Apache License Versión 2.0.