모듈

Ink API는 모듈화되어 있으므로 필요한 것만 사용할 수 있습니다.

strokes 모듈은 Ink API의 기반 역할을 합니다. 이 모듈의 주요 데이터 유형은 다음과 같습니다.

  • StrokeInputBatch: 위치, 타임스탬프, 압력, 기울기, 방향(선택사항)을 비롯한 일련의 포인터 입력을 나타냅니다.
  • InProgressStroke: 활성 상태로 그려지고 있는 획을 나타냅니다. InProgressStroke는 지연 시간이 짧은 부분 획을 렌더링하고 입력이 완료되면 최종 Stroke를 빌드하는 데 사용되며, 그 후 객체를 재사용할 수 있습니다. InProgressStrokeInProgressStrokes 컴포저블에서 사용됩니다.
  • Stroke: 고정된 형상이 있는 최종 획의 변경할 수 없는 표현입니다. 각 Stroke에는 ImmutableStrokeInputBatch (입력 포인트), Brush (스타일), PartitionedMesh (기하학적 도형)이 있습니다. 애플리케이션 내에서 획을 저장하고, 조작하고, 렌더링할 수 있습니다.

도형

Geometry 모듈은 교차 감지 및 변환을 비롯하여 기본 도형 (BoxVec과 같은 전용 클래스 사용)과 임의 도형 (PartitionedMesh 사용)에 관한 기하학적 작업을 지원합니다. PartitionedMesh는 렌더링을 지원하기 위해 추가 데이터를 보유할 수도 있습니다.

브러시

brush 模块定义了笔画的样式。它包含两个主要部分:

  • Brush:指定笔画的样式,包括基准颜色、基准大小和 BrushFamilyBrushFamily 类似于字体系列,用于定义笔画的样式。例如,BrushFamily 可以表示某种特定样式的标记或荧光笔,从而使不同大小和颜色的笔画共享该样式。
  • StockBrushes:提供用于创建即用型 BrushFamily 实例的工厂函数。

작성

Compose 작성 모듈을 사용하면 사용자 터치 입력을 캡처하고 이를 화면에 지연 시간이 짧은 획으로 실시간 렌더링할 수 있습니다. 이는 모션 이벤트를 처리하고 획이 그려질 때 이를 표시하는 InProgressStrokes 컴포저블을 통해 달성됩니다.

스트로크가 완료되면 컴포저블은 InProgressStrokesFinishedListener 콜백을 사용하여 클라이언트 애플리케이션에 알립니다. 이를 통해 애플리케이션은 렌더링 또는 저장을 위해 완료된 획을 가져올 수 있습니다.

Compose에서 InProgressStrokesonStrokesFinished 매개변수에서 이 콜백을 사용합니다. 완료된 스트로크를 다른 컴포저블에 전달하여 렌더링 모듈을 사용하여 화면에 커밋합니다.

렌더링

렌더링 모듈은 Android Canvas에 잉크 획을 그리는 작업을 간소화합니다. Compose에는 CanvasStrokeRenderer를 제공하고 뷰 기반 레이아웃에는 ViewStrokeRenderer를 제공합니다. 이러한 렌더러는 렌더링 성능을 최적화하고 앤티앨리어싱을 비롯한 고품질 시각적 요소를 제공하는 데 도움이 됩니다.

획을 렌더링하려면 create() 메서드를 호출하여 CanvasStrokeRenderer 인스턴스를 가져온 다음 draw() 메서드를 호출하여 완료된 (Stroke) 획 또는 진행 중인(InProgressStroke) 획을 Canvas에 렌더링합니다.

획을 그릴 때 캔버스를 변환할 수 있습니다. 예를 들어 이동, 확대/축소, 회전 등이 있습니다. 획을 올바르게 렌더링하려면 canvas 변환을 CanvasStrokeRenderer.draw에도 전달해야 합니다.

canvas 변환을 별도로 추적하지 않으려면 대신 ViewStrokeRenderer를 사용하세요.

저장용량

저장소 모듈은 주로 StrokeInputBatch에 중점을 두어 획 데이터를 효율적으로 직렬화하고 역직렬화하는 유틸리티를 제공합니다.

이 모듈은 프로토콜 버퍼와 최적화된 델타 압축 기술을 사용하여 단순한 방법에 비해 상당한 스토리지 절감 효과를 제공합니다.

스토리지 모듈을 사용하면 획을 저장, 로드, 공유하는 작업이 간소화됩니다.