设有如下定义的动画。相关问题列在代码里。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
layoutImg=(FrameLayout)findViewById(R.id.layoutimg);
animtest=AnimationUtils.loadAnimation(this, R.anim.animtest);
playMusic=(ImageButton)findViewById(R.id.playmusic);
playMusic.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
boolean flag=animtest.hasStarted(); //hasStarted()自从layoutImg.startAnimation后就一直返回true
Log.d(TAG, "play button clicked:"+flag);
if(!flag&&layoutImg!=null){
updateBtnView(true);
layoutImg.startAnimation(animtest);
Log.d(TAG, "play");
}else{
updateBtnView(false);
/*Question:
* 1、clearAnimation可以停止动画,但不是暂停,也就是说动画会回到起点,而不是停在当前旋转的角度。
* 2、clearAnimation后,animtest.hasStarted()仍然返回的true,请问怎样才能让它返回false?
*/
layoutImg.clearAnimation();
/*
* 以下两者皆无效
*/
// animtest.reset();
// animtest.cancel();
Log.d(TAG, "pause");
}
}
});
}
然后,动画定义如下。toDegrees设置过不同值。每次转完一圈后,总会有些停顿,不能做得无缝的流畅的那种效果。
<rotate android:fromDegrees="0" android:toDegrees="355" android:pivotX="50%" android:pivotY="50%" android:startOffset="0" android:repeatCount="-1" android:interpolator="@android:anim/linear_interpolator" android:duration="4000"/>
方案推荐指数:20
ObjectAnimator rot = ObjectAnimator.ofFloat(toggleButton, "rotation", 0, 359); rot.setInterpolator(new LinearInterpolator()); rot.setDuration(4000); rot.setRepeatCount(-1); rot.start()
;
方案推荐指数:20
问题1:你确定有看它的api吗?有pause方法,它停止就是这个,不需要stop。
问题2:停止当前角度,你可以去看api,找符合你的方法。是滞启动,它的api也有提供isStart方法。
问题3:没用过,所以,代码给你了,你就要去看它的api。