YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Arabic subtitles

Build 2-Pane Tablet UI

Get Embed Code
6 Languages

Showing Revision 33 created 06/09/2016 by Udacity Robot.

  1. من خلال ما تعلمناه حول
    كيفية تجاوز المصادر
  2. ،في المجلدات الأخرى
  3. سننتقل سويًا لمعرفة
    .كيفية بناء واجهة مستخدم كمبيوتر لوحي من جزأين
  4. ،أولاً، نزيل مجلد values-W820dp
    فلسنا بحاجة إلى تقديم منطق محدد
  5. عندما يكون الاتجاه الحالي
    .أكبر من 820dp
  6. ثم ننتقل
    .وننفذ تغييرات تخطيط XML
  7. ثم ننشئ مجلد
    .تخطيط SW 600dp جديد
  8. ثم نضيف ملفًا جديدًا
    .باسم activity_main
  9. نستخدم نفس اسم الملف
    ،الموجود في مجلد التخطيط الأساسي activity_main
  10. بحيث يتجاوز اسم الملف
    .السلوك المتبع على الكمبيوتر اللوحي بشكل خاص
  11. لرؤية التعليمات البرمجية لهذا الملف
    .يمكننا التحقق من الخلاصة أدناه
  12. هذا الملف في الأساس عبارة عن تخطيط خطي أفقي
    يمكنه أن يتضمن جزء التنبؤ
  13. على الجانب الأيسر
    .وتجزئة detail على الجانب الأيمن
  14. الآن، حان وقت الحديث عن
    .الأجزاء الديناميكية للعبارات الثابتة
  15. في تطبيقاتنا، يكون جزء التنبؤ
    هو الجزء الثابت لقيامنا
  16. ،بتعريفه في تخطيط XML
    ،بصرف النظر عن الاتجاه أو حجم الجهاز
  17. فنحن نعلم أننا سنحتاج إلى
    .جزء التنبؤ في النشاط الرئيسي
  18. ومن ناحية أخرى، نعلن
    ،تخصيص حاوية فقط لتجزئة detail
  19. .وليس للجزء الفعلي
  20. يتم تهيئته بوسيطات
    مختلفة وفي كل مرة كجزء
  21. ديناميكي، لذلك يفضل
    إنشاء وإضافة هذا الجزء بشكل ديناميكي
  22. إلى عملية التجزئة
    .باستخدام تعليمات Java البرمجية الخاصة بالنشاط الأساسي
  23. بهذه الطريقة، يمكن لإدارة التجزئة
    تتبع وسيطات التهيئة تلك
  24. وإعادتها إلينا
    .بعد استدارة الجهاز
  25. بعد ذلك نحتاج إلى تحديث
    تخطيطات واجهة المستخدم ذات الجزء الواحد
  26. بحيث تتسق
    .مع الحالة المكونة من جزأين
  27. ففي الملف الرئيسي للنشاط
    الخاص بمجلد التخطيط الأساسي، يُستخدم هذا كتخطيط إطار
  28. سوف نعلن عنه
    .كجزء تنبؤ
  29. ،بهذه الطريقة سيتطابق مع واجهة المستخدم المكونة من جزأين
  30. حيث يتم الإعلان عنه أيضًا
    .كجزء في XML
  31. وبهذه الطريقة، لن يواجه النشاط الرئيسي
    أي مشكلة في إضافة
  32. .جزء تنبؤ بشكل ديناميكي
  33. ،في النشاط الأساسي
    .أسلوب العرض create
  34. حيث أن الجزء موجود بالفعل
    داخل هذا التخطيط، فيمكننا إزالة هذا فقط
  35. .حتى لا نضيفه مرة أخرى بشكل ديناميكي
  36. بالمثل، نقوم بتعديل تخطيط
    ،تفاصيل النشاط في مجلد التخطيط الأساسي
  37. كما نقوم بتغيير معرف تخطيط الإطار
    .ليكون حاوية لتفاصيل الطقس
  38. وبذلك يطابق معرف طريقة عرض
    .الحاوية في حالة واجهة المستخدم المكونة من جزأين
  39. النمط المتبع هنا هو إضافة
    جزء detail بصفة دائمة
  40. إلى حاوية تسمى
    ،weather_detail_container
  41. .في حالة واجهة المستخدم المكونة من جزأين ومن جزء
  42. نظراً لقيامنا بتغيير اسم
    ،الحاوية
  43. يجب علينا أيضا تحديث
    .نشاط detail
  44. .هذا يسُتخدم فقط في وضع الجزء الواحد
  45. نقوم هنا بتغيير
    .اسم الحاوية
  46. في وضع الجزء الواحد، سيقوم
    النشاط المفصل بإضافة جزء detail
  47. .بشكل ديناميكي إلى هذه الحاوية
  48. بعد قيامنا بتعديل التخطيط، يجب علينا تحديث
    النشاط الرئيسي
  49. .لكي نضيف جزء detail بشكل ديناميكي
  50. ،وفي أسلوب on create للنشاط الرئيسي
    نتحقق من وجود حاوية detail
  51. الطقس داخل التخطيط
    .لمعرفة ما إذا كانت واجهة المستخدم مكونة من جزأين أم لا
  52. ثم نتعقب هذه المعلومات
    .من خلال قاعدة منطقية تسمى mTwoPane
  53. ،علينا أن نتذكر أننا بدأنا بالحرف m
    .لكونه متغيرًا خاصًا بالعضو
  54. ،في هذه الحالة
    .يجب أن تكون القاعدة المنطقية صحيحة
  55. فلنذهب
    وننشئ جزء تفاصيل جديد
  56. .ثم نضيفه إلى weather_detail_container
  57. ثم نثبت التغيير باستخدام
    عملية التجزئة
  58. .التي سبق وشرحها لنا Rado
  59. في حالة عدم وجود حاوية التفاصيل
    في التخطيط
  60. فهذا يدل على أن القاعدة المنطقية خطأ
    .مما يعني أن هذه واجهة مستخدم من جزء واحد خاصة بالهواتف
  61. في هذه الحالة، سيتولى نشاط detail
    .توضيح جزء detail
  62. نلاحظ في حالة الواجهة المكونة من جزأين
    أهمية التحقق من فراغ حزمة الحالة الفورية المحفوظة
  63. .
  64. إذا لم تكن حزمة الحالة الفورية
    المحفوظة فارغة
  65. ،فلا ننشئ واحدة جديدة
    .والسبب في ذلك كما يلي
  66. .إذا فرضنا أننا نريد إدارة الجهاز
  67. قبل تدمير
  68. النشاط والأجزاء، فإننا
    .نحفظ المعلومات في حزم حالة الحفظ
  69. ،ثم بعد تغيير الاتجاه
    يستعيد النظام النشاط
  70. والأجزاء
    ،عن طريق تمرير نفس الحزمة
  71. بحيث يمكن إعادة إنشائهم
    .بواسطة الحالة ذاتها
  72. هذا يعني أنه في حالة وجود الحزمة
    يجب ترك النظام يتولى
  73. استعادة جزء detail
    .ويمكننا تخطي هذه التعليمات البرمجية
  74. عند إضافة جزء تفاصيل
    .بشكل ديناميكي
  75. اجعلوه يعرض البيانات النائبة
    .بغرض الاختبار فقط
  76. ،لاحقًا، سنتعمق في المنطق الأيمن
    لنجعله يعرض
  77. المعلومات المناسبة
    .للتاريخ المحدد على الجانب الأيسر
  78. عدلوا جزء detail
  79. بحيث لا يتوقع احتواء الهدف الوارد
    .على بيانات URI
  80. ،وفي هذه الحالة
    سيتراجع جزء detail
  81. إلى بيانات نائبة
    .موجودة لدينا في ملفات XML
  82. قد يرجع السبب في فراغ الهدف
    إلى وجود جزء detail
  83. .حاليًا في النشاط الرئيسي
  84. لا يتم بدء النشاط الرئيسي
    مع معرف URI
  85. لتاريخ واحد فقط
    .كالذي يبدأ به النشاط عادة
  86. هكذا سيبدو التطبيق
  87. بمجرد الانتهاء من التغييرات
    .المرتبطة بالأطر السلكية
  88. يرجع السبب في عدم
    ظهور التعليمات البرمجية هنا
  89. إلى عدم قيامنا بتضمين
    .التعليمات البرمجية في التخطيط
  90. ولكن بمجرد ملء هذه
    البيانات ديناميكيًا في المقطع اللاحق
  91. .فستظهر التعليمات البرمجية مجددًا