تتيح القوائم للمستخدمين اختيار عنصر من مجموعة خيارات بسهولة على أجهزة Wear OS.
تتضمّن "مكتبة واجهة المستخدم للأجهزة القابلة للارتداء" الفئة
WearableRecyclerView، وهي عملية تنفيذ للفئة
RecyclerView
لإنشاء قوائم محسّنة للأجهزة القابلة للارتداء. يمكنك استخدام هذه الواجهة في تطبيقك المخصّص لجهاز قابل للارتداء من خلال إنشاء حاوية جديدة.WearableRecyclerView
استخدِم WearableRecyclerView لقائمة طويلة من العناصر البسيطة، مثل مشغّل التطبيقات أو قائمة جهات الاتصال. قد يتضمّن كل عنصر
سلسلة قصيرة ورمزًا مرتبطًا. بدلاً من ذلك، قد يتضمّن كل عنصر سلسلة
أو رمزًا فقط.
ملاحظة: تجنَّب التنسيقات المعقّدة. يجب أن يحتاج المستخدمون إلى إلقاء نظرة سريعة على أحد العناصر لـ فهم ماهيته، خاصةً مع حجم الشاشة المحدود للأجهزة القابلة للارتداء.
من خلال توسيع الفئة الحالية RecyclerView، تعرض واجهات برمجة التطبيقات WearableRecyclerView
قائمة بعناصر يمكن الانتقال بينها عموديًا في قائمة مستقيمة تلقائيًا. يمكنك أيضًا استخدام
واجهات برمجة التطبيقات WearableRecyclerView للموافقة على استخدام تنسيق منحني و
إيماءة التمرير الدائرية
في تطبيقاتك القابلة للارتداء.
الشكل 1: عرض القائمة التلقائي على Wear OS
يوضّح لك هذا الدليل كيفية استخدام الفئة WearableRecyclerView لإنشاء
قوائم في تطبيقات Wear OS، وكيفية الموافقة على استخدام تنسيق منحني
لعناصرك القابلة للانتقال، وكيفية تخصيص مظهر العناصر الفرعية أثناء التمرير.
إضافة WearableRecyclerView إلى نشاط باستخدام XML
يضيف التنسيق التالي WearableRecyclerView إلى نشاط:
<androidx.wear.widget.WearableRecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/recycler_launcher_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" />
يوضّح المثال التالي WearableRecyclerView
المطبّقة على نشاط:
Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } ... }
Java
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } ... }
إنشاء تنسيق منحني
لإنشاء تنسيق منحني للعناصر القابلة للانتقال في تطبيقك المخصّص لجهاز قابل للارتداء، اتّبِع الخطوات التالية:
-
استخدِم
WearableRecyclerViewكحاوية رئيسية في تنسيق XML ذي الصلة. -
اضبط طريقة
setEdgeItemsCenteringEnabled(boolean)علىtrue. يؤدي ذلك إلى توسيط العنصرَين الأول والأخير في القائمة عموديًا على الشاشة. -
استخدِم الطريقة
WearableRecyclerView.setLayoutManager()لضبط تنسيق العناصر على الشاشة.
Kotlin
wearableRecyclerView.apply { // To align the edge children (first and last) with the center of the screen. isEdgeItemsCenteringEnabled = true ... layoutManager = WearableLinearLayoutManager(this@MainActivity) }
Java
// To align the edge children (first and last) with the center of the screen. wearableRecyclerView.setEdgeItemsCenteringEnabled(true); ... wearableRecyclerView.setLayoutManager( new WearableLinearLayoutManager(this));
إذا كان تطبيقك يتضمّن متطلبات محدّدة لتخصيص مظهر العناصر الفرعية أثناء التمرير، مثلاً
تغيير حجم الرموز والنص أثناء تمرير العناصر بعيدًا عن المنتصف، وسِّع
الفئة
WearableLinearLayoutManager.LayoutCallback وألغِ الطريقة
onLayoutFinished.
تعرض مقتطفات الرموز التالية مثالاً على تخصيص تمرير العناصر لتغيير حجمها بشكل أكبر كلما ابتعدت عن المنتصف من خلال توسيع الفئة
WearableLinearLayoutManager.LayoutCallback
Kotlin
/** How much icons should scale, at most. */ private const val MAX_ICON_PROGRESS = 0.65f class CustomScrollingLayoutCallback : WearableLinearLayoutManager.LayoutCallback() { private var progressToCenter: Float = 0f override fun onLayoutFinished(child: View, parent: RecyclerView) { child.apply { // Figure out % progress from top to bottom. val centerOffset = height.toFloat() / 2.0f / parent.height.toFloat() val yRelativeToCenterOffset = y / parent.height + centerOffset // Normalize for center. progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset) // Adjust to the maximum scale. progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS) scaleX = 1 - progressToCenter scaleY = 1 - progressToCenter } } }
Java
public class CustomScrollingLayoutCallback extends WearableLinearLayoutManager.LayoutCallback { /** How much icons should scale, at most. */ private static final float MAX_ICON_PROGRESS = 0.65f; private float progressToCenter; @Override public void onLayoutFinished(View child, RecyclerView parent) { // Figure out % progress from top to bottom. float centerOffset = ((float) child.getHeight() / 2.0f) / (float) parent.getHeight(); float yRelativeToCenterOffset = (child.getY() / parent.getHeight()) + centerOffset; // Normalize for center. progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset); // Adjust to the maximum scale. progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS); child.setScaleX(1 - progressToCenter); child.setScaleY(1 - progressToCenter); } }
Kotlin
wearableRecyclerView.layoutManager = WearableLinearLayoutManager(this, CustomScrollingLayoutCallback())
Java
CustomScrollingLayoutCallback customScrollingLayoutCallback = new CustomScrollingLayoutCallback(); wearableRecyclerView.setLayoutManager( new WearableLinearLayoutManager(this, customScrollingLayoutCallback));