首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AnimatedVectorDrawable支持< 24

AnimatedVectorDrawable支持< 24
EN

Stack Overflow用户
提问于 2020-10-07 05:09:41
回答 2查看 235关注 0票数 0

我在“绘图”文件夹中有一个动画向量可绘制资产。我使用下面的代码在单击按钮上运行它

代码语言:javascript
复制
val myVectorDrawable = ResourcesCompat.getDrawable(
            resources,
            R.drawable.animation,
            theme
        )


        button.setOnClickListener {
            image.setImageDrawable(null)
            image.setImageDrawable(myVectorDrawable)

            val drawable = image.drawable

            if (drawable is AnimatedVectorDrawableCompat) {
                drawable.start()
            } else if (drawable is AnimatedVectorDrawable)
                drawable.start()

        }

如果设备运行android版本> 24,否则就会崩溃,这将完美地运行。我需要用最低限度的SDK 21支持android设备。

我的问题是

如何将我的代码支持设备与24.

  • is连接到
  1. --运行AnimatedVectorDrawable动画

的更好方法

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-07 05:34:34

如果您知道您使用的是动画向量,则可以使用AnimatedVectorDrawableCompat.create()创建在所有API 14+设备上可用的AnimatedVectorDrawableCompat实例:

代码语言:javascript
复制
val drawable = AnimatedVectorDrawableCompat.create(
    this, // your Context
    R.drawable.animation)

button.setOnClickListener {
    image.setImageDrawable(null)
    image.setImageDrawable(drawable)

    drawable.start()
}

但是,如果您想要一种更通用的方法,则必须使用AppCompatResources.getDrawable()而不是ResourcesCompat.getDrawable(),因为它以与所有API级别兼容的方式正确地考虑了VectorDrawableCompatAnimatedVectorDrawableCompatAnimatedStateListDrawableCompat类:

代码语言:javascript
复制
val drawable = AppCompatResources.getDrawable(
    this, // your Context
    R.drawable.animation)

button.setOnClickListener {
    image.setImageDrawable(null)
    image.setImageDrawable(drawable)

    if (drawable is Animatable) {
        drawable.start()
    }
}
票数 2
EN

Stack Overflow用户

发布于 2020-10-07 05:37:32

您是否将构建配置为使用支持库实现?

https://developer.android.com/guide/topics/graphics/vector-drawable-resources#vector-drawables-backward-solution

android { defaultConfig { vectorDrawables.useSupportLibrary = true }

否则,构建系统将为较低的SDK版本创建回退(非向量)资源,而不是使用支持实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64237583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档