atrament

  
Inspiruj do tworzenia najlepszych w swojej klasie aplikacji do obsługi pióra. Obniż próg wejścia dla deweloperów, aby mogli tworzyć piękne i wydajne aplikacje do pisania odręcznego. Obsługuje pisanie odręczne na Androidzie i w JVM po stronie serwera (obecnie obsługiwane w Linuksie na platformie x86_64).
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
23 września 2026 r. 1.0.0 - - 1.1.0-alpha09

Deklarowanie zależności

Aby dodać zależność od Ink, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Dynamiczny

dependencies {
  
    implementation "androidx.ink:ink-authoring:1.1.0-alpha09"
    implementation "androidx.ink:ink-authoring-compose:1.1.0-alpha09"
    implementation "androidx.ink:ink-brush:1.1.0-alpha09"
    implementation "androidx.ink:ink-brush-compose:1.1.0-alpha09"
    implementation "androidx.ink:ink-geometry:1.1.0-alpha09"
    implementation "androidx.ink:ink-geometry-compose:1.1.0-alpha09"
    implementation "androidx.ink:ink-nativeloader:1.1.0-alpha09"
    implementation "androidx.ink:ink-rendering:1.1.0-alpha09"
    implementation "androidx.ink:ink-storage:1.1.0-alpha09"
    implementation "androidx.ink:ink-strokes:1.1.0-alpha09"
    
}

Kotlin

