grafiki,

  
Wykorzystywanie funkcji graficznych w wielu wersjach platformy Android

Ta tabela zawiera listę wszystkich artefaktów w grupie androidx.graphics.

Artefakt Wersja stabilna Wersja kandydująca do publikacji Wersja Beta Wersja alfa
rdzeń graficzny, 1.0.3 - - -
ścieżka grafiki 1.0.1 - - -
grafika: kształty 1.0.1 - 1.1.0-beta01 -
Ostatnia aktualizacja tej biblioteki: 30 lipca 2025 r.

Deklarowanie zależności

Aby dodać zależność od Graphics, musisz dodać do projektu repozytorium Google Maven. 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:

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.3"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.1.0-beta01"
}

Kotlin

dependencies {
    implementation("androidx.graphics:graphics-core:1.0.3")
    implementation("androidx.graphics:graphics-path:1.0.1")
    implementation("androidx.graphics:graphics-shapes:1.1.0-beta01")
}

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

Opinia

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 dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego problemu

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

Brak informacji o wersji tego artefaktu.

Grafika w wersji 1.1

Wersja 1.1.0-beta01

30 lipca 2025 r.

Zostanie wycofaneandroidx.graphics:graphics-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Projekty wydane w Kotlinie 2.0 wymagają do użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
  • Dodaj mingwX64, js i wasm jako cele kompilacji. (I2c46a)

Wersja 1.1.0-alpha01

11 grudnia 2024 r.

Zostanie wycofaneandroidx.graphics:graphics-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Przekształciliśmy główną wersję demonstracyjną w ogólny edytor kształtów. Umożliwia to importowanie kształtów ze ścieżki SVG, ręczne edytowanie wykrytych elementów w przypadku błędów w procesie automatycznym oraz eksportowanie wyniku do kodu, który można wykorzystać w kodzie produkcyjnym. (I1ac13)
  • Zastąp pomiary kątowe postępu konturu kształtu pomiarami długości krzywej, co umożliwi używanie bardziej złożonych kształtów do przekształcania. (I75478) , I390dd
  • Ulepszyliśmy algorytm mapowania funkcji, dzięki czemu więcej przekształceń powinno wyglądać bardziej naturalnie. (I83287)

Zmiany w interfejsie API

  • Dodaj importowanie ścieżek SVG i serializator funkcji. Zwykle wygląda to tak:
    • Użyj nowego filtra SvgPathParser.parseFeatures(), aby przekonwertować ścieżkę SVG (wartość atrybutu d w elemencie path SVG) na List<Feature>.
    • Można go zmodyfikować, a następnie przekształcić w ciąg znaków za pomocą znaku FeatureSerializer.serialize().
    • Powstały ciąg tekstowy można wykorzystać w kodzie produkcyjnym, importując go za pomocą FeatureSerializer.parse().
    • Kroki 1 i 2 wykonuje się tylko raz i można je wykonać w nowej aplikacji. Kod produkcyjny powinien wymagać tylko kroku 3. (I9bd00, b/371196190), (Ic3842), (If68ed), (I10251)
  • Udostępniaj obiekty wielokątne i typy obiektów. Można teraz tworzyć bardziej ogólne RoundedPolygons za pomocą konstruktora podstawowego, który przyjmuje List<Features>. Funkcje to głównie lista krzywych Beziera trzeciego stopnia, ale są one otagowane, aby pomóc algorytmowi przekształcania dopasować kształty początkowe i końcowe (wypukłe rogi są mapowane na wypukłe rogi, a wklęsłe rogi na wklęsłe rogi). (I61e76), (I1fc5c)
  • Dodaje obsługę watchosDeviceArm64 KMP i wersji Kotlin 1.9. (Icf15d, b/364652024)

Poprawki błędów

  • Rozwiązaliśmy problem w przypadku, gdy ostatnia funkcja była pusta. (I390dd)
  • Ulepsz proces tworzenia RoundedPolygon. (Ib862c, b/360888486)
  • Naprawiono błąd inicjowania RoundedPolygon. (I83ddb)
  • Popraw błąd w algorytmie szacującym środek wielokąta. (Ida147)

Graphics Shapes Version 1.0

Wersja 1.0.1

