Interfejs Ink API jest modułowy, więc możesz używać tylko tego, czego potrzebujesz.
Pociągnięcia
Moduł Strokes stanowi podstawę biblioteki Ink, oferując podstawowy interfejs API i zawierając podstawowe typy danych do interakcji z biblioteką. Najważniejsze typy danych w tym module:
- StrokeInputBatch: reprezentuje serię danych wejściowych wskaźnika, obejmujących pozycję, sygnaturę czasową i opcjonalnie nacisk, pochylenie oraz orientację. Tych danych można używać –- Strokelub- InProgressStrokeklas i jest typem, który dostarcza dane wejściowe dla pisma odręcznego do biblioteki rozpoznawania.
- Stroke: wartość stała ostatecznego ruchu o stałej geometrii. Obrys składa się z- ImmutableStrokeInputBatch(punktów wejścia),- Brush(stylizacji) i- PartitionedMesh(kształtu geometrycznego). Ciągi można przechowywać, edytować i renderować w obrębie Twojej aplikacji.
- InProgressStroke: Zmiennego odpowiednika funkcji- Stroke– zaprojektowane z myślą przyrostowa obsługa danych wejściowych i renderowanie w czasie rzeczywistym podczas rysowania proces tworzenia konta. Chociaż często jest używany pośrednio za pomocą- InProgressStrokesView,- InProgressStrokemożna go wykorzystywać bezpośrednio do zaawansowanej personalizacji.
Geometria
Moduł Geometria udostępnia pakiet podstawowych elementów geometrycznych dla zarówno podstawowych, jak i złożonych kształtów wraz z operacjami wykrywania skrzyżowań i przekształceń. Te podstawowe elementy płynnie integrują się z metodami Ink, pozwalając takie jak gumki z pełnym kreską i narzędzia do zaznaczania.
Zajęcia takie jak Box i
Vec głównie ułatwiają
operacje geometryczne,
PartitionedMesh może
a także dane związane z renderowaniem.
Pędzel
Moduł Pędzel
działa jako deklaratywna konfiguracja tworzenia i renderowania kreski,
działają podobnie do czcionki tekstu. O
Brush obiekt ma
tych właściwości:
- Kolor: może być jednolitym kolorem lub podstawą dla efektów i tekstur nałożonych na siebie.
- Rozmiar: może być stały lub służyć jako podstawa do dynamicznych dostosowań rozmiaru.
- Rodzina: podobnie jak w przypadku czcionek tekstowych, rodzina określa ogólny styl obrysu.
- Epsilon: określa poziom szczegółowości geometrii wektorowej obrysu, reprezentując najmniejszą jednostkę wizualnej różnicy.
Właściwość epsilon odgrywa kluczową rolę w określaniu dokładności systemu współrzędnych. Więcej wskazówek
znajdziesz w sekcji Interfejsy Brush API, aby dowiedzieć się,
aby wybrać odpowiednią wartość ypsilon.
BrushFamily pełni funkcję
wydajną konfigurację do tworzenia ekspresyjnych pociągnięć bez zagłębiania się w
ze złożoną geometrią czy kodem renderowania. Biblioteka zawiera zestaw wstępnie zdefiniowanych
StockBrushes, w tym
pióro, zakreślacz i marker z czułością na nacisk.
Tworzenie
Authoring
pozwala programistom rejestrować dotykowe dane wejściowe użytkownika i renderować je jako
w czasie rzeczywistym i z małym opóźnieniem. Jest to możliwe dzięki
InProgressStrokesView zajęcia,
który przetwarza zdarzenia ruchu i wizualizuje pociągnięcia w miarę ich rysowania.
Po zakończeniu kreski moduł powiadamia aplikację kliencką za pomocą
onStrokesFinished()
wywołanie zwrotne
InProgressStrokesFinishedListener
Wywołanie zwrotne umożliwia aplikacji pobranie
i zakończenia danych kreski do renderowania lub zapisywania.
Renderowanie
Moduł renderowania upraszcza proces rysowania pociągnięcia atramentu na urządzeniu z Androidem Canvas. Moduł ten zapewnia CanvasStrokeRenderer w przypadku kompozycji oraz ViewStrokeRenderer w przypadku układów opartych na widoku. Oba te tryby optymalizują wydajność renderowania i zapewniają wysoką jakość wizualizacji, w tym wygładzanie krawędzi.
Aby renderować ścieżki na płótnie, pobierz instancję CanvasStrokeRenderer za pomocą metody create(). Następnie użyj metody draw(), aby renderować na płótnie gotowe lub w trakcie tworzenia pociągnięcia.
Obszar roboczy można przekształcać (przesuwać, powiększać lub obracać) w ramach rysowania
aby kreska wygląda jak najlepiej,
przekształcenie zastosowane do obszaru roboczego musi również zostać przekazane do
CanvasStrokeRenderer#draw()
Aby uniknąć konieczności śledzenia ich oddzielnie, użyj funkcji
ViewStrokeRenderer
.
