50 : اندرويد : اعادة استخدام التنسيقات عبر استخدام include tag

facebook-group

 

ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development

اندرويد :   اعادة استخدام التنسيقات عبر استخدام <include/>

السلام عليكم ورحمة الله وبركاته

سوف تتعلم ضمن هذا الدرس مايلي :

  1. انشاء تنسيق قابل لاعادة الاستخدام
  2. استخدام تاغ <include>
  3. استخدام تاغ <merge>

يجب ان تطلع ايضا على

بالرغم من ان اندرويد يزودنا بمجموعة متنوعة من ال widgets التي تحوي على مجموعة كبيرة من العناصر تفاعلية الصغيرة والقابلة لاعادة الاستخدام, ولكنك قد تحتاج إلى اعادة استخدام مكونات اكبر والتي تتطلب تنسيقا خاصا.

لكي تستطيع ان تعيد استخدام تنسيقات كاملة بشكل فعالي, بامكانك استخدام كل من تاغي <include/>  و <merge/> وذلك بهدف تضمين تنسيق ضمن التنسيق الحالي.

إن اعادة استخدام التنسيقات عملية فعالة جدا , وتمكنك من انشاء تنسيقات معقدة وقابلة لاعادة الاستخدام.

على سبيل المثال, لوحة panel تحوي على زر (yes/no) , او شرط تقدم progress bar مع توصيف نصي.

هذا يعني ايضا بانه أي عنصر من عناصر تطبيقك سيكون متعارف عليه عبر التنسيقات المتعددة , ويمكن استخلاصه ومعالجته بشكل منفصل, ومن ثم تضمينه في كل تنسيق.

اذن , بما اك تستطيع انشاء عناصر واجهة مستخدم مستقلة عبر كتابة views بحسب رغبتك, فإنه بإمكانك بشكل اسهل ان تقوم باعادة استخدام ملف التنسيقات.

إنشاء تنسيق قابل لاعادة الاستخدام Re-usable Layout

في حال كنت تعرف مسبقا التنسيق الذي ترغب باعادة استخدامه, انشأ ملف xml جديد وعرف التنسيق.

على سبيل المثال, فيما يلي تنسيق من   G-Kenya codelab, يقوم هذا التنسيق بتعريف شريط عنوان title bar  لكي يتم تضمينه ضمن كل فعالية (titlebar.xml):

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width=”match_parent”
    android:layout_height="wrap_content"
    android:background="@color/titlebar_bg">

    <ImageView android:layout_width="wrap_content"
               android:layout_height="wrap_content" 
               android:src="@drawable/gafricalogo" />
</FrameLayout>

استخدام تاغ <include/>

ضمن التنسيق الذي ترغب في ان تضيف إليه العنصر القابل لاعادة الاستخدام, اضف تاغل <include/>

على سبيل المثال, فيما يلي تنسيق من  G-Kenya codelab يقوم بتضمين شريط العنوان title bare من التنسيق اعلاه:

فيما يلي ملف التنسيق:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”
    android:background="@color/app_bg"
    android:gravity="center_horizontal">

    <include layout="@layout/titlebar"/>

    <TextView android:layout_width=”match_parent”
              android:layout_height="wrap_content"
              android:text="@string/hello"
              android:padding="10dp" />

    ...

</LinearLayout>

بإمكانك ايضا ان تقوم ب Override  لكل المعاملات (أي واحدة من الخصائص التي من النمط android:layout_*) للتنسيق المضمن عبر تحديد هذه الخصائص ضمن تاغ <include/>. على سبيل المثال:

<include android:id=”@+id/news_title”
         android:layout_width=”match_parent”
         android:layout_height=”match_parent”
         layout=”@layout/title”/>

على كل الاحوال , في حال رغبت بالقيام ب override لخاصية من خصائص ال layout ضمن تاغ <include> , فإنه يتوجب عليك ان تقوم ب override  لكل من android:layout_height  و android:layout_width  لكي تتاثر بقية الخصائص بشكل فعلي.

استخدام تاغ <merge>

   تساعدك تاغ <merge/>  لازالة ال view groups  المتكررة ضمن هرمية ال views وذلك عندما تضمن احد التنسيقات ضمن تنسيق اخر.

مثلا اذا كان لدينا تنسيق ما محاط ب linearlayout ورغبنا بتضمينه ضمن تنسيق اخر محاط ايضا ب linearlayout عندها فإن تكرار التنسيق الخطي لن يفيدنا بشيء سوى تبطيء الاداء.

لذلك نستخدم <merge> لنتجاوز هذه المشكلة, حيث نضع تاغ <merge> عنصر root ضمن التنسيق القابل لاعادة الاستخدام , وذلك بدل من التنسيق الخطي linearlayout, كما يلي:

<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:text="@string/add"/>

    <Button
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:text="@string/delete"/>

</merge>

الآن , وعند تضمين هذا التنسيق ضمن التنسيق الاساسي ( عبر استخدام تاغ <include/>), فإن النظام يتجاهل عنصر <merge> ويضع العناصر الموجودة ضمنه (الازرار) ضمن التنسيق الاساسي .

وبهذه المعلومات المفيدة ننهي حلقة اليوم

وإلى لقاء في حلقة قريبة , وإلى ذلك الحين استودعكم الله والسلام عليكم ورحمة الله وبركاته.

Advertisements

, , , , , , , , ,

  1. أضف تعليق

اترك رد

Please log in using one of these methods to post your comment:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: