يتطلب التنسيق أحيانًا طرق عرض معقدة نادرًا ما يتم استخدامها. سواء وهي تفاصيل العنصر أو مؤشرات التقدم أو رسائل التراجع، فيمكنك تقليل استخدامك للذاكرة وتسريع العرض من خلال تحميل طرق العرض فقط عندما احتاجت.
يمكنك تأجيل تحميل الموارد عندما يكون لديك طرق عرض معقدة
احتياجاتك في المستقبل من خلال تحديد
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 هو
تخفي التصميم الثقيلعندما تريد تحميل التنسيق الذي حدّدته السمة 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 عن طريق العود.