Невозможно использовать AnimatedVectorDrawable внутри фрагмента - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь запустить анимированный вектор внутри фрагмента.Сначала я попытался передать извлекаемый ресурс во фрагмент, а затем установить его в качестве фона и запустить объект 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"
    }
}
...