Widżet lupy dostępny na Androidzie 9 (poziom interfejsu API 28) i nowszych
wirtualne lupę, które wyświetla powiększoną kopię obrazu View
przez
panelu nakładki, który jest reprezentowany przez obiektyw. Ta funkcja ulepsza wstawianie tekstu
oraz wygodę użytkowników. Po zastosowaniu lupy do tekstu użytkownik może
precyzyjnie ustawić kursor lub uchwyty wyboru, wyświetlając powiększony
w panelu, który podąża za palcem użytkownika.
Rysunek 1 pokazuje, jak lupa ułatwia zaznaczanie tekstu. Interfejsy API powiększania nie są powiązane z tekstem, a widżetu można używać w różnych sytuacjach, takich jak np. czytanie małego tekstu lub powiększanie niewidocznych nazw miejsc na mapach.
![Obraz pokazujący, jak wyświetla się lupa po chwyceniu prawego uchwytu wyboru](https://developer.android.com/static/develop/ui/views/text-and-emoji/images/magnifier-1.png?hl=pl)
Lupa jest już zintegrowana z widżetami platform, takimi jak TextView
,
EditText
i WebView
. Zapewnia spójne manipulowanie tekstem w różnych aplikacjach.
Widżet ma prosty interfejs API i można go używać do powiększania dowolnych View
w zależności od kontekstu aplikacji.
Wykorzystanie interfejsu API
Możesz automatycznie używać lupy w dowolnym widoku w ten sposób:
Kotlin
val view: View = findViewById(R.id.view) val magnifier = Magnifier.Builder(view).build() magnifier.show(view.width / 2.0f, view.height / 2.0f)
Java
View view = findViewById(R.id.view); Magnifier magnifier = new Magnifier.Builder(view).build(); magnifier.show(view.getWidth() / 2, view.getHeight() / 2);
Zakładając, że hierarchia widoków ma pierwszy układ, lupa wyświetla się na ekranu i zawiera region wyśrodkowany na określonych współrzędnych w widoku. Okienko pojawi się nad punktem środkowym kopiowanej treści. lupa działa bezterminowo, dopóki użytkownik jej nie zamknie.
Fragment kodu poniżej pokazuje, jak zmienić tło powiększonego obrazu widok:
Kotlin
view.setBackgroundColor(...)
Java
view.setBackgroundColor(...);
Zakładając, że kolor tła jest widoczny w lupie,
jest nieaktualny, ponieważ część widoku ze starym tłem jest nadal
i wyświetlacze. Aby odświeżyć treści, użyj
update()
w ten sposób:
Kotlin
view.post { magnifier.update() }
Java
view.post(magnifier::update);
Po zakończeniu zamknij lupę, wywołując
Metoda dismiss()
:
Kotlin
magnifier.dismiss()
Java
magnifier.dismiss();
Powiększanie interakcji użytkownika
Typowym zastosowaniem lupy jest umożliwienie użytkownikowi powiększenia obszaru widoku przez tak jak na ilustracji 2.
ViewGroup
, który zawiera obiekt „ImageView” po lewej stronie
i TextView
po prawej stronie.Możesz to zrobić, aktualizując lupę zgodnie ze zdarzeniami dotknięcia w następujący sposób:
Kotlin
imageView.setOnTouchListener { v, event -> when (event.actionMasked) { MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE -> { val viewPosition = IntArray(2) v.getLocationOnScreen(viewPosition) magnifier.show(event.rawX - viewPosition[0], event.rawY - viewPosition[1]) } MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_UP -> { magnifier.dismiss() } } true }
Java
imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: // Fall through. case MotionEvent.ACTION_MOVE: { final int[] viewPosition = new int[2]; v.getLocationOnScreen(viewPosition); magnifier.show(event.getRawX() - viewPosition[0], event.getRawY() - viewPosition[1]); break; } case MotionEvent.ACTION_CANCEL: // Fall through. case MotionEvent.ACTION_UP: { magnifier.dismiss(); } } return true; } });
Dodatkowe uwagi na temat powiększania tekstu
W przypadku widżetów tekstowych platformy ważne jest, aby zrozumieć specyfikę lupy zachowaniach i konsekwentnym włączaniu lupy w niestandardowym widoku tekstowym na całej platformie Androida. Weź pod uwagę następujące kwestie:
- Lupa uruchamia się natychmiast, gdy użytkownik kliknie wstawienie lub uchwyt wyboru.
- Lupa zawsze płynnie podąża za palcem użytkownika poziomo, w pionie, na środku bieżącej linii tekstowej.
- Przy poruszaniu w poziomie lupa porusza się tylko między do prawej granicy bieżącej linii. Poza tym, gdy użytkownik dotknie tego ekranu, tych granic i odległości poziomej między punktem styczności z klientem jest większa niż połowa pierwotnej szerokości lupy, lupa zostanie zamknięta, a kursor przestaje być widoczny lupa.
- Lupa nigdy nie uruchamia się, gdy czcionka tekstu jest zbyt duża. Tekst to uznaje się za zbyt dużą, gdy różnica między zjawiskiem kroju czcionki a źródłem jest większy niż wysokość treści, która mieści się w lupie. Aktywowanie lupy w tym przypadku nie dodaje wartości.