dependencies {


    implementation("androidx.ink:ink-authoring:1.1.0-alpha09")
    implementation("androidx.ink:ink-authoring-compose:1.1.0-alpha09")
    implementation("androidx.ink:ink-brush:1.1.0-alpha09")
    implementation("androidx.ink:ink-brush-compose:1.1.0-alpha09")
    implementation("androidx.ink:ink-geometry:1.1.0-alpha09")
    implementation("androidx.ink:ink-geometry-compose:1.1.0-alpha09")
    implementation("androidx.ink:ink-nativeloader:1.1.0-alpha09")
    implementation("androidx.ink:ink-rendering:1.1.0-alpha09")
    implementation("androidx.ink:ink-storage:1.1.0-alpha09")
    implementation("androidx.ink:ink-strokes:1.1.0-alpha09")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.

Tworzenie nowego problemu

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Ink w wersji 1.1

Wersja 1.1.0-alpha09

23 września 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha09 Wersja 1.1.0-alpha09 zawiera te zmiany.

Zmiany w interfejsie API

  • Zmiana przesunięcia koloru pędzla na przestrzeń kolorów Oklab, która lepiej zachowuje postrzeganą jasność podczas zmiany odcienia. Zmieniliśmy nazwy interfejsów API SATURATION i LUMINOSITY na CHROMA i LIGHTNESS. (I0ed42)

Poprawki błędów

  • Zależność androidx.lifecycle:lifecycle-runtime została zaktualizowana do wersji 2.10.0. Ta wersja jest wymagana, aby można było uruchamiać kontrole lint w pakiecie czasu działania cyklu życia w przypadku wtyczki Androida do obsługi Gradle w wersji 9.5.0-alpha04 lub nowszej. (I99bfd, b/556807521)

Wersja 1.1.0-alpha08

9 września 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha08 Wersja 1.1.0-alpha08 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaj obsługę renderowania w KMP iOS za pomocą MetalRenderer w ramach adnotacji dotyczącej wyrażenia zgody ExperimentalInkCrossPlatformRenderingApi na podstawie wspólnych interfejsów API KMP dla głównej funkcjonalności.
  • Zmień nazwę Target.TEXTURE_ANIMATION_PROGRESS_OFFSET na Target.PAINT_ANIMATION_PROGRESS_OFFSET. (I8809f)
  • Dodaj przeciążenia ImmutableAffineTransform.translate(float x, float, y) i MutableAffineTransform populateFromTranslation(float x, float y) (I8809f)
  • Zmiana nazwy usługi DampingNode z dampingSource na dampOver (Id3178)
  • Zmiana nazwy usługi DampingNode z dampingGap na strength (I69432)
  • Podczas definiowania elementu EasingFunction.CubicBezier używaj typu Vec zamiast elementu Float (I69432)
  • Dodanie adnotacji WorkerThread do funkcji gumki do edycji siatki Stroke.subtract i Stroke.split (I69432)

Poprawki błędów

  • Sprawdzanie, czy próbki Brush są zgodne z KMP (I77125)

Wersja 1.1.0-alpha07

12 sierpnia 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha07 Wersja 1.1.0-alpha07 zawiera te zmiany.

Zmiany w interfejsie API

  • Naprawiono regresję wydajności wpływającą na pędzle z gęstymi cząsteczkami, zaktualizowano stałe Brush.Version na podstawie opinii o interfejsie API (I87f0f).

Wersja 1.1.0-alpha06

29 lipca 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha06 Wersja 1.1.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy do interfejsu API metody calculateMinimumRequiredVersion dla podtypów BrushFamily. (I338c9)
  • Udostępnianie pól komponentu AffineTransform (Ic2ec3)
  • Naprawiono wyciek pamięci w InProgressStrokesView, poprawiono artefakty wizualne eksperymentalnej częściowej gumki, ulepszono reprezentację protobuf dla niestandardowych warstw tekstury pędzla (I6ff86).
  • Dodanie konstruktora inicjującego dla MutableAffineTransform (aby pasował do ImmutableAffineTransform) (I96ec7)
  • Dodaj InProgressStroke.clear (Ie0032)
  • Dodawanie toImmutable metod do struktur danych z podklasami modyfikowalnymi i niemodyfikowalnymi (I53835)
  • Migracja KMP (Icbf38, b/521850119, b/534309122)

Poprawki błędów

  • Dodanie dalszej obsługi wersji pędzli i animacji tekstur. (Iea9ba)

Wersja 1.1.0-alpha05

15 lipca 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

  • Wersja eksperymentalna nowego typu gumki, znanego jako „częściowe pociągnięcie”, „edycja siatki” lub „pikselowa” gumka, która edytuje geometrię pociągnięcia i dzieli pociągnięcia, zamiast usuwać całe pociągnięcia lub maskować je kolorem tła. Znane problemy to brak wygładzania krawędzi cięcia i brak interfejsów API serializacji do zapisywania wyników wymazywania PartitionedMesh. Oba te problemy zostaną rozwiązane w przyszłych wersjach.
  • Dodaj brakującą adnotację Throws do StrokeInputBatchSerialization.decode, co wymaga aktualizacji od użytkowników Javy korzystających z tej metody. (I83473, b/522256938)

Poprawki błędów

  • Naprawianie awarii natywnej spowodowanej problemem z precyzją numeryczną (I2e1f0, 6618e69, b/523190724)
  • Odrzucanie zdegenerowanych ekstruzji w BrushTipExtruder (469b629)
  • Rozwiąż problem RejectedExecutionException w InProgressStrokesView (b/526696762)

Wersja 1.1.0-alpha04

17 czerwca 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Rozwiązaliśmy problemy z precyzją liczb zmiennoprzecinkowych, które powodowały artefakty wizualne w ukończonych pociągnięciach i występowały na niektórych urządzeniach po aktualizacji systemu operacyjnego.

  • Dodaj interfejs KMP-common do modułu pamięci (zamiast interfejsu Java InputStream/OutputStream będzie używany interfejs ByteArray).

  • Dodaj właściwość BrushBehavior.developerComment, która będzie zawierać metadane wyjaśniające projekt niestandardowej rodziny pędzli. Ma to na celu obsługę interfejsu projektanta pędzli.

  • Naprawiliśmy błąd w sprawdzaniu spójności wątków w CanvasInProgressStrokesRenderHelperV33.

  • Naprawiono niektóre błędy w obsłudze MotionEvent pól opcjonalnych (np. pochylenia, nacisku).

  • Ulepszyliśmy dokumentację interfejsu API pędzla niestandardowego.

  • Dodaj nowe typy BrushPaint.ColorFunction.

Wersja 1.1.0-alpha03

19 maja 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Udostępnienie publicznie interfejsu API do programowego dostosowywania pędzla do pisania odręcznego (I8e2e1)
  • Podziel BrushPaint.TextureLayer na bardziej szczegółowe podklasy (I8848a)

Wersja 1.1.0-alpha02

22 kwietnia 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Udostępnij przeciążenie funkcji BrushFamily.decode, które określa maksymalną zgodność wersji (I1c7bc).
  • Wycofanie interfejsu API serializacji BrushFamily z wersji eksperymentalnej (Idd16e)

Poprawki błędów

  • Rozwiązanie problemu z migotaniem podczas korzystania z InProgressStrokesView.maskPath na niektórych urządzeniach (I1c7bc, b/496920044)

Wersja 1.1.0-alpha01

11 marca 2026 r.

Publikacja androidx.ink:ink-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Różne drobne poprawki błędów

Zmiany w interfejsie API

  • Dodano InProgressShape.isCanceled, rozwiązano problemy z jednoczesnym edytowaniem w module tworzenia. (Ibfd32, b/474385518, b/470695777)
  • Udostępnianie w Javie wersji funkcji CanvasStrokeRenderer.create i InProgressStroke.updateShape bez argumentów (Id80a1, b/457715938)

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarie w InProgressStrokesView po odłączeniu lub ponownym dołączeniu do okna w przypadku interfejsu API w wersji 29–32. Umożliwiliśmy operacjom wektorowym przyjmowanie tego samego typu MutableVec jako danych wejściowych i wyjściowych. Połączyliśmy konfiguracje Proguard w jeden plik. (Ia4da0)
  • Zwiększ zależność od graphics-core do wersji 1.0.4 (Ibfa18)

Wersja 1.0

Wersja 1.0.0

17 grudnia 2025 r.

Publikacja androidx.ink:ink-*:1.0.0 Wersja 1.0.0 zawiera te zmiany.

Poprawki błędów

  • Zwiększ zależność od graphics-core do wersji 1.0.4 (Ibfa18)

Wersja 1.0.0-rc01

3 grudnia 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zmiany.

Poprawki błędów

  • Zaktualizuj wersję zależności. (Iecd04)

Wersja 1.0.0-beta02

19 listopada 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zmiany.

Zmiany w interfejsie API

  • Eksperymentalne niestandardowe interfejsy API kształtów o niskim opóźnieniu, różne poprawki błędów (Ib8d2f)

Poprawki błędów

  • Poprawienie precyzji liczb zmiennoprzecinkowych podczas StrokeInputBatch serializacji, co eliminuje odchylenia wartości wynikające z wielokrotnego kodowania i dekodowania.
  • Bardziej niezawodne oczyszczanie danych wejściowych systemu.
  • Naprawianie obsługi tekstury pędzla w funkcji kompozycyjnej InProgressStrokes

Wersja 1.0.0-beta01

22 października 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zmiany.

Poprawki błędów

  • Poprawki błędów w przygotowaniu do wersji beta01 (I9900e)
  • Ograniczanie artefaktów renderowania w pociągnięciach spowodowanych zbyt dużą liczbą modelowanych danych wejściowych znajdujących się zbyt blisko siebie.
  • Naprawiliśmy rzadko występującą awarię w modelowaniu danych wejściowych.

Wersja 1.0.0-alpha07

8 października 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zmiany.

Nowe funkcje

  • Parametr SelfOverlap dla StockBrushes highlighter i emojiHighlighter, który zastępuje InProgressStrokesView rendererFactory
  • Ulepszona implementacja wygładzania danych wejściowych, która eliminuje szum pomiarowy urządzenia, ale dokładniej odzwierciedla dane wejściowe użytkownika niż poprzednia implementacja wygładzania danych wejściowych
  • Większa spójność z innymi interfejsami API Androida i Jetpacka w przypadku jednostek kątowych (stopnie a radiany), przekształceń (pochylenie a ścinanie) i innych elementów.

Zmiany w interfejsie API

  • Zmiana interfejsu API związanego z kątami, aby używać stopni i uwzględniać jednostkę w nazwach, wyjaśnienie jednostek w narzędziach do konwersji kątów i obsługa zarówno stopni, jak i radianów, zmiana interfejsu StockBrushes API, aby przyjmował wersję pędzla jako parametr funkcji fabrycznej i udostępniał kontrolę zachowania nakładania się dla pędzli zakreślacza, zmiana nazwy MutableAffineTransform.populateFromTranslate na populateFromTranslation, usunięcie InProgressStrokesView.setRenderFactory/getRenderFactory. (Id9eab, b/436656418)
  • Zmiana nazwy przekształcenia ścinającego na przekształcenie skośne, doprecyzowanie dokumentacji, usunięcie CanvasStrokeRenderer.strokeModifiedRegionOutsetPx i dodanie InProgressStroke.changesWithTime (Ia5e70, b/436656418)

Poprawki błędów

  • Ulepszyliśmy modelowanie danych wejściowych, aby pociągnięcia dokładniej odzwierciedlały dane wejściowe. (I93097)

Wersja 1.0.0-alpha06

13 sierpnia 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zmiany.

Nowe funkcje

  • Pędzel do wyróżniania emotikonów: wyróżniaj części dokumentu wybranym emotikonem, aby dodać mu zabawny akcent i ułatwić sobie organizację.
  • Więcej interfejsów API pomocniczych dla kształtów podstawowych modułu geometrii
  • Poprawianie zgodności i wydajności urządzenia

Zmiany w interfejsie API

  • Uproszczony interfejs API dla InProgressStrokesView, interfejsy API geometrii wykończenia, wyróżnianie emoji, usuwanie funkcji fabrycznych z MutableParallelogram na rzecz metod wypełniania, obsługa wartości początkowej dla losowych zachowań pędzla. (I38280)

Poprawki błędów

  • Naprawiono problem z wydajnością i spójnością kolorów na mokro i na sucho. (Ifcd1d)

Wersja 1.0.0-alpha05

18 czerwca 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Tworzenie modułów interoperacyjności dla modułów tworzenia, pędzla i geometrii

Zmiany w interfejsie API

  • Nowe moduły i interfejsy API do współpracy z Compose, czyszczenie interfejsu API (I0e464)
  • Metody InProgressStroke.enqueueInputs/updateShape, które zwracały wartość kotlin.Result, zostały usunięte.Klienci powinni zamiast nich używać np. metod enqueueInputsOrThrow lub enqueueInputsOrIgnore. Nazwa InProgressStroke.getNeedsUpdate została zmieniona na isUpdateNeeded. InProgressStroke.populateOutlinePosition zwraca teraz parametr wyjściowy, aby umożliwić łączenie wywołań, co jest zgodne z innymi metodami w Ink. Interfejs TextureBitmapStore został przeniesiony z modułu renderowania do modułu pędzla. BoxAccumulator.populateFrom przyjmuje teraz niemutowalny obiekt Box z wartością null zamiast mutowalnego obiektu BoxAccumulator. Aby było jaśniejsze, co jest mutowane, wywołujący powinni zmienić boxAccumulator.add(other) na boxAccumulator.add(other.box). BrushUtil.toBuilderWithAndroidColor/createBuilderWithAndroidColor są usuwane. Zamiast nich używaj setAndroidColor z Brush.Builder po utworzeniu. (Ia7155)
  • Wcześniej eksperymentalna usługa InProgressStrokesView.textureBitmapStore jest teraz prywatna. Ta właściwość nadal ma publiczne metody dostępu. (I1d706)

Poprawki błędów

  • Zwiększyliśmy wydajność pędzli niestandardowych zawierających wiele cząstek.

Wersja 1.0.0-alpha04

9 kwietnia 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • Wprowadzamy nowe eksperymentalne interfejsy API dla niestandardowych obiektów BrushFamily, które umożliwiają korzystanie z nowych pędzli, takich jak ołówek i wskaźnik laserowy. Interfejs API umożliwia wczytywanie pędzli zdefiniowanych przez ten protokół. (I8809a)

Wersja 1.0.0-alpha03

12 lutego 2025 r.

Publikacja androidx.ink:ink-*:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Oszczędności związane z rozmiarem dysku i sieci: serializacja StrokeInputBatch, która pozwala zaoszczędzić wiele wierszy kodu, a powstałe obiekty stanowią niewielki ułamek rozmiaru tradycyjnie przechowywanych pociągnięć. (Ie898d)
  • Zaznaczanie lassem: pędzel z linią przerywaną do rysowania kreski zaznaczenia i funkcja zamieniająca kreskę zaznaczenia w PartitionedMesh na potrzeby zapytań dotyczących geometrii. (Ia38a0)

Wersja 1.0.0-alpha02

11 grudnia 2024 r.

Publikacja androidx.ink:ink-*:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Poprawki różnych błędów. (I05dd8)

Wkład zewnętrzny

  • Wycofaj: BuildCompat.isAtLeastV Zamiast tego wywołujący powinni bezpośrednio sprawdzać SDK_INT w porównaniu z 35. (I294d1)

Wersja 1.0.0-alpha01

2 października 2024 r.

Publikacja androidx.ink:ink-*:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Modułowa i konfigurowalna biblioteka, która ułatwia tworzenie, renderowanie i manipulowanie pięknymi pociągnięciami pióra utworzonymi w aplikacji.

Zmiany w interfejsie API

Nowe moduły, które pomagają deweloperom tworzyć zaawansowane funkcje pisania odręcznego:

  • Tworzenie: używaj InProgressStrokesView, aby renderować pociągnięcia w czasie rzeczywistym z wysoką wydajnością i krótkim czasem oczekiwania w miarę otrzymywania danych wejściowych.
  • Renderowanie: użyj znaków CanvasStrokeRenderer i ViewStrokeRenderer, aby narysować gotowe pociągnięcia piórem jako część interfejsu aplikacji.
  • Pociągnięcia: podstawowe typy danych używane w funkcjach pisania odręcznego.
  • Pędzel: konfigurowalna specyfikacja wyglądu i działania pociągnięć w odpowiedzi na dane wejściowe użytkownika.
  • Geometria: operacje geometryczne, takie jak przecięcie i pokrycie, które umożliwiają korzystanie z narzędzi takich jak zaznaczanie i usuwanie.