public class MainActivity extends Activity{
public static Runnable StartRun;
private ImageView Player;
protected void onCreate(){
...
Player = (ImageView) findViewById(R.id.imgStart);
StartRun = new Runnable(){
@Override
public void run() {
Player.setBackgroundResource(R.drawable.loadanimation); //XML animationlist
AnimationDrawable frameanimation = (AnimationDrawable)
Player.getBackground();
frameanimation.start();
}
};
}
}
public class RadioPlayer extends Service{
Handler handle;
public void onCreate(){
handle = new Handler();
}
public int onStartCommand(Intent intent, int flags, int startId) {
handle.post(MainActivity.StartRun);
if (intent.getBooleanExtra(ACTION_PLAY, false)) {
play();
}
return Service.START_STICKY;
}
}
我已经在onCreate()中直接测试了代码的AnimationDrawable部分,所以它确实有效。 我已经使用Logcat确认StartRun,run()被调用,&我也试图从方法内部定义imageview,因为不要像目前那样使用全局。
仍然没有雪茄。有人可以帮忙吗?
更新: 似乎存在一个潜在的问题,即将此问题归结为错误。我已经在runnable线程之外成功执行了animationDrawable代码,即直接在活动上(证明动画确实有效,但对我自己来说是不切实际的),我尝试使用localbroadcastReceiver,以及处理程序等 没有这些非直接活动方法是成功的,我完全没有想法。
由于时间不够,我只想用一个简单的progressdialog替换帧动画代码。它在某种程度上达到了目的,但它是一个需要在几个月内再次解决的生产解决方案。如果有人有同样的问题并且可以阐明这个问题,请发表评论/发表
答案 0 :(得分:0)
我认为您应该在onWindowFocusChanged方法上开始动画,因为它是了解活动是否对用户可见的最佳位置。代码中的runnable仅用于显示我假设的动画。这样的事情应该有效:
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus)
{
Player.setBackgroundResource(R.drawable.loadanimation); //XML animationlist
AnimationDrawable frameanimation = (AnimationDrawable) Player.getBackground();
frameanimation.start();
}
}