我正在尝试在片段中运行动画矢量。首先,我尝试将可绘制资源传递给片段,然后将其设置为背景,并启动从背景创建的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"
}
}