2017-02-03 103 views
0

我已經通過下面的代碼創建了框架動畫。我希望每次點擊按鈕時動畫都會啓動,但只能在第一時間運行框架動畫只能啓動一次

<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> 

活動

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(); 
    } 
} 

我怎樣才能讓每當我點擊按鈕的動畫可以開始? 任何幫助或建議將不勝感激。

回答

1

這是我找到的一個解決方案。我嘗試停止動畫,如果它正在運行,然後再次啓動它。我認爲動畫不會停止,即使它已經通過所有框架

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

您在MainActivity之後300次持續時間後嘗試使用stop()動畫。我認爲它不承認或者你停止或不停止。它在300之後停止,對吧?但我認爲也許應用程序認識到它仍然開始。

+0

謝謝我認爲手動停止動畫可以使動畫可以重新開始 –