我有一个圆形布局,此布局中有“n”个按钮。我在活动开始时在该布局上开始动画。
当我点击任何按钮时,动画应该停止,并出现一个对话框,显示消息“你已经点击了这个'XYZ'按钮”。
我正在使用的代码:
animation = AnimationUtils.loadAnimation(this, R.anim.rotate);
animation.setFillEnabled(true);
animation.setFillAfter(true);
findViewById(R.id.circle_layout).startAnimation(animation);
和动画XML:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="15000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="360" >
答案 0 :(得分:1)
android中的动画中没有pause
。我在StackOverflow上检查了很多与此相关的问题,但没有运气。您仍然可以尝试使用此link暂停Activity
本身,这可能有所帮助。
该链接指出以下内容:
暂停您的活动
当系统为您的活动调用onPause()时,它在技术上意味着您的活动仍然部分可见,但大多数情况下表明用户正在离开活动并且很快将进入Stopped状态。您通常应该使用onPause()回调:
答案 1 :(得分:1)
发布没有暂停。但你可以模仿它。
这个答案对我有用: How do I pause frame animation using AnimationDrawable?
public class PausableAlphaAnimation extends AlphaAnimation {
private long mElapsedAtPause=0;
private boolean mPaused=false;
public PausableAlphaAnimation(float fromAlpha, float toAlpha) {
super(fromAlpha, toAlpha);
}
@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;
}
}
请注意:这在技术上并不是“暂停”动画,因为它会不断调用转换。但是可以保持持久的转变,“模仿”相同的功能。
我用RotateAnimation尝试了这个并且工作得很好。但是,当它取消动画时“暂停”时,它不会降低CPU /帧速率。
答案 2 :(得分:0)
没有很好的方法可以在周期中暂停动画。
您可以将RotateAnimation子类化并拦截getTransformation
中的currentTime值,并在您希望暂停动画的同时将其同时输入。
如果您只能支持HC +,那么您应该考虑使用属性动画而不是查看动画。