Skip to content Skip to sidebar Skip to footer

How To Start And Stop Gif Images In Android

In my application i want to play gif images i am able to play gif images but i want to handle gif images like if i click start button animation should start and if click stop butto

Solution 1:

Step 1

Find out images which you want for animation. They should be in sequence so that we can realize it as flipping continuously. File type of images like GIF, PNG etc. After finding, copy them and place them by copy and paste in

"Your project" -> res -> drawable-mdpi -> paste images

Drawable has three categories

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

Step 2

There are two methods to perform this animation. 1) By creating "BitmapDrawable" objects, 2) By creating "animation" xml file. We will see both method one by one.

Do with "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 continuethis animation, following method must be implemented.

animation.setOneShot(false);

Now, bind "ImageView"objectof 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-listxmlns:android=http://schemas.android.com/apk/res/androidandroid:oneshot="false"><itemandroid:drawable="@drawable/sample1"android:duration="50"/><itemandroid:drawable="@drawable/sample2"android:duration="50"/><itemandroid: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"objectwith layout and implement following methods.



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

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



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

Using "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;

publicclassAnimationAppActvityextendsActivity {
    /** Called when the activity is first created. */

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

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

        BitmapDrawableframe1=
            (BitmapDrawable)getResources().getDrawable(R.drawable.d1);
        BitmapDrawableframe2=
            (BitmapDrawable)getResources().getDrawable(R.drawable.d2);
        BitmapDrawableframe3=
            (BitmapDrawable)getResources().getDrawable(R.drawable.d3);       

        animation = newAnimationDrawable();       
        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(newView.OnClickListener() {
             @OverridepublicvoidonClick(View v) {
                  // TODO Auto-generated method stub
                  animation.start();
            }
        });

        btnStop.setOnClickListener(newView.OnClickListener() {
             @OverridepublicvoidonClick(View v) {
             // TODO Auto-generated method stub
             animation.stop();
             }
        });
    }
} 

Layout file

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

Using "animation.xml" file

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; 

publicclassAnimAppActivityextendsActivity {
    /** Called when the activity is first created. */Button btnStart,btnStop;
      ImageView img;
      AnimationDrawable animation;

    @OverridepublicvoidonCreate(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(newView.OnClickListener() {   
              @OverridepublicvoidonClick(View v) {
                   // TODO Auto-generated method stub
                   animation.start();
              }
        });

        btnStop.setOnClickListener(newView.OnClickListener() {

            @OverridepublicvoidonClick(View v) {
            // TODO Auto-generated method stub
            animation.stop();
            }
        });
    }
}

animation.xml

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

Post a Comment for "How To Start And Stop Gif Images In Android"