2017-02-03 3 views
0

以下のコードでフレームアニメーションを作成しました。ボタンをクリックするたびにアニメーションが始まりますが、は最初にで動作します。フレームのアニメーションは1回だけ開始します

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startAnimation(); 
      } 
     }); 
    } 

    public void startAnimation(){ 
     ImageView img = (ImageView) findViewById(R.id.image); 
     ((AnimationDrawable) img.getBackground()).start(); 
    } 
} 

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/frame" 
     /> 

    <Button 
     android:layout_centerInParent="true" 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Start Animation" 
     /> 

</RelativeLayout> 

frame.xml

<animation-list 
    android:oneshot="true" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <item android:drawable="@drawable/ic_heart_0" android:duration="300" /> 
    <item android:drawable="@drawable/ic_heart_50" android:duration="300" /> 
    <item android:drawable="@drawable/ic_heart_75" android:duration="300" /> 
    <item android:drawable="@drawable/ic_heart_100" android:duration="300" /> 
    <item android:drawable="@drawable/ic_heart_0" android:duration="300" /> 
</animation-list> 

活動はどのように私はボタンでクリックしたときにアニメーションを開始することができますすることができますか? 助けや助言をいただければ幸いです。

答えて

1

ここで私が見つけた1つの解決策があります。私は再び起動する前に実行されている場合、私はアニメーションを停止しようとします。私はアニメーションがすべてのフレームを通過しても停止しないと思います

if(((AnimationDrawable) imageView.getBackground()).isRunning()){ 
     ((AnimationDrawable) imageView.getBackground()).stop(); 
} 
((AnimationDrawable) imageView.getBackground()).start(); 
2

MainActivityで300時間後にstop()アニメーションを試してみてください。私はあなたが停止しているかどうかは分からないと思います。それは300、右後に停止しますか?しかし、私は多分アプリがまだそれを認識すると思うかもしれない。

+0

私は手動でアニメーションを停止することができますアニメーションを再開することができます –

関連する問題