我正在使用以下代码来旋转图片视图
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:duration="500"
android:repeatCount="infinite"
android:pivotX="50%"
android:pivotY="50%"
>
</rotate>
</set>
动画rotate1 = AnimationUtils.loadAnimation(this,R.anim.rotate_picture); rotate.startAnimation(rotate1);
我使用的布局是:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/loader"
android:layout_centerInParent="true"
android:id="@+id/rotate"
/>
</RelativeLayout>
但它停止500ms并再次重新启动。但我需要不断旋转图像。不停在中间。我怎么能这样做?
答案 0 :(得分:0)
//custom_anim.xml
<?xml version="1.0" encoding="utf-8" ?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000" />
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000">
</alpha>
<scale
android:pivotX="50%"
android:pivotY="50%"
android:fromXScale=".1"
android:fromYScale=".1"
android:toXScale="1.0"
android:toYScale="1.0"
android:duration="2000" />
</set>
//Oncreate
Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim);
imgageview.startAnimation(rotateimage);
rotateimage.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
AnimateandSlideShow();
}
});
//function
private void AnimateandSlideShow() {
Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim);
imgageview.startAnimation(rotateimage);
rotateimage.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
AnimateandSlideShow();
}
});
}
答案 1 :(得分:0)
我刚尝试过。由于某些奇怪的原因,它使用AccelerateDecelerateInterpolator
作为默认值。添加android:interpolator="@android:anim/linear_interpolator"
,您将获得更有用的功能。
然而,每隔500毫秒仍有一个微小的停顿,我认为它会重新加载动画,或者它有一帧太多(0 = 360)
您可以将值增加更长的持续时间以获得更好的效果。试试android:duration="50000"
和android:toDegrees="36000"
。
答案 2 :(得分:0)
在旋转属性
中添加此属性android:repeatMode="restart"
或者更改您的rotate1.xml文件,删除set tag。像这样:
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:duration="500"
android:repeatCount="infinite"
android:pivotX="50%"
android:pivotY="50%">
</rotate>