الرسوم المتحركة في Android: كيف تعمل. نحن ندرس الخصائص المفيدة وننشئ رسومًا متحركة على Android

في هذه المقالة سننظر في كيفية تحريك عناصر الواجهة في Android. ضمن عناصر الواجهة في في هذه الحالةوهذا يعني جميع أحفاد فئة العرض (يمكن العثور على قائمة كاملة بالأحفاد في وثائق فئة العرض). الرسوم المتحركة هي طريقة سهلة لجعل التطبيق أكثر حيوية :)

1. لنبدأ بإنشاء موقع اختبار. لنقم بإنشاء تطبيق بسيط باستخدام زر وصورة في منتصف الشاشة. لن أعطي الكود، إنه بسيط، إذا كان هناك أي شيء، انظر إلى المصادر (وهي موجودة في نهاية المقالة).

2. في الدليل /res/anim، قم بإنشاء ملف anim.xml واكتب هناك
< set xmlns:android=" http : // schemas.android.com /apk/res/android " android:shareInterpolator=" false " > < alpha android:fromAlpha=" 0.0 " android:toAlpha=" 1.0 " android:duration=" 1000 " />
هذا هو وصف الرسوم المتحركة الذي سنطبقه على صورتنا. سننظر إلى ما يحدث هنا بمزيد من التفاصيل أدناه، ولكن في الوقت الحالي سنقوم فقط بنسخه إلى ملف.

3. لتحميل الرسوم المتحركة من ملف XMLمستخدم طريقة ثابتةفئة الرسوم المتحركةUtils
تحميل الرسوم المتحركة (سياق السياق، معرف كثافة العمليات)، أين سياقهو السياق الحالي، و بطاقة تعريف- معرف المورد مع الرسوم المتحركة. تقوم الطريقة بإرجاع مثيل لفئة الرسوم المتحركة.
الرسوم المتحركة - فئة مجردة لتمثيل الرسوم المتحركة في التطبيق.
لتطبيقه، يتم تمرير المثيل الناتج لفئة الرسوم المتحركة إلى الأسلوب
ابدأ الرسوم المتحركة( الرسوم المتحركة الرسوم المتحركة) عرض الفصل (وجميع أحفاده).

