2016-09-23 5 views
1

私は奇妙な顔をしています 画像をクリックすると最初に回転します もう一度クリックすると回転しません。 私はトーストを使用して、コントロールが機能内にあるかどうかを確認しましたが、トーストは常に印刷されています。Android:ImageView回転アニメーションは一度だけ有効

なぜ画像が2度目に回転しないのですか? は、ここに私のコード..です

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

[ViewPropertyAnimatorでループアニメーションを生成するにはどうすればいいですか?](http://stackoverflow.com/questions/15815784/how-to-generate-looping-animation-with-viewpropertyanimator) –

答えて

0

私は回転がアニメーションの最後に保たれていることをかなり確信しています。 2回目にイメージをアニメートしようとすると、イメージはすでに1800に回転しているため移動しません。

イメージを0にリセットするか、currentRotation + 1800fにローテーションします。あなたはこれを試すことができ

+0

ありがとう私はアニメーションオブジェクトをインスタンス化していないので、それはもはや回転しない理由を説明します:) :) –

0

やあ、

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

おかげで、これはあなたを助けることを願っています。

+0

それは例外をスローします。 –

1

あなたはStart()を呼び出そうとしましたか?imageView.animate()。rotation(1800f).setDuration(1500).start();

1

rotation()の代わりにrotationBy()を使用してください。