[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.49,0:00:03.00,Default,,0000,0000,0000,,حسنًا، لقد عدنا مجددًا إلى برنامج\NAndroid Studio، Dialogue: 0,0:00:03.00,0:00:05.61,Default,,0000,0000,0000,,لمراجعة مصدر DroidCardsView. Dialogue: 0,0:00:05.61,0:00:07.96,Default,,0000,0000,0000,,مجددًا، هذا هو العرض المخصص. Dialogue: 0,0:00:07.96,0:00:11.87,Default,,0000,0000,0000,,فقط لنتذكر، أنه في هذا العرض المخصص\Nقمنا بإنشاء أوراق اللعب المتراكبة. Dialogue: 0,0:00:11.87,0:00:14.48,Default,,0000,0000,0000,,على سبيل المثال،\Nكل بطاقة لها صورتها النقطية الخاصة بها، Dialogue: 0,0:00:14.48,0:00:17.91,Default,,0000,0000,0000,,ونحن نرسمهم على الشاشة\Nعن طريق التحكم في أسلوب onDraw. Dialogue: 0,0:00:19.28,0:00:22.32,Default,,0000,0000,0000,,وتذكر، أنه بالتحكم في أسلوب onDraw، Dialogue: 0,0:00:22.32,0:00:25.58,Default,,0000,0000,0000,,فلن يتمكن الأندرويد من تحسين\Nمعالجة المشهد، Dialogue: 0,0:00:25.58,0:00:28.72,Default,,0000,0000,0000,,إنها مهمتنا نحن المطورون لاقتصاص\Nكل بطاقة بطريقة صحيحة Dialogue: 0,0:00:28.72,0:00:31.20,Default,,0000,0000,0000,,كما ستظهر على الشاشة\Nوذلك لتجنب تراكب الرسوم غير الضروري. Dialogue: 0,0:00:32.47,0:00:36.01,Default,,0000,0000,0000,,ولحسن الحظ، فأداة Canvas API\Nتعطينا الطرق الصحيحة التي نحتاجها Dialogue: 0,0:00:36.01,0:00:38.01,Default,,0000,0000,0000,,لرسم بطاقاتنا بطريقة أكثر فعالية. Dialogue: 0,0:00:38.01,0:00:39.43,Default,,0000,0000,0000,,فلنلقِ نظرة على التوثيق. Dialogue: 0,0:00:40.52,0:00:44.01,Default,,0000,0000,0000,,ولنستخدم طريقةcanvas.clipRect\Nلتحسين الكود خاصتنا. Dialogue: 0,0:00:45.01,0:00:49.27,Default,,0000,0000,0000,,سوف نستخدم هذا المتغير هنا والذي يحتوي\Nعلى أربعة متغيرات مثل البارامترات. Dialogue: 0,0:00:49.27,0:00:51.32,Default,,0000,0000,0000,,حسنًا، لقد عدنا الآن إلى\NAndroid Studio Dialogue: 0,0:00:51.32,0:00:55.07,Default,,0000,0000,0000,,فلنقم بتعديل كيفية رسم كل بطاقة مدرجة Dialogue: 0,0:00:55.87,0:00:59.08,Default,,0000,0000,0000,,وسوف أستخدم تلك الخاصية الرائعة الموجودة\Nفي Android Studio لإحضار مشهد مختلف Dialogue: 0,0:00:59.08,0:01:01.81,Default,,0000,0000,0000,,إلى المقدمة، حتى تتمكن من رؤية\Nحالة الكود قبل وبعد التعديل. Dialogue: 0,0:01:02.21,0:01:04.51,Default,,0000,0000,0000,,حسنًا، نحن هنا في مشهد المقارنة، Dialogue: 0,0:01:05.51,0:01:08.18,Default,,0000,0000,0000,,ولنلق نظرة خاصة على أسلوب onDraw\Nوهو الأسلوب الذي نتجاوزه. Dialogue: 0,0:01:08.88,0:01:11.01,Default,,0000,0000,0000,,لدينا الحالة القديمة لحلقة for التكرارية\Nعلى اليسار، Dialogue: 0,0:01:11.01,0:01:15.11,Default,,0000,0000,0000,,لكن فلنركز على التحسينات\Nالتي سنقوم بها هنا على اليمين. Dialogue: 0,0:01:15.11,0:01:18.10,Default,,0000,0000,0000,,الآن، وبينما نكرر البطاقات،\Nفلنراجع كل خطوة من التحسينات. Dialogue: 0,0:01:19.10,0:01:22.79,Default,,0000,0000,0000,,رقم واحد أولًا سنقوم بحساب موضع البطاقة. Dialogue: 0,0:01:23.85,0:01:26.74,Default,,0000,0000,0000,,ثم سنقوم بتشغيل تلك الخاصية\Ncanvas.save Dialogue: 0,0:01:26.74,0:01:28.59,Default,,0000,0000,0000,,التي ستحفظ حالة لوحة الرسم الحالية. Dialogue: 0,0:01:29.49,0:01:30.55,Default,,0000,0000,0000,,وبمعنى آخر، Dialogue: 0,0:01:30.55,0:01:34.69,Default,,0000,0000,0000,,فهي تحافظ على الوضع الحالي\Nللشاشة قبل تطبيق أداة clipRect API. Dialogue: 0,0:01:35.69,0:01:37.48,Default,,0000,0000,0000,,الآن، عندما نقوم بتشغيل طريقة clipRect، Dialogue: 0,0:01:37.48,0:01:39.56,Default,,0000,0000,0000,,فإننا بذلك نقوم بعمل بعض الحدود الهندسية. Dialogue: 0,0:01:40.66,0:01:43.58,Default,,0000,0000,0000,,وعندما نمرر هذه المتغيرات،\Nفنحن بذلك نخبر النظام Dialogue: 0,0:01:43.58,0:01:46.00,Default,,0000,0000,0000,,بأن يرسم فقط جزء البطاقة\Nالذي نريد أن يكون مرئيًا. Dialogue: 0,0:01:47.00,0:01:48.42,Default,,0000,0000,0000,,وبالطبع، بقية الأجزاء ستكون مخفية. Dialogue: 0,0:01:49.47,0:01:52.95,Default,,0000,0000,0000,,الآن، أجزاء البطاقة الموجودة\Nضمن الحدود التي وضعناها فقط Dialogue: 0,0:01:52.95,0:01:54.66,Default,,0000,0000,0000,,هي الأجزاء التي سيتم رسمها فقط. Dialogue: 0,0:01:54.66,0:01:57.01,Default,,0000,0000,0000,,وأخيرًا، سنقوم بتشغيل canvas.restore، Dialogue: 0,0:01:57.01,0:01:59.89,Default,,0000,0000,0000,,والتي ستحول لوحة الرسم\Nإلى وضعية عدم الاقتصاص. Dialogue: 0,0:01:59.89,0:02:00.100,Default,,0000,0000,0000,,وبمعنى آخر، Dialogue: 0,0:02:00.100,0:02:04.24,Default,,0000,0000,0000,,سوف تقوم بإلغاء الحدود\Nالتي وضعناها عندما قمنا بتشغيل clipRect. Dialogue: 0,0:02:04.24,0:02:08.10,Default,,0000,0000,0000,,ثم نقوم بإعادة تلك الحلقة التكرارية\Nلجميع البطاقات ما عدا الموجودة بالأعلى. Dialogue: 0,0:02:08.79,0:02:11.00,Default,,0000,0000,0000,,الآن وبشكل خاص سنقوم بمعالجة Dialogue: 0,0:02:11.00,0:02:13.45,Default,,0000,0000,0000,,البطاقة الأخيرة بشكل مختلف\Nعن نظيراتها الموجودة بالأسفل. Dialogue: 0,0:02:13.45,0:02:16.01,Default,,0000,0000,0000,,وبالنسبة لهذه البطاقة،\Nفلن نحتاج إلى الاقتصاص، Dialogue: 0,0:02:16.01,0:02:18.65,Default,,0000,0000,0000,,لذا سنقوم برسمها كاملة. Dialogue: 0,0:02:18.65,0:02:20.78,Default,,0000,0000,0000,,ويمكنك أن ترى ذلك من خلال\Nهذه الجملة الموجودة هنا. Dialogue: 0,0:02:21.98,0:02:23.80,Default,,0000,0000,0000,,حسنًا، فلنقم بإنشاء الكود المحسن، Dialogue: 0,0:02:23.80,0:02:26.32,Default,,0000,0000,0000,,لنرَ إن كنا قد قمنا بتقليل\Nكمية من تراكب الرسوم. Dialogue: 0,0:02:27.66,0:02:28.82,Default,,0000,0000,0000,,حسنًا، رائع! Dialogue: 0,0:02:28.82,0:02:30.97,Default,,0000,0000,0000,,كما ترى هنا، يوجد القليل من تراكب الرسوم. Dialogue: 0,0:02:32.13,0:02:35.25,Default,,0000,0000,0000,,آمل أن يكون مفهومًا أنه باستخدام\NCanvas API يكون لدينا طريقة مباشرة Dialogue: 0,0:02:35.25,0:02:38.35,Default,,0000,0000,0000,,للرسم بطريقة فعالة عند العمل\Nعلى عروض مخصصة. Dialogue: 0,0:02:38.35,0:02:41.06,Default,,0000,0000,0000,,وفي حالة ما إذا رغبت باستكشاف\NCanvas API أكثر، Dialogue: 0,0:02:41.06,0:02:44.17,Default,,0000,0000,0000,,فتأكد من مراجعة كامل التوثيق\Nالموجود في ملاحظات المدرب. Dialogue: 0,0:02:45.17,0:02:48.46,Default,,0000,0000,0000,,الآن، مشاهد مثل هذه تعتبر رائعة\Nلمساعدتنا على خلق Dialogue: 0,0:02:48.46,0:02:52.48,Default,,0000,0000,0000,,تجربة مستخدم فريدة وجذابة\Nلكن تذكر أننا يجب أن نعتمد على النظام Dialogue: 0,0:02:52.48,0:02:55.11,Default,,0000,0000,0000,,لمساعدة الأندرويد في معالجة\Nمثل هذه المشاهد بطريقة ذات فعالية. Dialogue: 0,0:02:56.11,0:02:59.80,Default,,0000,0000,0000,,إذن عندما تقوم بإنشاء عرض مخصص،\Nتأكد من فحص تراكب الرسوم، Dialogue: 0,0:02:59.80,0:03:01.97,Default,,0000,0000,0000,,وأن تكن مستعدًا لإحياء صديقك\Nوهو طريقةclipRect. Dialogue: 0,0:03:01.97,0:03:04.29,Default,,0000,0000,0000,,حسنًا، عمل رائع! Dialogue: 0,0:03:04.29,0:03:06.28,Default,,0000,0000,0000,,فلنعد إلى كولت ليخبرنا المزيد عن الأداء.