4 września 2024 r.

androidx.graphics:graphics-shapes:1.0.1, androidx.graphics:graphics-shapes-android:1.0.1androidx.graphics:graphics-shapes-desktop:1.0.1 są zwalniane. Wersja 1.0.1 zawiera te zmiany.

Wersja 1.0.0

21 sierpnia 2024 r.

androidx.graphics:graphics-shapes:1.0.0, androidx.graphics:graphics-shapes-android:1.0.0androidx.graphics:graphics-shapes-desktop:1.0.0 są zwalniane. Wersja 1.0.0 zawiera te zmiany.

Wersja 1.0.0-rc01

24 lipca 2024 r.

androidx.graphics:graphics-shapes:1.0.0-rc01, androidx.graphics:graphics-shapes-android:1.0.0-rc01androidx.graphics:graphics-shapes-desktop:1.0.0-rc01 są zwalniane. Wersja 1.0.0-rc01 zawiera te commity.

Wersja 1.0.0-beta01

1 maja 2024 r.

androidx.graphics:graphics-shapes:1.0.0-beta01, androidx.graphics:graphics-shapes-android:1.0.0-beta01androidx.graphics:graphics-shapes-desktop:1.0.0-beta01 są zwalniane. Wersja 1.0.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Umożliwia wstępne obracanie kształtów, aby zaczynały się w innym punkcie. Ta zmiana umożliwia rozpoczęcie krzywych pillStar kształtów od punktu na obwodzie, który nie jest domyślny. Może to być przydatne podczas animowania obrysu ścieżki kształtu, aby rozpocząć rysowanie od określonego miejsca na konturze kształtu. (Ifbb4d, b/324303807)
  • Dodaliśmy do funkcji Morph funkcje calculateBounds(), które są odpowiednikami tych samych funkcji w RoundedPolygon. (I8a3b6, b/325463575)

Wersja 1.0.0-alpha05

7 lutego 2024 r.

androidx.graphics:graphics-shapes:1.0.0-alpha05, androidx.graphics:graphics-shapes-android:1.0.0-alpha05androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05 są zwalniane. Wersja 1.0.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Biblioteka zawiera teraz nowe funkcje pill()pillStar(), które ułatwiają tworzenie tych zaokrąglonych kształtów i gwiazdek. Dostępne są też nowe interfejsy API do obliczania dokładnych granic wymaganych dla kształtu (wcześniejsze granice były tylko szacunkowe i opierały się na punktach kontrolnych i kotwicach bazowej krzywej Beziera) oraz maksymalnych możliwych granic, co może być przydatne do określenia rozmiaru kontenera, w którym będzie się znajdować kształt, jeśli będzie on obracany w tym kontenerze. (I71827)

Zmiany w interfejsie API

  • Teraz masz więcej opcji pobierania dokładnych i maksymalnych granic. (I6d49f, b/317286450)

Poprawki błędów

  • Podczas rysowania tych kształtów jako ścieżek z obrysem występowały sporadyczne artefakty renderowania z powodu problemu z renderowaniem niskiego poziomu związanego z krzywymi o zerowej długości. Ten błąd został naprawiony przez wyeliminowanie wszystkich krzywych o długości zerowej (które nie są potrzebne w przypadku kształtów, co pozwala też zaoszczędzić na narzucie ścieżek generowanych przez kształty).

Wersja 1.0.0-alpha04

13 grudnia 2023 r.

androidx.graphics:graphics-shapes:1.0.0-alpha04, androidx.graphics:graphics-shapes-android:1.0.0-alpha04androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04 są zwalniane. Wersja 1.0.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • Ta wersja zawiera kilka zmian w API oraz poprawki błędów.
  • Wiele zmian w interfejsie API sprawia, że biblioteka Shapes jest zgodna z KMP. Ułatwia to wywoływanie z kodu innego niż Android (np. kodu Compose niezależnego od Androida). Na przykład w interfejsie API nie ma typów Androida, takich jak poprzednie typy PointF, Matrix i Path.
  • Wprowadziliśmy też kilka zmian w interfejsach API i implementacji, aby zwiększyć wydajność, a w szczególności zminimalizować alokację (i zbieranie) obiektów. Na przykład przejście z PointF na oddzielne parametry Float pozwala uniknąć przydzielania wielu tymczasowych struktur PointF do przechowywania tych wierzchołków.

