【0148】【项目实战】-【百思不得姐】-【5】基于MVP实现登录、推荐标签、关注

1.自定义GIF

【gif使用的场景】在社交类的app上居多;一般继承的父类就是下面所列的几种;

1.1 加载本地的gif图片的播放

【专门监听生命周期】需要使用到SurfaceView控件;

 【获取外界的gif资源】获得到的i资源不能直接播放,需要使用使用线程播放;

【播放】需要使用线程播放

 1 public class MyGifView extends SurfaceView implements SurfaceHolder.Callback {
 2 
 3     private Movie movie;
 4     //默认缩放倍数
 5     private float gifScale = 2.5f;
 6     //第二步:通过线程进行播放---专门用来播放Gif图片
 7     private Handler handler = new Handler();
 8 
 9     private Runnable runnable = new Runnable() {
10         @Override
11         public void run() {
12             //循环播放每一帧
13             //获取加锁画布
14             Canvas lockCanvas = getHolder().lockCanvas();
15             //保持画布状态
16             lockCanvas.save();
17             lockCanvas.scale(gifScale,gifScale);
18             //绘制图片
19             movie.draw(lockCanvas,0,0);
20             //切换每一帧
21             //例如:我现在有5张图片
22             //时间: 1  2  3  4  5  6  7  8  9  10
23             //计算:1%5
24             //图片: 1  2  3  4  0  1  2  3  4  0 ......以此类推
25             movie.setTime((int) (System.currentTimeMillis() % movie.duration()));
26             //还原画布
27             lockCanvas.restore();
28             //解锁画布
29             getHolder().unlockCanvasAndPost(lockCanvas);
30             //每个多少秒切换一次图片
31             handler.postDelayed(runnable,50);
32         }
33     };

【添加控件】自定义控件

【设置surfaceView的宽高】

【对gif进行缩放】

 

1.2 加载网络图片

【使用网络下载的图片】--没有搞成功

 

 2.使用第三方的库

【说明】一帧一帧的绘制,不停的调用invalidateView(); 

 

 

 3.第三方视频框架使用

【github地址】VideoPlayerManager

【源码分析】

猜你喜欢

转载自www.cnblogs.com/Oztaking/p/9033050.html