我遇到了一个奇怪的问题 如果我第一次单击图像,它会旋转,如果再次单击它,它不会旋转。我已经使用 toast 来检查控制是否在函数内部,但是 toast 一直在打印。
为什么图像没有第二次旋转?这是我的代码..
主要活动:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
布局 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" />
Run Code Online (Sandbox Code Playgroud)
我非常确定旋转会保留在动画结束时。因此,当您第二次尝试为图像设置动画时,它不会移动,因为它已经旋转到 1800 度。
因此,要么将图像重置为 0,要么将其旋转为currentRotation + 1800f.