我有问题,我的动画不是第二次按下按钮时应用。我使用过this库。我希望用动画旋转图像。但问题是它只能工作一次。
这是我点击按钮的代码
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewAnimator.animate(imageView)
.rotation(rotationAngle).duration(1000)
.repeatMode(ValueAnimator.RESTART)
.start();
if(rotationAngle==360)
{
rotationAngle=180;
}
else
{
rotationAngle += 180;
}
}
});
使用下面的代码工作正常,我也测试过
public class MainActivity extends AppCompatActivity {
private int rotationAngle = 180;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv = (TextView) findViewById(R.id.tv_testing);
findViewById(R.id.btn_click).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewAnimator.animate(tv)
.rotation(rotationAngle).duration(1000)
.repeatMode(ValueAnimator.RESTART)
.start();
if(rotationAngle==360)
{
rotationAngle=180;
}
else
{
rotationAngle += 180;
}
}
});
}
}
希望对你也有帮助
我测试了这段代码,看起来它运行正常。如果您想要始终按顺时针方向旋转图像,请尝试下一步:初始化rotationAngle的默认值
private float rotationAngle=179.99f;
.99f - 因为360度是0度,你需要更少的旋转方向相同
然后设置onClickListener:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewAnimator.animate(imageView)
.rotation(rotationAngle).duration(1000)
.repeatMode(ValueAnimator.RESTART)
.start();
if(rotationAngle>=360)
{
rotationAngle=179.99f;
}
else
{
rotationAngle += 180;
}
}
});
你得到这个,因为你使用过
ViewAnimator.animate(imageView)
.rotation(rotationAngle).duration(1000)
你应该用
ViewAnimator.animate(imageView).rotationBy(rotationAngle)....
它只运行一次的原因是,如果你使用旋转,它将旋转到旋转的程度(对于你的情况为180),因为创建的活动而不是当前位置。