Zmiany w interfejsie API

  • Zastąpiono Morph.asMutableCubics funkcją iterującą po MutableCubics. Zmiana interfejsu funkcji PointTransformer. Teraz przyjmuje on współrzędne x i y obiektu Point i zwraca obiekt TransformedResult (który jest tworzony na podstawie przekształconych współrzędnych x i y) (I6719e).
  • Usunięto publiczny konstruktor Cubic i zastąpiono go funkcją fabryczną. (I409ce)
  • Dodanie interfejsów API do przekształcania i rysowania specyficznych dla Androida (I079f6, b/292289543)
  • Eliminate android dependencies (Iadc1c, b/292289543)
  • Nazwy właściwości kotwicy i kontroli są teraz bardziej zrozumiałe (If13bd, b/294562941)
  • PointF parametrów zmieniono na Float par (Id4705, b/276466399, b/290254314)
  • progress jest teraz przekazywane bezpośrednio do poleceń rysowania Morph (Icdca2).

Poprawki błędów

Wersja 1.0.0-alpha03

7 czerwca 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-shapes:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano nową funkcję RoundedPolygon.rectangle() (I78e7e, b/280322189)
  • Funkcje Star i Circle nie są już pisane wielką literą i są wywoływane za pomocą obiektu towarzyszącego RoundedPolygon, np. RoundedPolygon.star(...)(I14735)

Poprawki błędów

  • Poprawiono błąd wygładzania (Ibf894)
  • Naprawiliśmy błąd, który występował, gdy kształt początkowy i końcowy były takie same. Lepsze rozłożenie dostępnego miejsca po bokach na cięcia, najpierw wykorzystanie dostępnego miejsca na zaokrąglanie, a następnie na wygładzanie, jeśli zostanie jeszcze miejsce. (Ibd320, b/277936300)

Wersja 1.0.0-alpha02

19 kwietnia 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-shapes:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Superklasa Polygon została połączona z jej podklasą RoundedPolygon. Wszystkie wielokąty są teraz [opcjonalnie] zaokrąglonymi wielokątami.
  • Funkcja gwiazdki (która nadal zwraca wartość RoundedPolygon) przyjmuje teraz wartość innerRadius zamiast poprzedniego parametru innerRadiusRatio. Jest on podawany w tych samych jednostkach co dotychczasowy parametr promienia, co ułatwia korzystanie z niego i zapewnia większą spójność. Dodatkowo parametr numOuterVertices został zmieniony na numVerticesPerRadius, aby wyjaśnić, że ta sama liczba jest stosowana do promieni wewnętrznego i zewnętrznego.
  • Wcześniej w dokumentacji podawano, że parametr CornerRounding.radius jest względny w stosunku do rozmiaru wielokąta, ale w rzeczywistości jest to wartość bezwzględna, a nie względna. Dokumentacja została zaktualizowana, a adnotacja ograniczająca wartość do maksymalnie 1,0 została poprawiona.

Wersja 1.0.0-alpha01

5 kwietnia 2023 r.

Graphics-Shapes to nowa biblioteka, która umożliwia łatwe tworzenie i renderowanie zaokrąglonych kształtów wielokątnych, a także proste i automatyczne przekształcanie (animowanie) różnych kształtów.

Zostanie wycofaneandroidx.graphics:graphics-shapes:1.0.0-alpha01 Ta wersja została opublikowana z wewnętrznej gałęzi.

Nowe funkcje

  • Użyj interfejsu Polygon API, aby utworzyć wielokąty foremne i gwiazdy z wybraną liczbą wierzchołków.
  • Użyj opcjonalnych parametrów CornerRounding, aby określić promień zaokrąglenia i parametry wygładzania rogów, co spowoduje powstanie wielokątów o zaokrąglonych rogach.
  • Użyj nowego interfejsu API Morph(Polygon, Polygon), aby automatycznie obliczyć kształt „przekształcenia”, którego postęp można ustawić w zakresie od 0 do 1, aby animować przejście między kształtem początkowym a końcowym. Animuj ten postęp w czasie, rysując wynik w każdej klatce, aby utworzyć płynną animację między tymi nowymi zaokrąglonymi kształtami.

