2013-04-29 89 views
0

我试图在活动开始时获得一些动画,特别是应该淡入的一些笑脸,以及另一个imageview和textview。然而,在onCreate中做所有这些都可能导致我的应用程序冻结,所以我试图将所有动画移动到AsyncTask并在创建时执行它。在Asynctask中加载动画

这里就是我所说的动画:

public class Animtask extends AsyncTask<Void, Void, Void> { 
protected Void doInBackground(Void... voids) { 
Animation fadein = AnimationUtils.loadAnimation(this, R.anim.fade); 
_view.startAnimation(fadein); 
_view2.startAnimation(fadein); 
_view3.startAnimation(fadein); 
_view4.startAnimation(fadein); 
_view5.startAnimation(fadein); 
guide.startAnimation(fadein); 
blender.startAnimation(fadein); 
} 
} 

Eclipse中似乎与一切同意,但loadAnimation导致问题出现,这表明,该方法是不适用的论点。任何人都可以一目了然地看到我出现了可怕的错误?如果您认为它是相关的,我会发布任何其他内容。

回答

0
Animation fadein = AnimationUtils.loadAnimation(this, R.anim.fade); 

这里的this关键字是指你已经通过扩展AsyncTask创建Animtask类,但loadAnimation方法要Context类的对象。假设您的活动的类名是MyActivity,你也许可以通过改变上述行解决编译错误

Animation fadein = AnimationUtils.loadAnimation(MyActivity.this, R.anim.fade); 

然而,doInBackground方法在AsyncTask并不想触摸UI线程,所以你当你尝试运行这个AsyncTask时可能会遇到这个错误。真的只是由动画引起的放缓,还是由加载动画的资源(图像)引起的?解决方案可能会将动画调用移动到onPostExecute方法,并在doInBackground方法中加载资源。

+0

老实说,这是更多的测试是否是问题,我会尽快回复你。 – user1398478 2013-04-29 03:57:31

+0

它似乎没有工作,更多的测试表明它可能不是问题,因为textview和imageview都以任何方式冻结了应用程序,所以我必须已经将它们定义为与其他应用程序不同,这可能是问题。 – user1398478 2013-04-29 04:16:41