4. لنكتب إلى ملف AnimationTestActivity.java:
يقوم AnimationTestActivity من الفئة العامة بتوسيع النشاط ( ImageView image; Button Button; Animation anim; @Override protected void onCreate(Bundle saveInstanceState) ( super .onCreate(savedInstanceState); setContentView(R.layout.main); image = (ImageView)findViewById(R. id.image); Button = (Button )findViewById(R.id.button); onClick(View v) ( image.startAnimation(anim); //2 ) ) )
1) اقرأ الملف بالمعرف R.anim.anim (الذي يتوافق مع الملف /res/anim/anim.xml) واحصل على مثيل لفئة الرسوم المتحركة.
2) من خلال النقر على الزر، نقوم بتطبيق الرسوم المتحركة على الصورة.

5. يمكنك إطلاق تطبيقنا. عند الضغط على الزر، ستختفي الصورة ثم تبدأ في الظهور مرة أخرى ببطء.

6. الآن دعونا نلقي نظرة فاحصة على كيفية إنشاء الرسوم المتحركة في ملف XML.
هناك 4 أنواع من الرسوم المتحركة:


  • ألفا(الشفافية، الرؤية)

  • حجم(التحجيم)

  • استدارة(دور)

  • يترجم(يتحرك)

لإنشاء رسوم متحركة، يجب علينا وصف الحالات الأولية والنهائية للكائن، وسيقرر النظام نفسه كيفية الانتقال من حالة إلى أخرى. في مثالنا
< alpha android:fromAlpha=" 0.0 " android:toAlpha=" 1.0 " android:duration=" 1000 " />
نحن نصف الرسوم المتحركة ألفا، أي أننا نغير رؤية الكائن. ضبط الحالة الأولية من ألفا = "0.0"(غير مرئية تماما) ومحدودة إلى ألفا = "1.0"(مرئية بالكامل). حدد مدة الرسوم المتحركة المدة = "1000"(بالميلي ثانية). وكل شيء آخر، أي كيفية تغيير رؤية كائن ما لتحويله من غير مرئي إلى مرئي في ثانية، يقوم به النظام بنفسه. ويتم حساب ذلك باستخدام إقحام- في الرياضيات الحسابية، طريقة لإيجاد القيم المتوسطة لكمية من مجموعة قيم منفصلة موجودة. يمكنك تعيين مُحرف لكل رسم متحرك
-AccelerateDecelerateInterpolator(@android:anim/accelerate_decelerate_int erpolator) - معدل التغيير منخفض في البداية والنهاية، ويتسارع في المنتصف

-AccelerateInterpolator(@android:anim/accelerate_interpolator) - يبدأ معدل التغيير منخفضًا ثم يتسارع

- توقع Interpolator(@android:anim/anticipate_interpolator) - تبدأ التغييرات في الاتجاه المعاكس، ثم تتحرك للأمام بشكل حاد

-توقع التجاوز Interpolator(@android:anim/anticipate_overshoot_inte rpolator) - تبدأ التغييرات في الاتجاه المعاكس، ثم تتحرك بسرعة للأمام وتطير فوق القيمة النهائية، ثم تعود إلى القيمة النهائية

-BounceInterpolator(@android:anim/bounce_interpolator) - يزداد معدل التغيير في النهاية

-CycleInterpolator(@android:anim/cycle_interpolator) - كرر الرسوم المتحركة لعدد محدد من المرات. معدل التغير يتبع موجة جيبية

-تسريع Interpolator(@android:anim/decelerate_interpolator) - ينخفض ​​معدل التغيير في النهاية

- الخطي Interpolator(@android:anim/linear_interpolator) - معدل التغيير ثابت

-OvershootInterpolator(@android:anim/overshoot_interpolator) - تقفز التغييرات للأمام وتطير فوق القيمة النهائية، ثم تعود إلى القيمة النهائية

يتم تحديد interpolator باستخدام سمة android:interpolator. على سبيل المثال
android:interpolator="@android:anim/cycl e_interpolator". الافتراضي هو LinearInterpolator.

7. وصف الحالات الأولية والنهائية
1) ألفا (الشفافية والرؤية)
- أندرويد: من ألفا- قيمة الشفافية الأولية. 0.0 - شفاف تمامًا (غير مرئي)، 1.0 - معتم تمامًا (مرئي)
- الروبوت: إلى ألفا- قيمة الشفافية النهائية

2) حجم
- الروبوت: منXScale- قيمة المقياس الأولية على طول المحور X (حيث يتوافق الحجم الحالي مع القيمة 1.0)
- الروبوت: إلىXScale- قيمة المقياس النهائي على طول المحور X
- الروبوت: من YScale- قيمة المقياس الأولية على طول المحور Y (حيث يتوافق الحجم الحالي مع القيمة 1.0)
- الروبوت: toYScale- قيمة المقياس النهائي على طول المحور Y
- أندرويد:pivotX- إحداثيات x للنقطة، والتي ستبقى دون تغيير بعد القياس
- أندرويد:محوري- إحداثي النقطة، والذي سيبقى دون تغيير بعد القياس

القيم المحتملة لـ PivotX و PivotY:
بالبكسل نسبة إلى الحافة اليسرى (أو العلوية للإحداثي Y) للعنصر (على سبيل المثال، "5")
كنسبة مئوية بالنسبة إلى الحافة اليسرى (العلوية) (على سبيل المثال، "5%")
كنسبة مئوية بالنسبة إلى الحافة اليسرى (العلوية) للعنصر الأصلي (على سبيل المثال، "5%p")

