如何暂停和重启机器人的动画? [英] How can i pause and restart an animations in Android?

查看:98
本文介绍了如何暂停和重启机器人的动画?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁能告诉我如何暂停和重启机器人的动画。

动画XML是:

 < XML版本=1.0编码=UTF-8&GT?;
<设置的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:shareInterpolator =假>
    <翻译
        机器人:fromXDelta =500%的Andr​​oid版本:toXDelta =0%
           机器人:fromYDelta =0%安卓toYDelta =0%
           机器人:时间=10000
            机器人:fillAfter =真
              安卓的repeatCount =无限/>
< /集>
 

而code是:

 动画AM = AnimationUtils.loadAnimation(这一点,R.anim.note);
      music1.startAnimation(AM);
 

解决方案

启动动画之后,你只叫暂停和恢复方法。

公共类TranslateAnim扩展TranslateAnimation {

 公共TranslateAnim(浮fromXDelta,浮toXDelta,浮fromYDelta,
            浮动toYDelta){
        超(fromXDelta,toXDelta,fromYDelta,toYDelta);
        // TODO自动生成构造函数存根
    }

    私人长mElapsedAtPause = 0;
    私人布尔mPaused = FALSE;

    @覆盖
    公共布尔getTransformation(长currentTime的,转型outTransformation){
        如果(mPaused&安培;&安培; mElapsedAtPause == 0){
            mElapsedAtPause = currentTime的-getStartTime();
        }
        如果(mPaused)
            setStartTime(currentTime的-mElapsedAtPause);
        返回super.getTransformation(currentTime的,outTransformation);
    }

    公共无效暂停(){
        mElapsedAtPause = 0;
        mPaused = TRUE;
    }

    公共无效简历(){
        mPaused = FALSE;
    }
 

Can anyone please tell me how to pause and restart an animations in Android.

Animation XML is:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:fromXDelta="500%" android:toXDelta="0%"
           android:fromYDelta="0%" android:toYDelta="0%"
           android:duration="10000" 
            android:fillAfter="true"
              android:repeatCount="infinite"/>
</set>

And the code is:

     Animation am=AnimationUtils.loadAnimation(this, R.anim.note);
      music1.startAnimation(am);

解决方案

and after start your animation you have only call pause and resume methods.

public class TranslateAnim extends TranslateAnimation{

    public TranslateAnim(float fromXDelta, float toXDelta, float fromYDelta,
            float toYDelta) {
        super(fromXDelta, toXDelta, fromYDelta, toYDelta);
        // TODO Auto-generated constructor stub
    }

    private long mElapsedAtPause=0;
    private boolean mPaused=false;

    @Override
    public boolean getTransformation(long currentTime, Transformation outTransformation) {
        if(mPaused && mElapsedAtPause==0) {
            mElapsedAtPause=currentTime-getStartTime();
        }
        if(mPaused)
            setStartTime(currentTime-mElapsedAtPause);
        return super.getTransformation(currentTime, outTransformation);
    }

    public void pause() {
        mElapsedAtPause=0;
        mPaused=true;
    }

    public void resume() {
        mPaused=false;
    }

这篇关于如何暂停和重启机器人的动画?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