我有一个应用程序需要在开始时将很多SVG转换为Drawables,并使用svg-android的变体。如何在后台线程处于活动状态时保持动画运行?
我遇到的问题是转换相当处理器密集型,所以如果我在UI线程上运行它,所有事情都会在发生时暂停10秒左右。我尝试将转换移动到后台线程,但这会导致一些怪异现象,因为在所有Drawable完成之前,依赖于Drawable数组的其他方法会触发。我已经尝试了几个不同的事情来完成加载动画,但是在后台进程处于活动状态时它们不会动画。
这里是我的相关代码:
//get and resize SVGs
new Thread(new Runnable(){
public void run(){
for (int i=0;i<drawablesArray.length;i++){
SVG vector = SVGParser.getSVGFromResources(getResources(),resourceArray[i]);
Drawable drawable = new PictureDrawable(vector.resizePicture(height,width); //resize picture is a custom function in SVG-Android
drawablesArray[i]=drawable;
}
}
}).start();
while(drawablesArray[20]==null){
loadingView.animate().setDuration(100).rotationBy(25);
}
与该代码,直到后台进程完成后,将成功地抵挡来自烧制后的方法,但在while
循环动画将永远不会真正发挥。我也尝试使用不确定的ProgressBar
来加载视图,无论是否带有while
循环(更改为实际上不做任何操作),并且它会动画直到后台线程启动,此时它将冻结。
如果我参加了动画代码的存在了while
循环,动画会火后后台线程完成,不能同时与后台线程。
如何在后台线程运行时保持动画正在运行?