على سبيل المثال، إذا كان PivotX=0، PivotY=0 (الذي يتوافق مع الزاوية العلوية اليسرى للعنصر)، فسيؤدي تغيير الحجم إلى تغيير حجم العنصر إلى الأسفل وإلى اليمين. إذا كان PivotX=50%، PivotY=50%، فإن النقطة تكون في مركز العنصر ويتغير الحجم في كل الاتجاهات، بينما يبقى المركز عند نقطة واحدة.

3) تدور (تدور)
- الروبوت: من الدرجات- القيمة الأولية لزاوية الدوران (بالدرجات، القيمة السلبية ممكنة)
- الروبوت: إلى الدرجات- القيمة النهائية لزاوية الدوران
- أندرويد:pivotX- إحداثيات x مركز الدوران.
- أندرويد:محوري- إحداثي مركز الدوران.
القيم المحتملة لـ PivotX و PivotY كما في الرسم المتحرك للمقياس

4) ترجمة (نقل)
- الروبوت: من XDelta- إحداثيات x لنقطة انطلاق الحركة. القيم الممكنة:
بالبكسل نسبة إلى الموضع الأصلي (على سبيل المثال "5")
كنسبة مئوية بالنسبة لعرض العنصر (على سبيل المثال، "5%")
كنسبة مئوية بالنسبة لعرض العنصر الأصلي (على سبيل المثال "5%p")
- الروبوت: إلىXDelta- إحداثيات x لنقطة نهاية الحركة
- الروبوت: من YDelta- إحداثي نقطة انطلاق الحركة
- الروبوت: toYDelta- إحداثي نقطة نهاية الحركة

8. خيارات إضافية
هناك أيضًا سمات مشتركة بين جميع أنواع الرسوم المتحركة الأربعة، وأكثرها فائدة هي:
- أندرويد: المدة- مدة الرسوم المتحركة (بالميلي ثانية)
- الروبوت: interpolator- يحدد المحرف للرسوم المتحركة
- android:repeatCount- عدد مرات تكرار الرسوم المتحركة الإضافية. بالضبط تلك الإضافية، أي أنه سيتم تنفيذ الرسوم المتحركة مرة واحدة على أي حال. القيمة الافتراضية هي "0" - وهذا يعني أنه سيتم تنفيذ الرسوم المتحركة مرة واحدة فقط. القيمة "1" تعني أن الرسوم المتحركة سيتم تشغيلها مرتين (مرة واحدة رئيسية ومرة ​​ثانوية). القيمة "-1" أو "لا نهائية" تعني التكرار الذي لا نهاية له.
- الروبوت: وضع التكرار- يحدد سلوك الرسوم المتحركة عندما تصل إلى النهاية، والمعلمة RepeatCount لا تساوي 0. هناك قيمتان: "إعادة التشغيل" - تبدأ الرسوم المتحركة مرة أخرى و"عكس" - ستتحرك الرسوم المتحركة بترتيب عكسي .
- android:startOffset- التأخير قبل بدء الرسوم المتحركة (بالميلي ثانية)

9. الجمع بين الرسوم المتحركة المتعددة
يمكنك تطبيق أنواع متعددة من الرسوم المتحركة على عنصر ما في نفس الوقت. فمثلاً لو كتبنا:
< set xmlns:android=" http : // schemas.android.com /apk/res/android " > < alpha android:fromAlpha=" 0.0 " android:toAlpha=" 1.0 " android:duration=" 1000 " /> < rotate android:fromDegrees=" 0 " android:toDegrees=" 360 " android:pivotX=" 50% " android:pivotY=" 50% " android:duration=" 1000 " />
ستتغير الصورة شفافيتها خلال ثانية واحدة (من شفافة تمامًا إلى معتمة) وفي نفس الوقت ستدور بمقدار 360 درجة.

