يتطلب التنسيق أحيانًا طرق عرض معقدة نادرًا ما يتم استخدامها. سواء وهي تفاصيل العنصر أو مؤشرات التقدم أو رسائل التراجع، فيمكنك تقليل استخدامك للذاكرة وتسريع العرض من خلال تحميل طرق العرض فقط عندما احتاجت.
يمكنك تأجيل تحميل الموارد عندما يكون لديك طرق عرض معقدة
احتياجاتك في المستقبل من خلال تحديد
ViewStub
مقابل
طرق العرض المعقدة ونادرًا ما يتم استخدامها.
تعريف ViewStub
ViewStub
عبارة عن طريقة عرض خفيفة بدون أي أبعاد أخرى.
لرسم أي شيء أو المشاركة في التخطيط. ولهذا السبب، فهي تتطلّب موارد قليلة
تضخيمها وتركها في التسلسل الهرمي للعرض. يشمل كل ViewStub
السمة android:layout
لتحديد التنسيق الذي سيتم تضخيمه.
افترض أن لديك تخطيطًا تريد تحميله لاحقًا في رحلة المستخدم الخاصة التطبيق:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:src="@drawable/logo" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout>
يمكنك تأجيل التحميل باستخدام ViewStub
التالية. لإجراء
تعرض أو تحمّل أي شيء، يجب أن تجعله يظهر التخطيط المُحيل:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent"> <ViewStub android:id="@+id/stub_import" android:inflatedId="@+id/panel_import" android:layout="@layout/heavy_layout_we_want_to_postpone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" /> </FrameLayout>
تحميل تنسيق ViewStub
تنتج مقتطفات التعليمات البرمجية في القسم السابق شيئًا مثل 1:
عندما تريد تحميل التنسيق الذي حدّدته السمة ViewStub
،
يمكنك إما ضبطه على الوضع المرئي من خلال طلب
setVisibility(View.VISIBLE)
أو الاتصال
inflate()
يحاكي مقتطف الرمز التالي عملية تحميل مؤجلة. يتم تحميل الشاشة
المعتاد في Activity
وonCreate()
، عندها سيتم
التخطيط heavy_layout_we_want_to_postpone
:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_old_xml) Handler(Looper.getMainLooper()) .postDelayed({ findViewById<View>(R.id.stub_import).visibility = View.VISIBLE // Or val importPanel: View = findViewById<ViewStub>(R.id.stub_import).inflate() }, 2000) }
Java
@Override void onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_old_xml); Handler(Looper.getMainLooper()) .postDelayed({ findViewById<View>(R.id.stub_import).visibility = View.VISIBLE // Or val importPanel: View = findViewById<ViewStub>(R.id.stub_import).inflate() }, 2000); }
بعد ظهور العنصر ViewStub
أو تكبيره، يتوقف عن الظهور.
من التسلسل الهرمي طرق العرض. يتم استبداله بالتخطيط المضخّم، ومعرّف
تحدِّد السمة android:inflatedId
طريقة العرض الجذري لهذا التنسيق.
الخاصة بـ ViewStub
. رقم التعريف android:id
المحدّد
تكون قيمة ViewStub
صالحة فقط حتى ViewStub
التخطيط مرئي أو متضخم.
لمزيد من المعلومات حول هذا الموضوع، يُرجى الاطّلاع على مشاركة المدونة. أدوات تحسين الأداء من Google عن طريق العود.