Wersja ścieżki graficznej 1.0

Wersja 1.0.1

1 maja 2024 r.

Zostanie wycofaneandroidx.graphics:graphics-path:1.0.1 Wersja 1.0.1 zawiera te zmiany.

Poprawki błędów

  • Ulepszenia flag kompilatora.

Wersja 1.0.0

6 marca 2024 roku

Zostanie wycofaneandroidx.graphics:graphics-path:1.0.0

Wersja 1.0.0-rc01

21 lutego 2024 r.

Zostanie wycofaneandroidx.graphics:graphics-path:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zmiany.

Poprawki błędów

  • Poprawa wydajności PathIterator w przypadku interfejsu API < 34 (Id4629)

Wersja 1.0.0-beta02

10 stycznia 2024 r.

Zmiany w tej wersji polegały na zmniejszeniu rozmiaru biblioteki, który był większy niż to konieczne ze względu na założenia kodu natywnego.

Zostanie wycofaneandroidx.graphics:graphics-path:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zmiany.

Poprawki błędów

  • Zmniejszono rozmiar libandroidx.graphics.path.so o 96%. (I71397)
  • Zmniejsz rozmiar libandroidx.graphics.path.so o 5%. (I2da7c)
  • Zmniejszyliśmy rozmiar natywnych komponentów androidx.graphics:graphics-path o 43%. (I8e40d)

Wersja 1.0.0-beta01

29 listopada 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-path:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Usunięto użycie eksperymentalnego interfejsu isAtLeastU() API (Ie9117, b/289269026)

Poprawki błędów

  • Różne poprawki i ulepszenia wydajności, w tym sposób obsługi krzywych stożkowych przez bibliotekę.

Wersja 1.0.0-alpha02

7 czerwca 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-path:1.0.0-alpha02 Ta wersja jest opracowywana w wewnętrznej gałęzi.

Nowe funkcje

  • Rozwiązaliśmy problem z wewnętrznym sprawdzaniem wersji platformy, który powodował problemy podczas uruchamiania wersji podglądowych Androida 14 (sprawdzanie wersji nie działało, ale mechanizm wykonywania działań w poprzednich wersjach nie działał prawidłowo w przypadku Androida 14).

Wersja 1.0.0-alpha01

22 marca 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-path:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Ta nowa biblioteka umożliwia odpytywanie danych o ścieżkach za pomocą nowego interfejsu PathIterator API. Za pomocą tego interfejsu API wywołujący mogą iterować po wszystkich segmentach obiektu Path, aby określić operację i dane dla tych segmentów.
  • Biblioteka korzysta z podobnych interfejsów API wprowadzonych w wersji podglądowej Androida 14, ale ta wersja interfejsu API AndroidX działa też w wersjach od API 21.

Graphics Core w wersji 1.0

Wersja 1.0.3

26 marca 2025 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.3 Wersja 1.0.3 zawiera te zmiany.

Poprawki błędów

  • Poprawka dotycząca migotania pełnego ekranu podczas rysowania na niektórych urządzeniach z API<33.

Wersja 1.0.2

16 października 2024 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.2 Wersja 1.0.2 zawiera te zmiany.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że instancje SurfaceControl były nadal zarządzane przez kompozytor systemu nawet po ich zwolnieniu.
  • Rozwiązaliśmy problem polegający na tym, że obecnie prezentowana instancja HardwareBuffer nie była zwalniana po usunięciu zależności o niskim poziomie opóźnień.
  • Rozwiązaliśmy problem z migotaniem na niektórych urządzeniach z Androidem 14 lub nowszym, które nie obsługiwały flagi użycia bufora przedniego.

Wersja 1.0.1

4 września 2024 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.1 Wersja 1.0.1 zawiera te zmiany.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że czasami nie zwalniano zasobów pamięci.

Wersja 1.0.0

29 maja 2024 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0 Wersja 1.0.0 zawiera te zmiany.

Główne funkcje wersji 1.0.0

  • Oficjalna stabilna wersja biblioteki graphics-core. Zawiera drobne poprawki błędów i ulepszenia działania z wersji 1.0.0-rc01.