يمكن ضبط الرسوم المتحركة على فترات مختلفة، على سبيل المثال، دعنا نضبطها المدة=5000لتدوير الرسوم المتحركة. الآن سيتم تدوير الصورة بشكل أبطأ بكثير، وستظل الشفافية تتغير خلال ثانية واحدة.

باستخدام startOffset، يمكنك جعل الرسوم المتحركة متسلسلة. أضف سمة التدوير بداية الإزاحة = "1000"(أي أننا سنجعل التأخير مساويًا لمدة الرسوم المتحركة الأولى). الآن ستصبح الصورة مرئية لأول مرة خلال ثانية واحدة، ثم يتم تدويرها 360 درجة فقط.

يمكن دمج العديد من الرسوم المتحركة في مجموعات باستخدام العلامة. ستكون إحدى هذه العلامات موجودة دائمًا في الملف وهي العلامة الجذر. يمكنك تعيين السمات التالية لمجموعة:
- مدة(مدة)، كرر الوضع(وضع التكرار) - سيتم تطبيق هذه السمات على كل رسم متحرك في المجموعة
- interpolator- يحدد الرسوم المتحركة المحرف و com.shareInterpolator- ما إذا كان سيتم تطبيق هذا المحرف على كل رسم متحرك في المجموعة (القيم المحتملة هي "صحيح" و"خطأ")
- startOffset(تأخير) - تأخير لمجموعة الرسوم المتحركة بأكملها.
لسوء الحظ، لا يمكن تطبيق السمة على المجموعة تكرار العدأي أن تكرار مجموعة من الرسوم المتحركة عدة مرات لن ينجح.
يمكن أن تكون المجموعات من أي تعشيش.

10. إنشاء رسوم متحركة بدون XML
يمكن إنشاء الرسوم المتحركة دون استخدام XML، مباشرة في رمز البرنامج. لهذا، يتم استخدام الفئات التابعة للرسوم المتحركة:
1) AlphaAnimation لإنشاء رسوم متحركة ألفا. يبدو منشئ الفصل
الرسوم المتحركة ألفا (تطفو من ألفا، تطفو إلى ألفا)حيث fromAlpha وtoAlpha هما قيمتي الشفافية الأولية والنهائية، على التوالي (من 0.0 إلى 1.0)

