其他----gif 的播放

目录

准备

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);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容