Wersja 1.0.0-rc01

17 kwietnia 2024 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0-rc01 Ta wersja jest opracowywana w wewnętrznej gałęzi.

Poprawki błędów

  • Rozwiązaliśmy problem, który mógł powodować podwójne zamykanie deskryptorów plików w przypadku niektórych urządzeń z Androidem 14.CanvasBufferedRendererAPI
  • Rozwiązaliśmy problem polegający na tym, że funkcja FrameBuffer nie usuwała prawidłowo instancji bufora ramki.

Wersja 1.0.0-beta01

13 grudnia 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zmiany.

Nowe funkcje

  • Wprowadziliśmy nowy interfejs API LowLatencyCanvasView, który obsługuje renderowanie z krótkim czasem oczekiwania za pomocą interfejsów API grafiki 2D na Androidzie (Canvas + Paint) w hierarchii widoków.
  • Wprowadzono interfejs CanvasBufferedRenderer API do obsługi renderowania Canvas z akceleracją sprzętową na obiekcie HardwareBuffer. Można go użyć do narysowania części interfejsu użytkownika w buforze, który można przekształcić w mapę bitową za pomocą interfejsu Bitmap.wrapHardwareBuffer API.

Zmiany w interfejsie API

  • Zaktualizowano interfejs CanvasBufferRenderer#releaseBuffer API, aby miał opcjonalny parametr fence. Zaktualizowaliśmy dokumentację, aby opisać, kiedy zwracana jest wartość RenderResult#fence. (If1ea7)
  • Dodaj metodę draw do RenderRequest, aby obsługiwać korzystanie z korutyn do planowania próśb o wyświetlenie. Zmieniliśmy nazwę poprzedniej metody losowania, która wykorzystywała wykonawcę, na drawAsync. Zmieniliśmy metodę isClosed() na właściwość. (I5bff6)
  • Udostępniono parametr formatu bufora w CanvasFrontBufferRenderer, aby można było go bezpośrednio mapować na CanvasBufferedRenderer.Builder#setBufferFormat (I0f272).
  • Utworzono interfejs API CanvasBufferedRenderer do obsługi renderowania przyspieszonego sprzętowo na elemencie HardwareBuffer. Zapewnia to implementację wsteczną na Androidzie Q wraz z konfiguracją głębi łańcucha wymiany na poziomie HardwareBuffers. Konfiguracja ColorSpace jest nadal ograniczona do Androida U+, ale implementacja zgodności zapewnia działanie bez operacji w imieniu deweloperów. (I9b1d8)
  • Dodaj interfejsy API setFrameRate/clearFrameRate do SurfaceControlCompat.Transaction, aby kontrolować liczbę klatek na sekundę wraz ze strategią zmiany w przypadku płynnych lub domyślnych przejść. (I6045c)
  • Obniżyliśmy wymagany poziom interfejsu API dla setDataSpace z Androida T do Androida Q. (I59c34)
  • Dodano wywołanie zwrotne onBufferReleased do interfejsu API GLFrameBufferRenderer, aby umożliwić konsumentom czyszczenie stanu, gdy bufor nie jest już prezentowany (I8a4e2).
  • Utwórz LowLatencyCanvasView, aby obsługiwać prosty przypadek użycia renderowania treści z niskim opóźnieniem, które jest synchronizowane z renderowaniem hierarchii widoków. Upraszcza to zarządzanie elementem SurfaceView, ponieważ wewnętrznie zarządza instancją SurfaceView, która jest tłumaczona na ekranie i poza nim, co zapewnia zsynchronizowane renderowanie z niskim opóźnieniem. (I9253b)
  • Dodano obsługę konfiguracji przestrzeni kolorów w interfejsie CanvasFrontBufferedRenderer API. Zaktualizowano wywołania zwrotne z wieloma buforami, aby uwzględniały też buforowane wstecznie SurfaceControl (I24bd9).

Wersja 1.0.0-alpha05

6 września 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Wprowadzono interfejs GLFrameBufferRenderer API. Zawiera kombinację zależności OpenGL, konfigurację łańcucha wymiany, formaty pikseli i konfigurację SurfaceControl. (Ic775b)

Zmiany w interfejsie API

  • Dodano parametry szerokości i wysokości do różnych interfejsów API wywołań zwrotnych, aby przekazywać wymiary z SurfaceHolder#Callbacks. (I7f9fc)
  • Dodano interfejs API clear, który czyści zarówno warstwy buforowane z przodu, jak i wielokrotne. (Ic1f95)
  • Dodano obsługę konfigurowania podstawowego typu bufora łańcuchów wymiany używanych w GLFrontBufferedRenderer. (I07a13)
  • Dodano właściwości Kotlin dla getterów w przypadku adnotacji GLFrameBufferRendererIntRange dotyczących maksymalnej liczby wpisów w buforze oraz adnotacji HardwareBufferFormartHardwareBufferUsage dotyczących odpowiednio setFormatsetUsage. (Ief89e)
  • Zaktualizowaliśmy interfejs setBuffer API w przypadku transakcji SurfaceControl, aby zapewnić barierę wydania. (Ice1bb)
  • Dodaliśmy interfejsy API SurfaceControlCompat.Transaction do konfigurowania przestrzeni danych i ustawiania rozszerzonego zakresu jasności. (Ic378d)

Wersja 1.0.0-alpha04

7 czerwca 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • Wprowadziliśmy CanvasFrontBufferedRenderer, aby obsługiwać grafikę o krótkim czasie oczekiwania przy użyciu interfejsu android.graphics.Canvas API wraz z dotychczasową implementacją OpenGL.

Zmiany w interfejsie API

  • Zaktualizowano interfejs API SurfaceControlCompat.Transaction#setBuffer, aby zezwalał na instancje HardwareBuffer z wartością null, co odzwierciedla odpowiedni interfejs API platformy (I173d7).
  • Zmień nazwy metod odnoszących się do renderowania z podwójnym buforowaniem na renderowanie z wielokrotnym buforowaniem, ponieważ łańcuch wymiany może zawierać więcej niż 2 bufory. (I830d7)
  • Utwórz interfejs API CanvasFrontBufferedRenderer, aby umożliwić podmiotom zewnętrznym korzystanie z systemu renderowania z buforowaniem z przodu za pomocą interfejsu Canvas API. (Ibfc29)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że po wznowieniu odpowiedniej aktywności GLFrontBufferedRenderer nie renderował treści.
  • Rozwiązaliśmy problem polegający na tym, że buforowana z wyprzedzeniem treść była usuwana przedwcześnie.
  • Rozwiązaliśmy problem polegający na tym, że po udostępnieniu interfejsów API grafiki o niskim poziomie opóźnień symbol SurfaceHolder.Callbacks nie był usuwany.

Wersja 1.0.0-alpha03

