Android onPause和onResume之后,未在处理程序中执行动画
我已经使用帧动画创建了一个动画,我的每个活动都已从网格视图中调用,我在处理程序中使用帧动画运行动画,问题是在onPause()之后[back button pressed]之后,当打开相同的活动时,动画未被执行,(帧被延迟或卡住)谁能帮我知道我该怎么办Android onPause和onResume之后,未在处理程序中执行动画,android,handlers,Android,Handlers,我已经使用帧动画创建了一个动画,我的每个活动都已从网格视图中调用,我在处理程序中使用帧动画运行动画,问题是在onPause()之后[back button pressed]之后,当打开相同的活动时,动画未被执行,(帧被延迟或卡住)谁能帮我知道我该怎么办 //This My application object from which i m calling handlers imageViewWalrus.setVisibility(View.INVISIBLE); ima
//This My application object from which i m calling handlers
imageViewWalrus.setVisibility(View.INVISIBLE);
imageViewWalrus.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
// TODO Auto-generated method stub
animWalrus = new WalrusAnimation(imageViewWalrus);
if (event.getAction()==MotionEvent.ACTION_DOWN) {
int id=arg0.getId();
if (id==R.id.imageViewWalrus) {
if (!animWalrus.isRunning())
{
//calling handlers
animWalrus.startWalrusAnimation();
}
}
//Music
mainPlayer(R.raw.walrus);
}
return false;
}
});
这是我的处理程序类
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
public class WalrusAnimation {
private static ImageView animImage;
boolean pauseAnim = false;
static int timeCounter = 0;
int timeToRefresh = 180;
static int animImageCount = 9;
public WalrusAnimation(ImageView animImage){
pauseAnim = false;
timeCounter = 0;
WalrusAnimation.animImage = animImage;
}
protected final Handler mHandlerToAnimate = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what == 1){
switch (timeCounter) {
case 0:
//animation images
animImage.setImageResource(R.drawable.walrus1);
break;
case 1:
animImage.setImageResource(R.drawable.walrus2);
break;
case 2:
animImage.setImageResource(R.drawable.walrus3);
break;
case 3:
animImage.setImageResource(R.drawable.walrus1);
break;
case 4:
animImage.setImageResource(R.drawable.walrus2);
break;
case 5:
animImage.setImageResource(R.drawable.walrus3);
break;
case 6:
animImage.setImageResource(R.drawable.walrus1);
break;
case 7:
animImage.setImageResource(R.drawable.walrus2);
break;
case 8:
animImage.setImageResource(R.drawable.walrus3);
break;
default:
animImage.setImageResource(R.drawable.walrus1);
break;
}
if(timeCounter <= (animImageCount-1)){
timeCounter++;
}
}
};
};
private Runnable runnableToAnimate = new Runnable() {
public void run() {
Message msg = new Message();
msg.what = 1;
mHandlerToAnimate.handleMessage(msg);
if(!pauseAnim){
mHandlerToAnimate.postDelayed(this, timeToRefresh);
}
}
};
public void startWalrusAnimation(){
mHandlerToAnimate.post(runnableToAnimate);
}
public void stopWalrusAnimation(){
pauseAnim = true;
if (mHandlerToAnimate != null) {
mHandlerToAnimate.removeCallbacks(runnableToAnimate);
}
}
public boolean isRunning(){
return !pauseAnim;
}
}
导入android.os.Handler;
导入android.os.Message;
导入android.widget.ImageView;
公共级海象动画{
私有静态图像查看动画图像;
布尔pauseAnim=false;
静态整数计时器=0;
int timeToRefresh=180;
静态计数=9;
公共海象动画(ImageView动画图像){
pauseAnim=false;
计时器=0;
WalrusAnimation.animImage=animImage;
}
受保护的最终处理程序mHandlerToAnimate=新处理程序(){
@凌驾
公共无效handleMessage(消息消息消息){
超级handleMessage(msg);
如果(msg.what==1){
开关(计时器){
案例0:
//动画图像
setImageResource(R.drawable.walrus1);
打破
案例1:
setImageResource(R.drawable.walrus2);
打破
案例2:
setImageResource(R.drawable.walrus3);
打破
案例3:
setImageResource(R.drawable.walrus1);
打破
案例4:
setImageResource(R.drawable.walrus2);
打破
案例5:
setImageResource(R.drawable.walrus3);
打破
案例6:
setImageResource(R.drawable.walrus1);
打破
案例7:
setImageResource(R.drawable.walrus2);
打破
案例8:
setImageResource(R.drawable.walrus3);
打破
违约:
setImageResource(R.drawable.walrus1);
打破
}
if(计时器)