Android:ImageView旋转动画只能工作一次

时间:2016-09-23 13:13:44

标签: android

我面临着奇怪的问题 如果我点击图像它是第一次旋转, 如果你再次点击它不会旋转。 我已经使用toast检查控件是否进入函数内部,但是toast一直在打印。

为什么影像不是第二次旋转? 这是我的代码..

MainActivity:

package com.example.sayantan.myapp1;

import android.annotation.TargetApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

ImageView imageView;

public void rotateImage(View view) {
    Toast.makeText(getApplicationContext(), "in rotateImage()...", Toast.LENGTH_SHORT).show();
    imageView.animate().rotation(1800f).setDuration(1500);
//        Toast.makeText(getApplicationContext(), "End of rotateImage()", Toast.LENGTH_SHORT).show();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imageView = (ImageView) findViewById(R.id.imageView);

}

}

布局XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.sayantan.myapp1.MainActivity">

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/imageView"
    android:layout_below="@+id/blue"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="56dp"
    android:src="@drawable/bart"
    android:onClick="rotateImage" />

4 个答案:

答案 0 :(得分:2)

您是否尝试过调用Start()? 。imageView.animate()的旋转(180°F).setDuration(1500)。开始();

答案 1 :(得分:2)

使用rotationBy()代替rotation();

答案 2 :(得分:1)

我很确定旋转会保留在动画的最后。因此,当您第二次尝试为图像设置动画时,它不会移动,因为它已经旋转到1800.

因此,请将图片重置为0或将图片重置为currentRotation + 1800f

答案 3 :(得分:1)

嗨,你可以试试这个,

imageView.animate().rotation(1800f).setDuration(1500);
imageView.getAnimation().setRepeatCount(Animation.INFINITE);

谢谢希望这会对你有所帮助。