Ziel dieses Projekts ist die Implementierung des Seitenwechsels im 3D-Stil auf einem Android-System basierend auf OpenGL 2.0.
Die JNI- Version finden Sie unter: android-PageFlip-JNI
Vorschau
Installation
Unterstützung der Android-Version
Verwendung
Lizenz
Fügen Sie es zu Ihrem build.gradle hinzu mit:
allprojects {
repositories {
maven { url " https://jitpack.io " }
}
}
Und:
dependencies {
compile ' com.github.eschao:android-PageFlip:1.0.2 '
}
Die folgenden Versionen wurden auf dem Emulator getestet:
Android-Version | API-Version | Unterstützung |
---|---|---|
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 | √ |
Erstellt eine Oberflächenansichtsklasse, die von GLSurfaceView ausgeht
Implementiert die Android- Renderer- Schnittstelle, um Ihre Inhalte auf einer Bitmap zu zeichnen und sie als PageFlip -Textur festzulegen
Instanziiert ein PageFlip- Objekt im Konstruktor Ihrer Oberflächenansicht
Konfiguriert PageFlip , zum Beispiel: Animationsdauer, Seitenmodus oder Mesh-Pixel festlegen
Behandelt die folgenden Android-Ereignisse:
Möglicherweise benötigen Sie einen Nachrichtenhandler, um eine Zeichnungsnachricht zu senden/empfangen. Bitte beachten Sie PageFlipView in der Beispielanwendung.
Möglicherweise benötigen Sie eine Sperre, um Konflikte zwischen dem Hauptthread und dem OpenGL-Rendering-Thread zu vermeiden. Bitte beachten Sie PageFlipView in der Beispielanwendung.
Weitere Einzelheiten finden Sie in der Beispielanwendung von PageFlipView .
Die PageFlip- Bibliothek bietet einige Konfigurationen zum Anpassen ihres Verhaltens. Zum Beispiel: Schattenfarbe und Alpha, Mesh-Pixel und Seitenmodus.
PageFlip bietet zwei Seitenmodi:
Mit „enableAutoPage“ können Sie den automatischen Seitenmodus aktivieren oder deaktivieren (ebenso aktivieren Sie den Einzelseitenmodus).
Beispiel:
// enable auto page mode
mPageFlip . enableAutopage ( true );
Sie können das Klicken auf den Bildschirm zum Umdrehen aktivieren/deaktivieren
Beispiel:
// enable clicking to flip
mPageFlip . enableClickToFlip ( true );
Sie können ein Verhältnis der Seitenbreite von 0 bis 0,5f angeben, um einen Bereich für die Reaktion auf ein Klickereignis festzulegen, das einen Seitenwechsel auslöst. Der Standardwert ist 0,5f , was bedeutet, dass das Vorwärtsblättern erfolgt, wenn Sie auf die linke Bildschirmhälfte klicken, und das Vorwärtsblättern beginnt, wenn Sie im Einzelseitenmodus auf die rechte Bildschirmhälfte klicken.
Beispiel:
// set ratio with 0.3
mPageFlip . setWidthRatioOfClickToFlip ( 0.3f );
Sie können einen Listener so einrichten, dass er PageFlip mitteilt, ob der Vorwärts- oder Rückwärtsschlag stattfinden könnte.
Beispiel:
mPageFlip . setListener ( mListener );
Legen Sie fest, wie viele Pixel für ein Netz verwendet werden. Je weniger Pixel das Netz verwendet, desto feiner ist die Zeichnung und desto geringer ist die Leistung. Der Standardwert beträgt 10 Pixel.
Beispiel:
mPageFlip . setPixelsOfMesh ( 5 );
Wenn eine Seite gewellt ist, wird sie von PageFlip tatsächlich als Halbzylinder behandelt. Sie können die Größe des Halbzylinders einstellen, um die Flip-Form zu ändern. Da der Halbzylinder von der Linienlänge vom Berührungspunkt bis zum ursprünglichen Punkt abhängt (siehe Abbildung unten), müssen Sie ein Verhältnis dieser Linienlänge angeben, um PageFlip den Umfang des Halbzylinders mitzuteilen. Der Standardwert ist 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
Beispiel:
mPageFlip . setSemiPerimeterRatio ( 0.6f );
Sie können die Alpha-Maske für die Rückseite der Falzseite festlegen, wenn die Seite im Einzelseitenmodus gewellt wird. Der Standardwert ist 0,6f.
Beispiel:
mPageFlip . setMaskAlphaOfFold ( 0.5f );
Sie können die Start-/Endfarbe und das Start-/Endalpha für den Randschatten der Faltseite festlegen.
Beispiel:
// 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 );
Sie können die Start-/Endfarbe und das Start-/Endalpha für den Basisschatten der Faltseite festlegen.
Beispiel:
mPageFlip . setShadowColorOfFoldBase ( 0.05f , 0.2f , 0.5f , 1f );
Wenn die Seite gewellt ist, folgt die Größe der gefalteten Seite der zu ändernden Fingerbewegung und die Randschattenbreite sollte entsprechend geändert werden. Sie können einen geeigneten Breitenbereich für die Schattenbreite festlegen.
Beispiel:
// 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 );
Wie die Kantenschattenbreite der Faltseite können Sie einen geeigneten Breitenbereich für den Basisschatten der Faltseite festlegen.
Beispiel:
// see {@link #setShadowWidthOfFoldEdges} function
mPageFlip . setShadowWidthOfFoldBase ( 5 , 40 , 0.4f );
Sie können eine Dauer für die Flip-Animation angeben, wenn Sie die Funktion onFingerUp aufrufen, um das Finger-Up-Ereignis zu verarbeiten.
Beispiel:
// the last parameter is duration with millisecond unit, here we set it with 2 seconds.
mPageFlip . onFingerUp ( x , y , 2000 );
Dieses Projekt ist unter der Apache-Lizenz Version 2.0 lizenziert.