mực

  
Tạo ra những ứng dụng bút hàng đầu. Giảm rào cản gia nhập của nhà phát triển để có hiệu suất cao và trải nghiệm viết tay đẹp mắt. Hỗ trợ tính năng Viết tay trên Android và JVM phía máy chủ (hiện được hỗ trợ trên Linux cho x86_64).
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 9 tháng 9 năm 2026 1.0.0 - - 1.1.0-alpha08

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên Ink, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Groovy

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

Kotlin

dependencies {


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

Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.

Phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Trình theo dõi sự cố để biết thêm thông tin.

Ink Phiên bản 1.1

Phiên bản 1.1.0-alpha08

Ngày 9 tháng 9 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha08. Phiên bản 1.1.0-alpha08 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm tính năng hỗ trợ kết xuất cho KMP iOS thông qua MetalRenderer, trong chú giải chọn sử dụng ExperimentalInkCrossPlatformRenderingApi, dựa trên các API chung của KMP cho chức năng cốt lõi
  • Đổi tên Target.TEXTURE_ANIMATION_PROGRESS_OFFSET thành Target.PAINT_ANIMATION_PROGRESS_OFFSET. (I8809f)
  • Thêm các phương thức nạp chồng ImmutableAffineTransform.translate(float x, float, y)MutableAffineTransform populateFromTranslation(float x, float y) (I8809f)
  • Đổi tên thuộc tính DampingNode từ dampingSource thành dampOver (Id3178)
  • Đổi tên thuộc tính DampingNode từ dampingGap thành strength (I69432)
  • Sử dụng loại Vec khi xác định EasingFunction.CubicBezier thay vì Float (I69432)
  • Thêm chú giải WorkerThread vào các hàm tẩy chỉnh sửa lưới Stroke.subtractStroke.split (I69432)

Sửa lỗi

  • Tạo các mẫu Brush tương thích với KMP (I77125)

Phiên bản 1.1.0-alpha07

Ngày 12 tháng 8 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha07. Phiên bản 1.1.0-alpha07 bao gồm các thay đổi sau.

Thay đổi về API

  • Khắc phục tình trạng giảm hiệu suất ảnh hưởng đến các cọ hạt dày đặc, cập nhật hằng số Brush.Version dựa trên ý kiến phản hồi về API (I87f0f)

Phiên bản 1.1.0-alpha06

Ngày 29 tháng 7 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm các phương thức calculateMinimumRequiredVersion vào API cho các kiểu phụ BrushFamily. (I338c9)
  • Hiển thị các trường thành phần AffineTransform (Ic2ec3)
  • Khắc phục tình trạng rò rỉ bộ nhớ trong InProgressStrokesView, cải thiện các hiện tượng giả về hình ảnh của công cụ xoá nét vẽ một phần thử nghiệm, cải thiện cách biểu thị protobuf cho các lớp hoạ tiết cọ vẽ tuỳ chỉnh (I6ff86)
  • Thêm hàm khởi tạo khởi động cho MutableAffineTransform (để khớp với ImmutableAffineTransform) (I96ec7)
  • Thêm InProgressStroke.clear (Ie0032)
  • Thêm các phương thức toImmutable vào cấu trúc dữ liệu có các lớp con có thể thay đổi và không thể thay đổi (I53835)
  • Di chuyển KMP (Icbf38, b/521850119, b/534309122)

Sửa lỗi

  • Thêm tính năng hỗ trợ cho việc quản lý phiên bản cọ vẽ và ảnh động kết cấu. (Iea9ba)

Phiên bản 1.1.0-alpha05

Ngày 15 tháng 7 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha05. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.

Thay đổi về API

  • Bản phát hành thử nghiệm của loại tẩy mới, còn được gọi là tẩy "một phần nét vẽ", "chỉnh sửa lưới" hoặc tẩy "pixel", giúp chỉnh sửa hình học của nét vẽ và chia nét vẽ thay vì xoá toàn bộ nét vẽ hoặc che nét vẽ bằng màu nền. Các vấn đề đã biết bao gồm việc thiếu tính năng khử răng cưa trên các cạnh bị cắt và không có API chuyển đổi tuần tự để lưu kết quả PartitionedMesh đã xoá. Cả hai vấn đề này sẽ được giải quyết trong các bản phát hành sau này.
  • Thêm chú giải Throws còn thiếu vào StrokeInputBatchSerialization.decode, yêu cầu người dùng Java của phương thức đó cập nhật. (I83473, b/522256938)

Sửa lỗi

  • Khắc phục sự cố gốc do vấn đề về độ chính xác số (I2e1f0, 6618e69, b/523190724)
  • Loại bỏ các phần đùn thoái hoá trong BrushTipExtruder (469b629)
  • Sửa RejectedExecutionException trong InProgressStrokesView (b/526696762)

Phiên bản 1.1.0-alpha04

Ngày 17 tháng 6 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha04. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.

Thay đổi về API

  • Khắc phục các vấn đề về độ chính xác của số thực dẫn đến hiện tượng giả tạo về hình ảnh trong các nét vẽ đã hoàn thành, ảnh hưởng đến một số thiết bị sau khi nâng cấp hệ điều hành

  • Thêm API KMP-common cho mô-đun lưu trữ (chuyển đến/từ ByteArray thay vì Java InputStream/OutputStream).

  • Thêm một thuộc tính BrushBehavior.developerComment để lưu trữ siêu dữ liệu giải thích thiết kế của một họ cọ tuỳ chỉnh. Điều này nhằm hỗ trợ giao diện người dùng Brush Designer.

  • Khắc phục một lỗi trong các bước kiểm tra tính nhất quán của luồng trong CanvasInProgressStrokesRenderHelperV33.

  • Khắc phục một số lỗi trong việc xử lý các trường không bắt buộc MotionEvent (ví dụ: độ nghiêng, áp suất).

  • Cải thiện tài liệu cho API cọ vẽ tuỳ chỉnh.

  • Thêm các loại BrushPaint.ColorFunction mới.

Phiên bản 1.1.0-alpha03

Ngày 19 tháng 5 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha03. Phiên bản 1.1.0-alpha03 bao gồm các thay đổi sau.

Thay đổi về API

  • Công khai API tuỳ chỉnh Bút vẽ mực theo chương trình (I8e2e1)
  • Chia BrushPaint.TextureLayer thành các lớp con cụ thể hơn (I8848a)

Phiên bản 1.1.0-alpha02

Ngày 22 tháng 4 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha02. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.

Thay đổi về API

  • Hiển thị một phương thức nạp chồng của BrushFamily.decode chỉ định khả năng tương thích tối đa với phiên bản (I1c7bc)
  • Nâng cấp API tuần tự hoá BrushFamily từ thử nghiệm (Idd16e)

Sửa lỗi

  • Khắc phục hiện tượng nhấp nháy khi sử dụng InProgressStrokesView.maskPath trên một số thiết bị (I1c7bc, b/496920044)

Phiên bản 1.1.0-alpha01

Ngày 11 tháng 3 năm 2026

Phát hành androidx.ink:ink-*:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Sửa một số lỗi nhỏ

Thay đổi về API

  • Thêm InProgressShape.isCanceled, khắc phục các vấn đề về tính đồng thời trong mô-đun soạn thảo. (Ibfd32, b/474385518, b/470695777)
  • Hiển thị phiên bản không có đối số của CanvasStrokeRenderer.createInProgressStroke.updateShape cho Java (Id80a1, b/457715938)

Sửa lỗi

  • Khắc phục một lỗi gây ra sự cố trong InProgressStrokesView sau khi tách/đính kèm lại từ cửa sổ cho API 29-32, cho phép các thao tác Vec lấy cùng MutableVec làm đầu vào và đầu ra, hợp nhất các cấu hình Proguard thành một tệp. (Ia4da0)
  • Tăng mức độ phụ thuộc vào graphics-core lên 1.0.4 (Ibfa18)

Phiên bản 1.0

Phiên bản 1.0.0

Ngày 17 tháng 12 năm 2025

Phát hành androidx.ink:ink-*:1.0.0. Phiên bản 1.0.0 bao gồm các thay đổi sau.

Sửa lỗi

  • Tăng phần phụ thuộc vào graphics-core lên 1.0.4 (Ibfa18)

Phiên bản 1.0.0-rc01

Ngày 3 tháng 12 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-rc01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Cập nhật phiên bản phần phụ thuộc. (Iecd04)

Phiên bản 1.0.0-beta02

Ngày 19 tháng 11 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-beta02. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.

Thay đổi về API

  • API hình dạng tuỳ chỉnh có độ trễ thấp (thử nghiệm), sửa nhiều lỗi (Ib8d2f)

Sửa lỗi

  • Cải thiện độ chính xác của dấu phẩy động trên quá trình chuyển đổi tuần tự StrokeInputBatch, khắc phục sự sai lệch về giá trị do mã hoá và giải mã lặp lại
  • Hệ thống làm sạch dữ liệu đầu vào mạnh mẽ hơn.
  • Khắc phục vấn đề về tính năng hỗ trợ kết cấu nét vẽ của cọ trong thành phần kết hợp InProgressStrokes

Phiên bản 1.0.0-beta01

Ngày 22 tháng 10 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Các bản sửa lỗi để chuẩn bị cho bản phát hành beta01 (I9900e)
  • Giảm hiện tượng kết xuất giả tạo trong các nét vẽ do có quá nhiều đầu vào được mô hình hoá quá gần nhau.
  • Khắc phục một sự cố hiếm gặp trong quá trình mô hình hoá dữ liệu đầu vào.

Phiên bản 1.0.0-alpha07

Ngày 8 tháng 10 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-alpha07. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.

Tính năng mới

  • Tham số SelfOverlap cho StockBrushes highlighteremojiHighlighter, thay thế InProgressStrokesView rendererFactory
  • Cải thiện việc triển khai tính năng làm mượt dữ liệu đầu vào bằng nét bút, giúp loại bỏ nhiễu đo lường của thiết bị nhưng phản ánh chính xác hơn hoạt động đầu vào của người dùng so với việc triển khai tính năng làm mượt dữ liệu đầu vào bằng nét bút trước đó
  • Cải thiện tính nhất quán với các API Android/Jetpack khác cho các đơn vị góc (độ so với radian), các phép biến đổi (độ lệch so với độ nghiêng) và nhiều API khác

Thay đổi về API

  • Thay đổi API liên quan đến góc để sử dụng độ và thêm đơn vị vào tên, làm rõ các đơn vị trong tiện ích chuyển đổi Góc và hỗ trợ cả độ và radian, thay đổi API StockBrushes để lấy phiên bản cọ vẽ có sẵn làm tham số hàm ở trạng thái ban đầu và hiển thị chế độ kiểm soát hành vi tự chồng chéo cho cọ vẽ đánh dấu, đổi tên MutableAffineTransform.populateFromTranslate thành populateFromTranslation, xoá InProgressStrokesView.setRenderFactory/getRenderFactory. (Id9eab, b/436656418)
  • Đổi tên thao tác cắt thành thao tác làm xiên, làm rõ một số tài liệu, xoá CanvasStrokeRenderer.strokeModifiedRegionOutsetPx, thêm InProgressStroke.changesWithTime (Ia5e70, b/436656418)

Sửa lỗi

  • Cải thiện việc lập mô hình dữ liệu đầu vào để các nét vẽ phản ánh chính xác hơn dữ liệu đầu vào. (I93097)

Phiên bản 1.0.0-alpha06

Ngày 13 tháng 8 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.

Tính năng mới

  • Cọ đánh dấu bằng biểu tượng cảm xúc: Đánh dấu các phần của tài liệu bằng bất kỳ biểu tượng cảm xúc nào bạn chọn để thêm nét thú vị và giúp bạn sắp xếp gọn gàng.
  • Nhiều API trợ giúp hơn cho các hình dạng cơ bản của mô-đun hình học
  • Cải thiện khả năng tương thích và hiệu suất của thiết bị

Thay đổi về API

  • Đơn giản hoá API cho InProgressStrokesView, hoàn tất các API hình học, công cụ đánh dấu biểu tượng cảm xúc, xoá các hàm gốc khỏi MutableParallelogram để chuyển sang các phương thức điền sẵn, hỗ trợ giá trị ban đầu cho các hành vi ngẫu nhiên của bút vẽ. (I38280)

Sửa lỗi

  • Khắc phục vấn đề về hiệu suất và vấn đề về tính nhất quán của màu khi ướt/khô. (Ifcd1d)

Phiên bản 1.0.0-alpha05

Ngày 18 tháng 6 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-alpha05. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.

Tính năng mới

  • Soạn các mô-đun tương tác cho mô-đun tác giả, cọ vẽ và hình học

Thay đổi về API

  • Các API và mô-đun mới có khả năng tương tác với Compose, dọn dẹp API (I0e464)
  • Các phương thức InProgressStroke.enqueueInputs/updateShape trả về kotlin.Result sẽ bị xoá, thay vào đó, các ứng dụng nên dùng enqueueInputsOrThrow hoặc enqueueInputsOrIgnore. Đổi tên InProgressStroke.getNeedsUpdate thành isUpdateNeeded. InProgressStroke.populateOutlinePosition hiện trả về tham số đầu ra để cho phép liên kết lệnh gọi, nhất quán với các phương thức khác trong Ink. Giao diện TextureBitmapStore được di chuyển từ mô-đun kết xuất sang mô-đun cọ vẽ. BoxAccumulator.populateFrom được tạo để lấy một Box không thể thay đổi có thể rỗng thay vì BoxAccumulator có thể thay đổi. Để biết rõ hơn về những gì bị thay đổi, người gọi nên thay đổi boxAccumulator.add(other) thành boxAccumulator.add(other.box). BrushUtil.toBuilderWithAndroidColor/createBuilderWithAndroidColor sẽ bị xoá, thay vào đó, hãy dùng setAndroidColor của Brush.Builder sau khi tạo. (Ia7155)
  • Thuộc tính thử nghiệm InProgressStrokesView.textureBitmapStore trước đây hiện ở chế độ riêng tư. Vẫn còn các đối tượng truy cập công khai cho tài sản này. (I1d706)

Sửa lỗi

  • Cải thiện hiệu suất cho các cọ tuỳ chỉnh chứa nhiều hạt.

Phiên bản 1.0.0-alpha04

Ngày 9 tháng 4 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-alpha04. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Giới thiệu các API thử nghiệm mới cho các đối tượng BrushFamily tuỳ chỉnh, cho phép dùng các cọ vẽ mới như Bút chì và Bút chỉ. API này cho phép tải các cọ vẽ do giao thức này xác định. (I8809a)

Phiên bản 1.0.0-alpha03

Ngày 12 tháng 2 năm 2025

Phát hành androidx.ink:ink-*:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Tiết kiệm dung lượng ổ đĩa và mạng: Việc chuyển đổi tuần tự StrokeInputBatch giúp tiết kiệm nhiều dòng mã, với các đối tượng kết quả chỉ chiếm một phần nhỏ so với kích thước của các nét vẽ được lưu trữ theo cách truyền thống. (Ie898d)
  • Chọn bằng công cụ lasso: cọ nét đứt để vẽ nét chọn và một chức năng để chuyển nét chọn thành PartitionedMesh cho các truy vấn hình học. (Ia38a0)

Phiên bản 1.0.0-alpha02

Ngày 11 tháng 12 năm 2024

Phát hành androidx.ink:ink-*:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Thay đổi về API

  • Sửa một số lỗi. (I05dd8)

Đóng góp bên ngoài

  • Ngừng sử dụng BuildCompat.isAtLeastV. Thay vào đó, người gọi nên kiểm tra SDK_INT trực tiếp với 35. (I294d1)

Phiên bản 1.0.0-alpha01

Ngày 2 tháng 10 năm 2024

Phát hành androidx.ink:ink-*:1.0.0-alpha01. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Một thư viện theo mô-đun và có thể định cấu hình để giúp bạn dễ dàng tạo, kết xuất và thao tác với các nét mực đẹp mắt được tạo trong ứng dụng của mình.

Thay đổi về API

Các mô-đun mới giúp nhà phát triển tạo ra trải nghiệm viết tay phong phú:

  • Tạo nội dung: Sử dụng InProgressStrokesView để kết xuất nét vẽ theo thời gian thực với hiệu suất cao và độ trễ thấp khi nhận được dữ liệu đầu vào.
  • Kết xuất: Sử dụng CanvasStrokeRendererViewStrokeRenderer để vẽ các nét mực đã hoàn tất trong giao diện người dùng của ứng dụng.
  • Nét vẽ: Các kiểu dữ liệu cốt lõi được dùng cho các tính năng viết tay.
  • Cọ vẽ: Quy cách có thể định cấu hình về cách các nét vẽ sẽ xuất hiện và hoạt động để phản hồi hoạt động đầu vào của người dùng.
  • Hình học: Các thao tác hình học như giao điểm và phạm vi để hỗ trợ các công cụ như chọn và xoá.