API リファレンス: StreamAsset
StreamAsset は、シーク可能な読み取り専用のデータストリームを表します。ランダムアクセスが必要なフォントデータやその他のリソースの読み込みによく使用されます。
概要
StreamAsset は、バイトストリーム内での読み取り、スキップ、シークのためのメソッドを提供します。これは「Managed」オブジェクトであり、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(): 複製と似ていますが、新しいストリームは元のストリームの現在位置から開始します。
タイポグラフィでの使用
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);
// ... フォントデータを処理
}