我面临着奇怪的问题 如果我点击图像它是第一次旋转, 如果你再次点击它不会旋转。 我已经使用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" />
答案 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);
谢谢希望这会对你有所帮助。