11. لنقم بإنشاء رسم متحرك في الكود، والذي، عند الضغط على زر، سوف يقوم بتدوير الصورة بزاوية عشوائية (من 0 إلى 360) ويقوم بتكبيرها إلى حجم عشوائي (ليس أكثر من مرتين). ولهذا الغرض أضفت زرًا آخر عشوائيًا
بشكل عشوائي. RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); //2 Rotate.setDuration(1000); ); //6 حجم العائمة = عشوائي.nextFloat() + 1.0; //8scale.setDuration(1000);scale.setStartOffset(duration); //9 AnimationSet = new AnimationSet; );
1) إنشاء كائن عشوائي لتوليد أرقام عشوائية. يمكنك قراءة المزيد عن Random في الوثائق، ونحن الآن مهتمون بطرق int nextInt(int n) - إنشاء عدد صحيح في النطاق من 0 إلى n. وطريقة float nextFloat() - توليد رقم حقيقي من 0 إلى 1.
2) إنشاء الرسوم المتحركة التناوب. زاوية البداية = 0، زاوية النهاية = رقم عشوائي من 0 إلى 360. الرسوم المتحركة.RELATIVE_TO_SELF تعني أننا سنحدد نقطة مركز الدوران كنسبة مئوية بالنسبة لعرض العنصر. لا تنس أن القيمة 1.0 تقابل 100%، مما يعني أن 0.5f تساوي 50%. وهذا يعني أن مركز نقطة الدوران سيكون في منتصف الصورة.
3) اضبط مدة الرسوم المتحركة على 1000 مللي ثانية (هذه ثانية واحدة)
4) نحدد وضع التكرار على أنه رسوم متحركة. عكس، أي أنه عند تكرار الرسوم المتحركة، سنذهب بالترتيب العكسي.
5) قم بتعيين عدد التكرارات الإضافية = 1. وهذا يعني أنه سيتم تكرار الرسوم المتحركة مرتين، مرة في الترتيب الأمامي ومرة ​​في الاتجاه المعاكس.
6) تحسب طريقة computeDurationHint() الطويلة المدة التي ستستغرقها الرسوم المتحركة بشكل إجمالي. توجد طريقة getDuration()، ولكنها تقوم ببساطة بإرجاع قيمة المدة التي قمنا بتعيينها باستخدام طريقة setDuration(). في حالتنا، قمنا بتعيين قيمة المدة على 1000 وستعيد طريقة getDuration() 1000 ولن تأخذ في الاعتبار أن الرسوم المتحركة ستتكرر مرتين، مما يعني أنها ستستمر فعليًا 2000 مللي ثانية. ستقوم طريقة computeDurationHint() بحساب المدة مع مراعاة عمليات إعادة المحاولة والتأخير.
7) حساب الحجم الجديد للصورة. القيمة 1.0 هي مقياس الصورة الحالي، وبالتالي فإن القيمة 2.0 تعني أن الصورة مضاعفة. نقوم بإنشاء رقم من 0.0 إلى 1.0 ونضيف 1، مما يعني أننا نحصل على رقم من 1.0 إلى 2.0
8) قم بإنشاء رسم متحرك للتحجيم من حجم الصورة الحالي إلى رقم تم إنشاؤه عشوائيًا من 1.0 إلى 2.0
9) قم بتعيين تأخير يساوي المدة الإجمالية للرسوم المتحركة للتدوير. بحيث تبدأ الرسوم المتحركة الثانية مباشرة بعد نهاية الأولى
10) إنشاء مجموعة من الرسوم المتحركة.
11) أضف اثنين من الرسوم المتحركة التي تم إنشاؤها إلى المجموعة
12) تطبيق مجموعة من الرسوم المتحركة على الصورة

12. طريقة أخرى مثيرة للاهتمام لفئة الرسوم المتحركة
setAnimationListener (Animation.AnimationListener المستمع)- يضبط المستمع لتغييرات حالة الرسوم المتحركة. تحدد واجهة Animation.AnimationListener الطرق التالية:
onAnimationStart (الرسوم المتحركة الرسوم المتحركة)- يتم استدعاؤه عند بدء الرسوم المتحركة
onAnimationRestart (رسوم متحركة)- يتم استدعاؤه عند تكرار الرسوم المتحركة
onAnimationEnd (الرسوم المتحركة الرسوم المتحركة)- يسمى في نهاية الرسوم المتحركة

