无法在Fragment中使用AnimatedVectorDrawable

时间:2019-02-28 14:32:13

标签: android android-fragments vector-graphics animatedvectordrawable

我正在尝试在片段中运行动画矢量。首先,我尝试将可绘制资源传递给片段,然后将其设置为背景,并启动从背景创建的AnimatedVectorDrawable对象。它仅显示静态背景,没有动画。或者,我在片段的布局资源中设置背景资源,然后从片段代码中的背景创建一个AnimatedVectorDrawable,然后启动AVD。同样,结果是相同的:没有动画。

我还尝试将动画传递给UI线程来运行(以防片段使用其他线程)。同样,没有成功。

根据Android Developers,从API 25开始,矢量动画在RenderThread上运行。我不确定是否有片段无法启动动画。

我的片段代码如下:

class AvdFragment : Fragment() {
    /**
     * AVD resource file passed to this fragment to be animated
     */
    private var mAvdResource: Int = 0;

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_avd, container, false)
    }


    override fun setArguments(args: Bundle?) {
        super.setArguments(args)
        mAvdResource = args!!.getInt(AVD_RES)
    }

    private val LOG_TAG = javaClass.name

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)



            val root = activity!!.findViewById<ViewGroup>(R.id.fragment_root)

            root.setBackgroundResource(mAvdResource)

            val avd = root.background as AnimatedVectorDrawable

            avd.start()




    }

    companion object {
        val AVD_RES = "avd_resource"
    }
}

0 个答案:

没有答案