يهدف هذا المشروع إلى تنفيذ نمط ثلاثي الأبعاد لقلب الصفحة على نظام Android استنادًا إلى OpenGL 2.0.
للحصول على إصدار 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 | واجهة برمجة التطبيقات 13 | س |
4.1 | واجهة برمجة التطبيقات 16 | √ |
4.2 | واجهة برمجة التطبيقات 17 | √ |
4.3 | واجهة برمجة التطبيقات 18 | √ |
4.4 | واجهة برمجة التطبيقات 19 | √ |
5.0 | API 21 | √ |
5.1 | أبي 22 | √ |
6.0 | أبي 23 | √ |
7.0 | API 24 | √ |
7.1.1 | أبي 25 | √ |
7.+ | أبي 26 | √ |
ينشئ فئة عرض سطحية تمتد من GLSurfaceView
يطبق واجهة Android Renderer لرسم المحتوى الخاص بك على صورة نقطية وتعيينه كنسيج لـ PageFlip
إنشاء كائن PageFlip في مُنشئ العرض السطحي الخاص بك
يقوم بتكوين PageFlip ، على سبيل المثال: تعيين مدة الرسوم المتحركة أو وضع الصفحة أو وحدات البكسل الشبكية
يتعامل مع أحداث Android التالية:
قد تحتاج إلى معالج رسائل لإرسال/استقبال رسالة رسم. يرجى الرجوع إلى PageFlipView في نموذج التطبيق.
قد تحتاج إلى قفل لتجنب التعارضات بين سلسلة المحادثات الرئيسية وسلسلة عرض OpenGL. يرجى الرجوع إلى PageFlipView في نموذج التطبيق.
مزيد من التفاصيل، يرجى إلقاء نظرة على PageFlipView في نموذج التطبيق.
توفر مكتبة PageFlip بعض التكوينات لتخصيص سلوكياتها. على سبيل المثال: لون الظل وألفا، وبكسلات الشبكة ووضع الصفحة.
هناك وضعان للصفحة يوفرهما 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 );
يمكنك تعيين قناع ألفا للجزء الخلفي من الصفحة المطوية عندما يتم تجعيد الصفحة في وضع الصفحة الواحدة. القيمة الافتراضية هي 0.6f.
مثال:
mPageFlip . setMaskAlphaOfFold ( 0.5f );
يمكنك تعيين لون البداية/النهاية وألفا البداية/النهاية لظل حافة الصفحة المطوية.
مثال:
// 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 );
يمكنك تعيين لون البداية/النهاية وألفا البداية/النهاية للظل الأساسي للصفحة المطوية.
مثال:
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 الإصدار 2.0.