على سبيل المثال:
anim = AnimationUtils.loadAnimation(this, R.anim.anim); anim.setAnimationListener(new AnimationListener () ( @Override public void onAnimationEnd(Animation Animation) ( Log.d("MY" , "animation end" );) @Override public void onAnimationRepeat(Animation Animation) (Log.d("MY" " ، "تكرار الرسوم المتحركة" ); ) @Override public void onAnimationStart(Animation Animation) ( Log.d("MY" , "animation start" ); ) ));
نحن لا نفعل أي شيء مفيد عند تغيير حالة الرسوم المتحركة، بل نكتبها فقط في السجل.

هذا كل شئ. لقد أخبرتك بالأساسيات، ومن الأفضل أن تتعلم الباقي من خلال التجارب :)

يمكن تحميل المصادر هنا

تعيين الأنابيب المعدنية. دعونا نلقي نظرة على تسميات خطوط الأنابيب المعدنية الأكثر شيوعًا وفقًا لـ GOST. أنابيب المياه والغاز الفولاذية وفقًا لـ GOST يشير تعيين الأنبوب إلى القطر الاسمي والطول (عند استخدام الأنابيب ذات الطول المقاس) وسمك الجدار. لنفكر في مثال على تعيين أنبوب بقطر اسمي 32 مم، وسمك جدار 2.8 مم، بدون طلاء الزنك: الأنابيب 32x2.8 GOST يُشار إلى وجود طلاء الزنك بالحرف C، الذي يتم وضعه بعد كلمة "الأنابيب".

إذا لزم الأمر، تتم الإشارة إلى علامة تشير إلى وجود المواضيع في تعيين الأنابيب. يتم وضع علامات على الأنابيب الفولاذية وفقًا لـ GOST في المصنع بعد الإنتاج وتحتوي على معلومات حول حجم ودرجة الفولاذ الذي صنع منه الأنبوب، بالإضافة إلى العلامة التجارية للشركة المصنعة. يتناسب حجم حروف وأرقام العلامة التجارية بشكل مباشر مع حجم المنتج ويمكن تطبيقها باستخدام عدة طرق.

الأكثر شيوعا هي العلامات التجارية والطلاء المقاوم للماء. تتم مناقشة أنواع التحكم وتعيينها في وضع العلامات على المنتج في الجدول (الجدول)؛ العنصر التالي"" تشير إلى سمك الجدار بالملليمتر؛ تشير القيمة الرابعة إلى طول المنتج بالملليمتر من القطع إلى القطع، وفي هذه الحالة يكون "".

كيفية فك علامات الأنابيب الفولاذية: القطر ودرجة الفولاذ والمؤشرات الأخرى وفقًا لـ GOST. الرموز المطبوعة على الأنابيب الفولاذية تعطي معلومات شاملةحول المنتجات.

يعد وضع العلامات نوعًا من جواز سفر المنتج الذي يتضح من خلاله من وأين ولأي غرض تم تصنيعه. ستخبرك هذه المقالة بكيفية فك رموز جميع رموز العلامات على الأنابيب بشكل صحيح.

ملحوظة. يتم تنظيم وضع علامات على الأنابيب الفولاذية (والحديد الزهر) بموجب GOST رقم العام. تحدد هذه الوثيقة جميع الفروق الدقيقة في تطبيق النقوش التوضيحية وأحجامها والمسافات بين الأرقام وما إلى ذلك.

أنابيب فولاذية غير ملحومة مشوهة على البارد GOST (تشكيلة) هذا المعيارينطبق على الأنابيب غير الملحومة المشكلة على البارد هدف عاممصنوعة من الكربون وسبائك الصلب. الأقطار: 5 - ملم. في رموز الأنابيب، يتم وضع المؤشر A أو B قبل درجة الفولاذ. يتم تصنيع الأنابيب إما معالجة بالحرارة أو بدون معالجة حرارية.

يجب قطع نهايات الأنابيب بزاوية قائمة. طرق وضع علامات على الأنابيب الفولاذية: معايير GOST، أمثلة على فك التشفير حرف او رمز. من خلال قراءة الأرقام الموجودة على المنتج، يستطيع المتخصص تحديد حجم الأنبوب ونوعه ودرجة الفولاذ والقوة والشركة المصنعة وبعض المعالم الأخرى للمنتج.

وضع علامات على الأنابيب الفولاذية غرض خاصيحتوي على علامات إضافية. تشمل المنتجات ذات الأغراض الخاصة ما يلي: الأنابيب المصنوعة من سبائك الصلب. 4. المراجع الوثائق التنظيمية والفنية. تسمية NTD. الذي يتم إعطاء الرابط. W s g -80 GOST yu S1 رقم العنصر. التغيير رقم 2 GOST - 91 أنابيب فولاذية ملحومة بالكهرباء.

التشكيلة المعتمدة من قبل المجلس المشترك بين الولايات للمعايير والمقاييس وإصدار الشهادات عن طريق المراسلة (البروتوكول رقم 45 بتاريخ) مسجلة من قبل مكتب رقم معايير الاتحاد الجغرافي الدولي. صوتت هيئات التقييس الوطنية في الولايات التالية لصالح اعتماد التغيير: BY، KG ، RU، TJ [رموز ألفا 2 وفقًا لـ MK (ISO)].

بيع وشراء. تعيين أنابيب الصلب. أنابيب فولاذية ملحومة كهربائياً ذات التماس المستقيم. تشكيلة. دار نشر GOST IPK بالمعايير. معيار الدولة لاتحاد الجمهوريات الاشتراكية السوفياتية. أنابيب الصلب الملحومة كهربائيا التماس المباشر. مع زخرفة. زيوت خط اللحام الفولاذية الملحومة كهربائياً. يتراوح. GOST تاريخ التقديم 1. تحدد هذه المواصفة القياسية مجموعة من الأنابيب الفولاذية الملحومة كهربائيًا ذات التماس المستقيم.

2. يجب أن تتوافق أبعاد الأنابيب مع الجدول. 1. 3. وفقًا لطول الأنبوب، يتم تصنيعها: بطول غير مُقاس. تحديد الوثائق العلمية والتقنية المشار إليها. رقم الشيء. غوست

فئاتآخر الملاحة

يوم جيد للجميع. أريد أن أخصص هذا المنشور لموضوع الأجزاء لنظام Android. توجد بالفعل ترجمات وبعض المقالات حول حبري، والتي تشير إلى كيفية بدء العمل مع الأجزاء لنظام Android. على سبيل المثال، المادة. يحتوي على وصف لما هي الأجزاء وفي أي إصدار من Android تتوفر، لذلك يمكن لأولئك الذين لم يصلوا إليها بعد قراءتها إذا رغبوا في ذلك، لكنني لن أعيد سرد هذا في رسالتي. لذلك سأدخل مباشرة في صلب الموضوع.

بداية العمل

اسمحوا لي أن أقول باختصار أن الأجزاء هي مكونات واجهة مستخدم المستخدم التي يمكن استخدامها باستخدام فئة النشاط لعرض بيانات المستخدم، ولكنها دورة الحياةلا يعتمد عليه. تتمتع الوظائف التي توفرها الأجزاء بوظائف أوسع للعمل معها من النشاط، لذا فإن استخدامها ليس له أهمية كبيرة للمطورين إذا كانوا يريدون أن يحتوي تطبيقهم على واجهة مستخدم أكثر حداثة وفقًا لمعايير اليوم.

الآن دعونا نصل إلى جوهر هذا المنصب. مطورو جوجلتم منح الأجزاء، في رأيي، دعمًا ممتازًا للرسوم المتحركة لعرض الجزء نفسه. سيتم مناقشة هذا بمزيد من التفصيل. لقد بحثت في حبر عن منشورات حول هذا الموضوع، لكنني لم أجد أي شيء، والآن سأشارك معرفتي.

إنشاء مشروع

دعونا ننشئ مشروعًا صغيرًا. لقد أنشأت مشروعًا خاصًا بي سامسونج نيكزس S، لدي إصدار Android 4.1.2 هناك، وهو ما استخدمته بالفعل (Api Level 16). لقد أطلقت على المشروع نفسه اسم FragmentsAnimationTest.

بالنسبة للعرض التوضيحي، سنحتاج إلى النشاط الرئيسي وتخطيطه، واثنين من الأجزاء، لكل منها تخطيطها الخاص، واثنين من ملفات XML للرسوم المتحركة نفسها، والتي سأتحدث عنها لاحقًا.

سيبدو التطبيق كما يلي: سيتم عرض إحدى الأجزاء على الشاشة، وسيتم التبديل بينها باستخدام الزر العادي، وبالتالي، فإن تبديل الأجزاء نفسها سيكون مصحوبًا بتأثيرات الرسوم المتحركة.

أولاً، لنرتب عناصر النشاط الرئيسي في ملفactiv_main.xml: