其他----gif 的播放

作者: pgydbh | 来源:发表于2018-05-24 17:31 被阅读17次

目录

准备

movie 类专用于 gif 播放。
movie 有duration
movie.setTime(int time)---> movie.draw(canvas, 0, 0) 可以将 move的对应时刻图像绘制在canvas之上。

思路

1.获取movie
2.开启线程 根据人 视角 25ms 绘制一次

演示

动图制作不容易...静态图代替
简书.png

代码

代码简单,利于学习入门,但不利于使用。
public class MyGifView extends View {

    private Movie movie;
    private int duration = 0;
    private int now = 0;

    public MyGifView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        //获取movie 时长
        movie = Movie.decodeStream(getResources().openRawResource(R.drawable.test));
        duration = movie.duration();

        //开始播放 25ms刷新一次
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                now += 25;
                if (now < duration)
                    invalidate();
            }
        }, 0, 25);
    }


    /**
     * 绘制 
     * setTime
     * 设置canvas缩放比例
     * draw 在 左上角坐标 0,0
     * @param canvas
     */
    @Override
    protected void onDraw(Canvas canvas) {
        movie.setTime(now);
        canvas.scale((float)getWidth()/movie.width(),(float)getHeight()/movie.height());
        movie.draw(canvas, 0, 0);
    }
}

相关文章

网友评论

    本文标题:其他----gif 的播放

    本文链接:https://www.haomeiwen.com/subject/dlwsjftx.html