Я пытаюсь запустить анимированный вектор внутри фрагмента.Сначала я попытался передать извлекаемый ресурс во фрагмент, а затем установить его в качестве фона и запустить объект AnimatedVectorDrawable, созданный из фона.Он показывал только статический фон без анимации.В качестве альтернативы я устанавливаю ресурс фона в ресурсе макета фрагмента, а затем создаю AnimatedVectorDrawable из фона в коде фрагмента и запускаю AVD.Опять же, результат был тот же: без анимации.
Я также попытался передать анимацию в поток пользовательского интерфейса для запуска (на случай, если фрагменты используют другой поток).Опять безуспешно.
По словам разработчиков Android , начиная с 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"
}
}