如何在Android中启动和停止gif图像 [英] How to start and stop gif images in android

查看:61
本文介绍了如何在Android中启动和停止gif图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序中,我想播放gif图像,但我想播放gif图像,但我想处理gif图像,例如单击开始按钮动画应该开始以及单击停止按钮动画应该停止一样.

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 button animation should stop.

     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动画图像.谢谢.

please help me how to start and stop gif animated images.Thanks in advance.

推荐答案

步骤1

找出想要动画的图像.它们应按顺序排列,以便我们可以实现连续翻转.图片的文件类型,例如GIF,PNG等.找到后,将其复制并通过复制和粘贴将其放置

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

您的项目"-> res-> drawable-mdpi->粘贴图像

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

Drawable具有三个类别

Drawable has three categories

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

第2步

有两种方法可以执行此动画.1)通过创建"BitmapDrawable"对象,2)通过创建动画" xml文件.我们将一一介绍这两种方法.

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.

使用"BitmapDrawable"

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 continue this animation, following method must be implemented.

animation.setOneShot(false);

animation.setOneShot(false);

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"

Using "BitmapDrawable"

Main.java

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"文件

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; 

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

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>

这篇关于如何在Android中启动和停止gif图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