2012-09-13 70 views
1

在我的應用程序中,我想播放gif圖像,我可以播放gif圖像,但是我想處理gif圖像,如果我點擊開始按鈕動畫應該開始,如果單擊停止按鈕動畫應該停止。如何在android中啓動和停止gif圖像

 strtbtn.setOnClickListener(this); 

     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Canvas canvas=new Canvas(mBitmap); 
     long now = android.os.SystemClock.uptimeMillis(); 
     if (mMovieStart == 0) { // first time 
      mMovieStart = now; 
     } 
     if (mMovie != null) { 
      int dur = mMovie.duration(); 
      if (dur == 0) { 
       dur = 1000; 
      } 
      int relTime = (int)((now - mMovieStart) % dur); 
      mMovie.setTime(relTime); 
      mMovie.draw(canvas, mBitmap2.getWidth() - mMovie.width(), 
         mBitmap2.getHeight() - mMovie.height()); 
     //    invalidate(); 
      Log.i("movie",""+mMovieStart); 
      Log.i("jjhjhhnjhj",""+mMovie); 
     } 
    } 

請幫助我如何啓動和停止GIF動畫images.Thanks提前。

+0

http://www.bogotobogo.com/Android/android19Animation.php – Android

回答

0

第1步

找出你想要的動畫圖像。它們應該按順序排列,以便我們可以持續地翻閱它。文件類型如GIF,PNG等圖像後發現的,將它們複製並通過複製把它們和

「你的項目」粘貼 - >水庫 - >繪製 - MDPI - >粘貼圖像

繪製對象有三個類別

hdpi-> high dots per inch 
ldpi->large dots per inch 
mdpi->medium dots per inch 

步驟2

有兩種方法來執行此動畫。 1)通過創建「BitmapDrawable」對象,2)通過創建「動畫」xml文件。我們將逐一看到兩種方法。

與 「BitmapDrawable」

Syntax: 

BitmapDrawable object=(BitmapDrawable) getResources().getDrawable(R.drawable.<image_name>); 

Example 

Suppose I have image named "sample.png" in "res.drawable" directory, then 



BitmapDrawable frame1=(BitmapDrawable)getResources().getDrawable(R.drawable.sample); 


AnimationDrawable animation = new AnimationDrawable(); 

Now, we can add frames which we have created above as like you want. 

Syntax: 



AnimationDrawable.addFrame(BitmapDrawable,duration); 

Example 



animation.addFrame(frame1,1000); 

In this animation, while you start this animation, it will stop after last added frame. If you like to continue this animation, following method must be implemented. 

animation.setOneShot(假)做;

Now, bind "ImageView" object of layout 



    ImageView img=(ImageView)findViewById(R.id.imageView1); 
    img.setBackgroundDrawable(animation); 



    animation.start(); 
    animation.stop(); 

Description: 
    Duration is in milliseconds. 
    setBackgroundDrawable(animation) method will set background with animation and give control over animation. 
    start() method will start your animation and stop() will stop this animation. 

    <?xml version="1.0" encoding="utf-8"?> 
    <animation-list 
     xmlns:android=http://schemas.android.com/apk/res/android 
     android:oneshot="false"> 
     <item android:drawable="@drawable/sample1" android:duration="50"/> 
     <item android:drawable="@drawable/sample2" android:duration="50"/> 
     <item android:drawable="@drawable/sample3" android:duration="50"/> 
    </animation-list> 

In above code, I have added 3 frames with "android:drawable" attribute and duration in milliseconds. 

Now, bind "ImageView" object with layout and implement following methods. 



    ImageView img=(ImageView)findViewById(R.id.imageView1); 
    img.setImageBitmap(null); 
    img.setBackgroundResource(R.anim.animation); 

Next, create object of "AnimatinDrawable" and give background to "AnimationDrawable" so that it can handle it. 



    AnimationDrawable animation = (AnimationDrawable) img.getBackground(); 
    animation.start(); 
    animation.stop(); 

使用 「BitmapDrawable」

Main.java

package com.animationapp; 

import android.app.Activity; 
import android.graphics.drawable.AnimationDrawable; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class AnimationAppActvity extends Activity { 
    /** Called when the activity is first created. */ 

    ImageView img; 
    Button btnStart,btnStop; 
    AnimationDrawable animation; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     int duration = 150; 
     img = (ImageView)findViewById(R.id.imageView1); 

     BitmapDrawable frame1 = 
      (BitmapDrawable)getResources().getDrawable(R.drawable.d1); 
     BitmapDrawable frame2 = 
      (BitmapDrawable)getResources().getDrawable(R.drawable.d2); 
     BitmapDrawable frame3 = 
      (BitmapDrawable)getResources().getDrawable(R.drawable.d3);  

     animation = new AnimationDrawable();  
     animation.addFrame(frame1, duration); 
     animation.addFrame(frame2, duration); 
     animation.addFrame(frame3, duration); 

     animation.setOneShot(false); 

     img.setBackgroundDrawable(animation); 

     btnStart = (Button)findViewById(R.id.btnStart); 
     btnStop = (Button)findViewById(R.id.btnStop); 

     btnStart.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        // TODO Auto-generated method stub 
        animation.start(); 
      } 
     }); 

     btnStop.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      // TODO Auto-generated method stub 
      animation.stop(); 
      } 
     }); 
    } 
} 

版式文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 
<ImageView 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:minHeight="191px" android:minWidth="285px"> 
</ImageView> 
<Button 
     android:text="Start" 
     android:id="@+id/btnStart" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
</Button> 
<Button 
     android:text="Stop" 
     android:id="@+id/btnStop" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
</Button> 
</LinearLayout> 

使用 「animation.xml」 文件

package com.AnimApp; 

import android.app.Activity; 
import android.graphics.drawable.AnimationDrawable; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class AnimAppActivity extends Activity { 
    /** Called when the activity is first created. */ 

     Button btnStart,btnStop; 
     ImageView img; 
     AnimationDrawable animation; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btnStart=(Button)findViewById(R.id.button1); 
     btnStop=(Button)findViewById(R.id.button2); 

     img=(ImageView)findViewById(R.id.imageView1);  
     img.setBackgroundResource(R.anim.animation); 
     animation=(AnimationDrawable)img.getBackground(); 

     btnStart.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        animation.start(); 
       } 
     }); 

     btnStop.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      // TODO Auto-generated method stub 
      animation.stop(); 
      } 
     }); 
    } 
} 

animation.xml

<?xml version="1.0" encoding="utf-8"?> 
<animation-list 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="false"> 
    <item android:drawable="@drawable/d1" android:duration="50"/> 
    <item android:drawable="@drawable/d2" android:duration="50"/> 
    <item android:drawable="@drawable/d3" android:duration="50"/> 
</animation-list> 
+0

感謝您的答覆,但我使用名爲.gif我要開始和停止GIF圖像不png格式圖片 – user1105975