API 參考:StreamAsset
StreamAsset 代表一個可隨機存取、唯讀的資料流。通常用於載入字型資料或其他需要隨機存取的資源。
概述
StreamAsset 提供在位元組流中讀取、跳過和定位的方法。它是一個「受管理」的物件,意味著 Skija 會處理原生記憶體的清理。
方法
讀取
read(buffer, size):讀取最多size個位元組到提供的位元組陣列中。返回實際讀取的位元組數。peek(buffer, size):窺視資料而不推進流的位置。isAtEnd():如果流已到達結尾,則返回true。
導航
skip(size):跳過指定數量的位元組。rewind():將流位置移回開頭。seek(position):定位到特定的絕對位置。move(offset):按相對偏移量移動位置。
資訊
getPosition():返回流中當前的位元組偏移量。getLength():返回流的總長度(如果已知)。hasPosition():如果流支援定位/位置操作,則返回true。hasLength():如果長度已知,則返回true。getMemoryBase():如果流是基於記憶體的,則返回原生記憶體位址。
複製
duplicate():建立一個新的StreamAsset,它共享相同的資料但具有獨立的位置。fork():類似於 duplicate,但新流從原始流的當前位置開始。
在排版中的使用
StreamAsset 最常在處理 Typeface 資料時遇到:
java
Typeface typeface = Typeface.makeFromFile("fonts/Inter.ttf");
StreamAsset stream = typeface.openStream();
if (stream != null) {
byte[] header = new byte[4];
stream.read(header, 4);
// ... 處理字型資料
}