22 marca 2023 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Zaktualizowana implementacja wywołania zwrotnego GLFrontBufferedRenderer, która udostępnia obiekt BufferInfo zawierający szerokość i wysokość bufora oraz identyfikator bufora klatek, którego można użyć do ponownego kierowania do pierwotnego miejsca docelowego po renderowaniu do pośredniego bufora tymczasowego. (I7fe20)
  • Skonsolidowane tworzenie do statycznej metody fabrycznej na SyncFenceCompat.SyncFence
  • Usunęliśmy publiczną metodę zgodności dla eglDupNativeFenceFDANDROID na rzecz metody fabrycznej SyncFenceCompat do tworzenia SyncFence. Dzięki temu wszystkie interfejsy API będą miały prawidłową implementację SyncFence niezależnie od poziomu interfejsu API. (I849bb)
  • Dodaliśmy dokumentację dotyczącą właściwości FrameBufferRendererSyncStrategy.
    • Przeniesiono FrameBufferRenderer + FrameBuffer + FrameBufferPool do pakietu androidx.graphics.opengl
    • Przeniesiono SyncStrategy do pakietu androidx.graphics.opengl
    • Zaktualizowano RenderCallback#onDraw dokumentów
    • Zaktualizowano dokumentację RenderCallback#obtainFrameBuffer, która informuje, że za wywoływanie interfejsu API odpowiada jego implementator FrameBuffer.close
    • Zaktualizowano onDrawComplete, aby wskazać, że konsumenci są odpowiedzialni za wysyłanie treści do wyświetlenia
    • Przeniesiono SyncFence interfejsy/klasy zgodności do pakietu androidx.hardware, aby odzwierciedlić strukturę
    • Zmieniliśmy nazwę interfejsu SyncFence API na SyncFenceV19 i ustawiliśmy go jako prywatny, aby skonsolidować użycie w SyncFenceCompat, które w miarę możliwości korzysta z interfejsu SyncFence API platformy. (I5149c)
  • Dodano metody GLFrontBufferedRenderer#cancelGLFrontBufferedRenderer#execute. Pierwsza z nich jest przydatna w przypadku odrzucania dotyku dłonią, gdy renderowanie do bufora przedniego powinno zostać anulowane, a bufor przedni powinien zostać ukryty. Jest to przydatne w sytuacjach, w których chcesz manipulować obiektami w wątku GL bez konieczności planowania renderowania. (If0b7f)
  • Dodaj interfejs API, aby renderować bezpośrednio w warstwie z podwójnym buforowaniem. Pomaga to w ponownym renderowaniu sceny po wznowieniu, a także daje konsumentom możliwość selektywnego określania, kiedy dynamicznie korzystać z renderowania z buforowaniem z przodu na podstawie żądanej sceny do renderowania. (Ied56c)
  • Dodano nowy interfejs API do SurfaceControlCompat.Builder, który umożliwia konfigurowanie konta rodzica SurfaceControl z innej instancji SurfaceControl oprócz dotychczasowego mechanizmu z SurfaceView. (I1d1b6)
  • Większa możliwość zwracania wartości null przez wycofane i ukryte funkcje (Ibf7b0)
  • Dodano stałą rozszerzenia EGL_ANDROID_get_native_client_buffer, aby sprawdzać, czy urządzenie z Androidem obsługuje importowanie instancji HardwareBuffer do obiektów EGLClientBuffer, które mogą być używane jako instancja EGLImage. (Iad767)
  • Dodawanie adnotacji @JvmDefaultWithCompatibility (I8f206)

Wersja 1.0.0-alpha02

9 listopada 2022 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Rozwiązaliśmy problem z brakującą adnotacją RequiresApi dla addTransactionCommitListener, która została wprowadzona w Androidzie S (I0a035).
  • Zaktualizowano wywołania zwrotne bufora onDraw<Front/Double>, aby udostępniać macierz przekształcenia, którą konsumenci mogą przekazywać do swoich shaderów wierzchołków oprócz bieżącej szerokości i wysokości bufora. Użytkownicy są odpowiedzialni za używanie tych parametrów do prawidłowego wstępnego obracania kodu renderowania OpenGL. (I82f9e)

Poprawki błędów

  • Zmniejszyliśmy opóźnienie grafiki, wstępnie obracając bufory przed wydaniem transakcji SurfaceControl.
  • Rozwiązaliśmy problem, który powodował, że w dziennikach błędów pojawiał się błąd 300d (EGL_BAD_SURFACE).
  • Rozwiązaliśmy problem, który powodował, że po wznowieniu odpowiedniej aktywności, w której użyto GLFrontBufferedRenderer, stawał się on nieprawidłowy.
  • Rozszerzona obsługa emulatorów i urządzeń z ChromeOS.
  • Rozwiązaliśmy problem polegający na tym, że przednia warstwa buforowana mogła być przedwcześnie ukrywana.

Wersja 1.0.0-alpha01

24 października 2022 r.

Zostanie wycofaneandroidx.graphics:graphics-core:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Pierwsza wersja biblioteki AndroidX z rdzeniem graficznym. Obejmuje to interfejsy API obsługujące przypadki użycia wymagające krótkiego czasu oczekiwania, takie jak wprowadzanie danych za pomocą rysika. Wprowadza też kilka pomocniczych interfejsów API do używania OpenGL.

Zmiany w interfejsie API

  • Wprowadza GLFrontBufferedRenderer, aby wspomagać renderowanie z buforowaniem z przodu i wielokrotnym, co pozwala osiągnąć zarówno małe opóźnienie, jak i wysoką jakość renderowania.
  • Wprowadza interfejs GLRenderer API, który pomaga w renderowaniu OpenGL na różnych dostawców powierzchni, takich jak SurfaceView, TextureView i inne.