相关疑难解决方法(0)

是否有可能让新的ImageDecoder类手动返回一个接一个的Bitmaps?

背景

我试图手动(逐帧)查看动画GIF和WEBP文件的位图,这样它不仅可以用于视图,还可以用于其他情况(例如动态壁纸).

问题

仅使用ImageDecoder API(此处为示例)从Android P支持动画GIF/WEBP文件.

对于GIF,我想尝试滑翔的任务,但我失败了,所以我试图克服这一,通过使用一个库,允许(加载它们在这里,解决方案在这里).我认为它运作正常.

对于WebP,我以为我找到了另一个可以在较旧的Android版本上运行的库(这里,在这里制作了fork ),但似乎在某些情况下它无法很好地处理WebP文件(在此报道).我试图弄清楚问题是什么以及如何解决,但我没有成功.

因此,假设有一天谷歌将通过支持库支持旧版Android的GIF和WEBP动画(他们在这里),我决定尝试使用ImageDecoder来完成任务.

事实上,在ImageDecoder的整个API中,我们应该如何使用它.我不知道如何克服其局限性.

我发现了什么

这就是ImageDecoder如何用于在ImageView上显示动画WebP(当然,这里只有一个示例):

class MainActivity : AppCompatActivity() {
    @SuppressLint("StaticFieldLeak")

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val source = ImageDecoder.createSource(resources, R.raw.test)
        object : AsyncTask<Void, Void, Drawable?>() {
            override fun doInBackground(vararg params: Void?): Drawable? {
                return try {
                    ImageDecoder.decodeDrawable(source)
                } catch (e: Exception) {
                    null
                }
            }

            override fun onPostExecute(result: Drawable?) {
                super.onPostExecute(result) …
Run Code Online (Sandbox Code Playgroud)

android animated-gif imagedecoder animated-webp

17
推荐指数
1
解决办法
1325
查看次数