Listy umożliwiają użytkownikom łatwe wybieranie elementów z zestawu na urządzeniach z Wear OS.
Biblioteka UI urządzeń do noszenia zawiera:
WearableRecyclerView
, która jest
RecyclerView
wdrożenia do tworzenia list zoptymalizowanych pod kątem urządzeń do noszenia. Możesz użyć tej
w aplikacji do noszenia, tworząc nowy kontener WearableRecyclerView
.
Użyj operatora WearableRecyclerView
jako
długa lista prostych elementów, takich jak program uruchamiający aplikacje czy lista kontaktów. Każdy element może
z krótkim ciągiem znaków i powiązaną ikoną. Każdy element może też mieć tylko ciąg znaków
lub ikonę.
Uwaga: unikaj złożonych układów. Użytkownicy powinni tylko spojrzeć na produkt, aby zwłaszcza w przypadku urządzeń do noszenia, ograniczony rozmiar ekranu.
Rozszerzając istniejącą klasę RecyclerView
, WearableRecyclerView
Interfejsy API domyślnie wyświetlają przewijaną w pionie listę elementów w formie prostej. Możesz też użyć
interfejsy API WearableRecyclerView
, aby wyrazić zgodę na układ zakrzywiony;
kołowy gest przewijania
w aplikacjach do noszenia.
Z tego przewodnika dowiesz się, jak używać zajęć WearableRecyclerView
do tworzenia
listy w aplikacjach na Wear OS, jak włączyć układ zakrzywiony
elementów przewijanych oraz jak dostosować wygląd
dzieci podczas przewijania.
Dodaj WearableRecyclerView do aktywności za pomocą pliku XML
Ten układ dodaje element WearableRecyclerView
do aktywności:
<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" />
Poniższy przykład pokazuje WearableRecyclerView
zastosowane do aktywności:
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); } ... }
Tworzenie układu krzywego
Aby utworzyć układ zakrzywiony dla elementów przewijanych w aplikacji do noszenia, wykonaj te czynności:
-
Użyj formatu
WearableRecyclerView
jako główny kontener w odpowiednim układzie XML. -
Ustaw parametr
setEdgeItemsCenteringEnabled(boolean)
dotrue
. Ten wyśrodkowuje pierwszy i ostatni element na liście na ekranie w pionie. -
Użyj metody
WearableRecyclerView.setLayoutManager()
, aby ustawić układ elementy na ekranie.
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));
Jeśli Twoja aplikacja ma określone wymagania dotyczące dostosowywania wyglądu dzieci podczas przewijania, na przykład
skalowanie ikon i tekstu, gdy elementy przewijają się od środka – rozszerz
WearableLinearLayoutManager.LayoutCallback
i zastąp
.
onLayoutFinished
.
Te fragmenty kodu pokazują przykład dostosowywania przewijania elementów do rozmiaru
dalej od środka, wydłużając
Zajęcia 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));