我正在制作一个中文字典应用程序,可以显示用户的汉字笔画顺序动画。我使用MakeMeAHanzi作为源代码,可以用来为笔画顺序动画生成动画SVG。一个SVG代表一个汉字。使用相同的概念,我生成了动画矢量绘图。
目前,我的安卓应用程序包含9000+动画矢量绘图,需要很长时间才能构建。我还得到了只在添加9000+动画矢量绘图时才会发生的错误:
等待com.google.common.util.concurrent.SettableFuture@72771445status=PENDING 10分钟(外加203200纳秒的延迟)
我已经考虑过使用GIF并从扩展文件中加载它,但是我真的很想拥有分辨率无关的优势。我尝试过从扩展文件中加载动画向量绘图,但是,除非我将其预编译为二进制XML,否则我似乎无法将.xml从文件系统加载为可绘制文件,而且我认为这将是我的最后一招,因为我仍然不确定如何实现这一点,因为我无法构建APK (我可以从APK中提取预编译的二进制XML )。
我想请问是否有更有效的方法来处理大量的矢量绘图或其他替代方法来处理这种情况?谢谢。
发布于 2020-06-14 04:04:57
我已经设法解决了漫长的编译时间问题,为了防止任何人偶然发现这篇文章,我将在这里发布我的解决方案。
显然,9000+ AnimatedVectorDrawable不是问题所在。问题是,我使用内联复杂XML资源方法来创建AnimatedVectorDrawable。在我的每个AnimatedVectorDrawable中都包含多个VectorDrawables和ObjectAnimators。这意味着,即使只有一个AnimatedVectorDrawable XML文件,AAPT工具也将为VectorDrawables和ObjectAnimators创建多个XML,这也意味着我的结果远远超过9000+ AnimatedVectorDrawables。这就是编辑时间长的原因。
因此,我最终创建了VectorDrawables,并创建了一个类来在运行时处理ObjectAnimators。但是,为了实现这一点,我必须使用Java技术来访问VectorDrawable中的私有VectorDrawable函数,以获得ObjectAnimators的目标对象,并在运行时使用线程中的VectorDrawable的invalidateSelf函数来更新VectorDrawable。
https://stackoverflow.com/questions/62243828
复制相似问题