Skip to content

Latest commit

 

History

History
93 lines (65 loc) · 3.17 KB

fetcher_zh.md

File metadata and controls

93 lines (65 loc) · 3.17 KB

Fetcher

翻译:English

Fetcher 用于从 uri 获取数据,返回 FetchResult,交由 BitmapDecoderDrawableDecoder 使用。

Sketch 对支持的每一种 uri 都有对应的 Fetcher 实现,共有如下几种:

扩展新的 Fetcher

首先需要实现 Fetcher 接口定义你的 Fetcher 和它的 Factory,如下:

class MyFetcher : Fetcher {

    override suspend fun fetch(): Result<FetchResult> {
        // 在这里解析你的 uri,获取数据
    }

    companion object {
        const val MY_SCHEME = "myUri"
    }

    class Factory : Fetcher.Factory {

        override fun create(sketch: Sketch, request: ImageRequest): MyFetcher? {
          return if (request.uriString.startWith("$MY_SCHEME://")) {
                MyFetcher()
            } else {
                null
            }
        }
    }
}

然后通过 addFetcher 方法注册,如下:

/* 为所有 ImageRequest 注册 */
class MyApplication : Application(), SketchFactory {

    override fun createSketch(): Sketch {
        return Sketch.Builder(this).apply {
            components {
                addFetcher(MyFetcher.Factory())
            }
        }.build()
    }
}

/* 为单个 ImageRequest 注册 */
imageView.displayImage(context, "myUri://sample.jpeg") {
    components {
        addFetcher(MyFetcher.Factory())
    }
}