• 网赌被黑找腾龙D哥出黑【微信:JLYL78999 QQ:840093333】

    Android GIF播放,MP4文件播放笔记

    一、添加GIF动图

    Glide是一个非常强大的图片加载框架,并且还能播放视频和加载GIF,因此我们使用Glide加载GIF资源。

    1.添加依赖&&添加GIF资源

    首先是添加Glide的依赖:

        compile 'com.github.bumptech.glide:glide:3.7.0'
        compile 'com.github.bumptech.glide:okhttp-integration:1.4.0'

    我们将GIF图片放在drawable文件夹下,然后直接调用方法即可加载动图

    Glide.with(this)
         .load(R.drawable.img_gif)
       //.asGif()
         .diskCacheStrategy(DiskCacheStrategy.SOURCE)
         .into(new GlideDrawableImageViewTarget(mImageView, 1));

    简单介绍一下几个方法:

    load():加载对应的资源,可以使resouce资源ID,也可以是Uri;

    asGif():是否作为GIF图片加载,默认不调用该方法也可以加载GIF文件,但是如果添加了该方法,那么只能加载GIF图片,因此不如不加;

    diskCacheStrategy():设置缓存策略;

    DiskCacheStrategy.SOURCE:缓存原始数据,
    DiskCacheStrategy.RESULT:缓存变换(如缩放、裁剪等)后的资源数据,
    DiskCacheStrategy.NONE:什么都不缓存,
    DiskCacheStrategy.ALL:缓存SOURC和RESULT。
    默认采用DiskCacheStrategy.RESULT策略,对于download only操作要使用DiskCacheStrategy.SOURCE。

    into():这行代码意味着GIF动图只加载一次,不循环播放,播放完毕时保持最后一帧的状态。

    如果想要无限循环GIF图片,那就更简单了!只需要:

    Glide.with(this)
         .load(R.drawable.img_gif)
         .diskCacheStrategy(DiskCacheStrategy.SOURCE)
         .into(mImageView);

    二、更多需求

    更多情况下我们播放GIF还需要更多的需求,比如播放完毕后做一些事情,这样我们可以添加一个监听,监听GIF播放完毕时的状态,从而实现其他需求:

    Glide.with(this)
         .load(R.drawable.img_gif2)
         .diskCacheStrategy(DiskCacheStrategy.SOURCE)
         .listener(new RequestListener<Integer, GlideDrawable>() {
             @Override
             public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) {
                 return false;
             }
    
             @Override
             public boolean onResourceReady(GlideDrawable resource,
                                             Integer model, 
                                             Target<GlideDrawable> target, 
                                             boolean isFromMemoryCache, 
                                             boolean isFirstResource) {
                 // 计算动画时长
                 GifDrawable drawable = (GifDrawable) resource;
                 GifDecoder decoder = drawable.getDecoder();
                 int duration = 0;
                 for (int i = 0; i < drawable.getFrameCount(); i++) {
                     duration += decoder.getDelay(i);
                 }
                 //发送延时消息,通知动画结束,并在handler中做出对应行为
                 handler.sendEmptyMessageDelayed(MESSAGE_PLAY_END,
                         duration);
                 return false;
             }
         })
         .into(new GlideDrawableImageViewTarget(mImageView, 1));

    二、VideoView播放MP4文件

    我们可以将MP4文件放到res文件夹下的raw文件夹中,然后:

    String uri = "android.resource://" + getPackageName() + "/" + R.raw.anim;
    Uri uriMp4 = Uri.parse(uri);
    
    mVideoView.setVideoURI(uriMp4);
    mVideoView.start();

    关于VideoView使用方法的API,网上有很多文章,不赘述。

    网赌被黑找腾龙D哥出黑【微信:JLYL78999 QQ:840093333】

    发布评论

    分享到:

    专业出黑网赌被黑追款

    我的微信号:18488351249 (左侧二维码扫一扫)欢迎添加!

    Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
    你是第一个吃螃蟹的人
    发表评论

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。