Proyek ini bertujuan untuk mengimplementasikan flip halaman gaya 3D pada sistem Android berbasis OpenGL 2.0.
Untuk versi JNI , silakan kunjungi: android-PageFlip-JNI
Pratinjau
Instalasi
Dukungan Versi Android
Penggunaan
Lisensi
Tambahkan ke build.gradle Anda dengan:
allprojects {
repositories {
maven { url " https://jitpack.io " }
}
}
Dan:
dependencies {
compile ' com.github.eschao:android-PageFlip:1.0.2 '
}
Versi berikut telah diuji pada emulator:
versi Android | versi API | Mendukung |
---|---|---|
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 | √ |
Membuat kelas tampilan permukaan yang diperluas dari GLSurfaceView
Mengimplementasikan antarmuka Android Renderer untuk menggambar konten Anda pada bitmap dan mengaturnya sebagai tekstur PageFlip
Membuat instance objek PageFlip di konstruktor tampilan permukaan Anda
Mengonfigurasi PageFlip , Misalnya: mengatur durasi animasi, mode halaman, atau piksel mesh
Menangani peristiwa Android di bawah ini:
Anda mungkin memerlukan penangan pesan untuk mengirim/menerima pesan gambar. Silakan merujuk ke PageFlipView dalam contoh aplikasi.
Anda mungkin memerlukan kunci untuk menghindari konflik antara thread utama dan thread rendering OpenGL. Silakan merujuk ke PageFlipView dalam contoh aplikasi.
Lebih jelasnya silahkan lihat PageFlipView pada contoh aplikasi.
Pustaka PageFlip menyediakan beberapa konfigurasi untuk menyesuaikan perilakunya. Misalnya: warna bayangan dan alfa, piksel mesh, dan mode halaman.
Ada dua mode halaman yang disediakan oleh PageFlip :
Anda dapat menggunakan aktifkanAutoPage untuk mengaktifkan mode halaman otomatis atau menonaktifkannya (sama-sama mengaktifkan mode halaman tunggal).
Contoh:
// enable auto page mode
mPageFlip . enableAutopage ( true );
Anda dapat mengaktifkan/menonaktifkan layar klik untuk membalik
Contoh:
// enable clicking to flip
mPageFlip . enableClickToFlip ( true );
Anda dapat memberikan rasio lebar halaman dari 0 hingga 0,5f untuk mengatur area respons peristiwa klik guna memicu pembalikan halaman. Nilai defaultnya adalah 0.5f , yang berarti pembalikan ke belakang akan terjadi jika Anda mengeklik separuh kiri layar dan membalik ke depan akan dimulai jika Anda mengeklik separuh kanan layar dalam mode satu halaman.
Contoh:
// set ratio with 0.3
mPageFlip . setWidthRatioOfClickToFlip ( 0.3f );
Anda dapat mengatur pendengar untuk memberi tahu PageFlip apakah gerakan membalik ke depan atau ke belakang dapat terjadi.
Contoh:
mPageFlip . setListener ( mListener );
Atur berapa banyak piksel yang digunakan untuk mesh. Semakin sedikit piksel yang digunakan mesh, semakin halus gambarnya dan semakin rendah performanya. Nilai defaultnya adalah 10 piksel.
Contoh:
mPageFlip . setPixelsOfMesh ( 5 );
Ketika halaman dilengkungkan, halaman tersebut sebenarnya ditangani sebagai semi-silinder oleh PageFlip . Anda dapat mengatur ukuran setengah silinder untuk mengubah bentuk flip. Karena setengah silinder bergantung pada panjang garis dari titik sentuh ke titik awal (lihat ilustrasi di bawah), Anda perlu memberikan rasio panjang garis ini untuk memberi tahu PageFlip peremeter setengah silinder. Nilai defaultnya adalah 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
Contoh:
mPageFlip . setSemiPerimeterRatio ( 0.6f );
Anda dapat mengatur mask alpha untuk bagian belakang halaman lipat ketika halaman digulung dalam mode satu halaman. Nilai defaultnya adalah 0,6f.
Contoh:
mPageFlip . setMaskAlphaOfFold ( 0.5f );
Anda dapat mengatur warna awal/akhir dan alfa awal/akhir untuk bayangan tepi halaman lipatan.
Contoh:
// 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 );
Anda dapat mengatur warna awal/akhir dan alfa awal/akhir untuk bayangan dasar halaman lipatan.
Contoh:
mPageFlip . setShadowColorOfFoldBase ( 0.05f , 0.2f , 0.5f , 1f );
Saat halaman digulung, ukuran halaman lipatan akan mengikuti gerakan jari yang akan diubah dan lebar bayangan tepinya juga harus diubah. Anda dapat mengatur rentang lebar yang sesuai untuk lebar bayangan.
Contoh:
// 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 );
Seperti lebar bayangan tepi halaman lipatan , Anda dapat mengatur rentang lebar yang sesuai untuk bayangan dasar halaman lipatan.
Contoh:
// see {@link #setShadowWidthOfFoldEdges} function
mPageFlip . setShadowWidthOfFoldBase ( 5 , 40 , 0.4f );
Anda dapat memberikan durasi untuk animasi flip ketika Anda memanggil fungsi onFingerUp untuk menangani acara finger up.
Contoh:
// the last parameter is duration with millisecond unit, here we set it with 2 seconds.
mPageFlip . onFingerUp ( x , y , 2000 );
Proyek ini dilisensikan di bawah Lisensi Apache Versi 2.0.