我正在尝试做一些非常基本的事情。我只是尝试在单击按钮时从Android应用程序的xml资源文件中运行简单的补间动画。运行应用程序时,动画不会启动。我很想弄清楚原因。
这是res / anim / spin.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:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="360" />
</set>
这是我的活动课程:
package jorge.jorge.jorge;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
public class Assignment5Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button btnSpin = (Button) findViewById(R.id.button1);
btnSpin.setText("Start");
btnSpin.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
ImageView iv = (ImageView) findViewById(R.id.imageView1);
Animation an = AnimationUtils.loadAnimation(Assignment5Activity.this, R.anim.spin);
iv.startAnimation(an);
if (an.hasStarted())
{
btnSpin.setText("Stop");
}
else
{
iv.startAnimation(an);
}
}
} );
}
}
答案 0 :(得分:0)
试试这个
final ImageView iv = (ImageView) findViewById(R.id.imageView1);
Animation an = AnimationUtils.loadAnimation(Assignment5Activity.this, R.anim.spin);
btnSpin.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
iv.startAnimation(an);
if (an.hasStarted())
{
btnSpin.setText("Stop");
}
else
{
iv.startAnimation(an);
}
}
} );
答案 1 :(得分:0)
使用 RotateAnimation ,将轴心点设置为图像的中心。
RotateAnimation anim = new RotateAnimation(0f, 350f, 15f, 15f);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(700);
// Start animating the image
final ImageView iv = (ImageView) findViewById(R.id.imageView1);
iv.startAnimation(anim);
// Later.. stop the animation
iv.setAnimation(null);
答案 2 :(得分:0)
解决方案:
spin.xml 与xml保持一致
在按钮OnClickListener
中运行此代码。
ImageView iv = (ImageView) findViewById(R.id.imageView1);
Animation an = AnimationUtils.loadAnimation(Assignment5Activity.this, R.anim.spin);
iv.startAnimation(an);
答案 3 :(得分:0)
为动画提供持续时间。我相信默认情况下它是0(与默认情况下约为300毫秒的属性动画相反)。
此外,您可以使用NineOldAndroids将优秀的ViewPropertyAnimator方法向后移植到预蜂窝。
答案 4 :(得分:0)
您是否尝试过将android:toDegrees从360改为359?对于android,0度与360相同,因为数字序列从0开始而不是1.所以基本上,当前设置为360,告诉它从0度到360度就像告诉它保持不变。
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="359" />