Ink API는 모듈화되어 있으므로 필요한 것만 사용할 수 있습니다.
획
笔画模块是 Ink API 的基础。此模块中的关键数据类型包括:
StrokeInputBatch:表示一系列指针输入,包括其位置、时间戳,以及可选的压力、倾斜度和方向。InProgressStroke:表示正在绘制的笔画。InProgressStroke用于以低延迟渲染部分笔画,并在输入完成后构建最终的Stroke,之后该对象可以重复使用。InProgressStroke由InProgressStrokes可组合项使用。Stroke:已完成的笔画的不可变表示形式,具有固定的几何形状。每个Stroke都有一个ImmutableStrokeInputBatch(输入点)、一个Brush(样式)和一个PartitionedMesh(几何形状)。您可以在应用中存储、处理和渲染笔画。
도형
Geometry 모듈은 교차 감지 및 변환을 비롯하여 기본 도형 (Box 및 Vec과 같은 전용 클래스 사용)과 임의 도형 (PartitionedMesh 사용)에 관한 기하학적 작업을 지원합니다. PartitionedMesh는 렌더링을 지원하기 위해 추가 데이터를 보유할 수도 있습니다.
브러시
brush 모듈은 획의 스타일을 정의합니다. 다음 두 가지 주요 부분으로 구성됩니다.
Brush: 기본 색상, 기본 크기,BrushFamily을 비롯한 획의 스타일을 지정합니다.BrushFamily는 글꼴 모음과 유사하며 획의 스타일을 정의합니다. 예를 들어BrushFamily는 특정 스타일의 마커나 형광펜을 나타낼 수 있으므로 크기와 색상이 다른 획이 해당 스타일을 공유할 수 있습니다.StockBrushes: 바로 사용할 수 있는BrushFamily인스턴스를 생성하는 팩토리 함수를 제공합니다.
작성
Compose 작성 모듈을 사용하면 사용자 터치 입력을 캡처하고 이를 화면에 지연 시간이 짧은 획으로 실시간 렌더링할 수 있습니다. 이는 모션 이벤트를 처리하고 획이 그려질 때 이를 표시하는 InProgressStrokes 컴포저블을 통해 달성됩니다.
스트로크가 완료되면 컴포저블은 InProgressStrokesFinishedListener 콜백을 사용하여 클라이언트 애플리케이션에 알립니다. 이를 통해 애플리케이션은 렌더링 또는 저장을 위해 완료된 획을 가져올 수 있습니다.
Compose에서 InProgressStrokes는 onStrokesFinished 매개변수에서 이 콜백을 사용합니다. 완료된 스트로크를 다른 컴포저블에 전달하여 렌더링 모듈을 사용하여 화면에 커밋합니다.
렌더링
렌더링 모듈은 Android Canvas에 잉크 획을 그리는 작업을 간소화합니다.
Compose에는 CanvasStrokeRenderer를 제공하고 뷰 기반 레이아웃에는 ViewStrokeRenderer를 제공합니다. 이러한 렌더러는 렌더링 성능을 최적화하고 앤티앨리어싱을 비롯한 고품질 시각적 요소를 제공하는 데 도움이 됩니다.
획을 렌더링하려면 create() 메서드를 호출하여 CanvasStrokeRenderer 인스턴스를 가져온 다음 draw() 메서드를 호출하여 완료된 (Stroke) 획 또는 진행 중인(InProgressStroke) 획을 Canvas에 렌더링합니다.
획을 그릴 때 캔버스를 변환할 수 있습니다. 예를 들어 이동, 확대/축소, 회전 등이 있습니다. 획을 올바르게 렌더링하려면 canvas 변환을 CanvasStrokeRenderer.draw에도 전달해야 합니다.
canvas 변환을 별도로 추적하지 않으려면 대신 ViewStrokeRenderer를 사용하세요.
저장용량
存储模块提供用于高效序列化和反序列化笔画数据的实用程序,主要侧重于 StrokeInputBatch。
该模块使用 Protocol Buffer 和优化的增量压缩技术,与简单的方法相比,可显著节省存储空间。
存储模块简化了笔画的保存、加载和分享。