Android 显示和控制gif动态图片的播放

25 篇文章 0 订阅

加载和控制gif动态显示和播放控制。使用第三方库,加载和控制都非常简单。这里有对播放的控制有两种情况,一是直接控制播放(按钮),和使用MediaPlayerControl控制。github上放了一个例子:点击跳转下面是效果:
图片
适用于:Android 2.3+ (API level 9+)

1.加载gif动图

只是加载的话,非常简单。在gradle中加入如下代码后同步:

compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.8'

上面使用的第三方库文件的github原网址:点击跳转

这里在布局文件里都是用的是GifImageView,这个就是gif的view,就像ImageView。drawable/hzw是提前准备的一张gif图。下载gif图片

 <pl.droidsonroids.gif.GifImageView
       android:id="@+id/giv1"
       android:src="@drawable/hzw"
       android:layout_width="wrap_content"
       android:layout_height="200dp"/>

2.直接控制播放(这里是按钮控制)

可以提供的控制如下表,都是GifDrawable 对象的方法,而不是:GifImageView 的方法。reset效果与原网址讲解略有不同,以实际效果总结:

方法效果
stop()停止动画,能被任何线程调用
start()开始或者说继续动画,
isRunning()返回动画是否正在播放
reset()正在播放的动画从开头开始播放,可以开始播放已经停止的动画
setSpeed(float factor)设置播放速度,如factor为2.0f表示两倍速度播放
seekTo(int position)动画在时间为position毫秒的位置播放
getDuration()返回动画持续循环时间
getCurrentPosition()从当前动画循环开始返回经过时间

在onCreate中调用initGiv1();

GifImageView giv1;//由按键控制播放的gif
GifDrawable gifDrawable;//资源对象
...
//初始化由按键控制播放的gif
    private void initGiv1() {
        giv1 = (GifImageView) findViewById(R.id.giv1);
        //这里控制播放的对象实际是gifDrawable
        try {
            gifDrawable = new GifDrawable(getResources(), R.drawable.hzw);
            giv1.setImageDrawable(gifDrawable);//这里是实际决定资源的地方,优先级高于xml文件的资源定义
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //下面是按钮点击响应事件监听
    //开始/继续播放
    public void startClick(View v) {
        gifDrawable.start();
    }

    //暂停播放
    public void stopClick(View v) {
        gifDrawable.stop();
    }

    //重新开始播放
    public void resetClick(View v) {
        gifDrawable.reset();
    }

3.使用MediaPlayerControl控制播放

在onCreate()中调用如下initGiv2()方法,这里设置成,点击gif则显示播放控制的控件(MediaPlayerControl控件)。注意,mc.show()不能放在onCreate()中,必须在activity加载完成后才能调用。

GifImageView giv2;//由MediaPlayerControl控制的播放的gif

...
//初始化由MediaPlayerControl控制的播放的gif
    private void initGiv2() {
        giv2 = (GifImageView) findViewById(R.id.giv2);
        final MediaController mc = new MediaController(this);
        mc.setMediaPlayer((GifDrawable) giv2.getDrawable());
        mc.setAnchorView(giv2);
        giv2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mc.show();
            }
        });
    }
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值