• android Gif播放


    public class GifSurface extends SurfaceView implements Callback{
    
        private Movie movie;
        private static int ZOOM = 2;
        public String path;
        
        private Handler handler = new Handler();
        private Runnable runnable = new Runnable() {
            
            @Override
            public void run() {
                Canvas canvas = holder.lockCanvas();
                canvas.save();
                canvas.scale(ZOOM, ZOOM);
                movie.draw(canvas, 0, 0);
                canvas.restore();
                
                holder.unlockCanvasAndPost(canvas);
                movie.setTime((int) (System.currentTimeMillis()%movie.duration()));
                handler.removeCallbacks(runnable);
                handler.postDelayed(runnable, 30);
            }
        };
    
        private SurfaceHolder holder;    
        public GifSurface(Context context, AttributeSet attrs) {
            super(context, attrs);
            
            holder = getHolder();
            holder.addCallback(this);
        }
        
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            try {
                InputStream is = getContext().getAssets().open("122856549320150205220255.gif");
                movie = Movie.decodeStream(is);
                
                int width = movie.width();
                int height = movie.height();
                setMeasuredDimension(width*ZOOM, height*ZOOM);
                handler.post(runnable);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
        
            
        }
    
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                int height) {
            
        }
    
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            handler.removeCallbacks(runnable);
        }
    
        private void setZoom(int zoom) {
            this.ZOOM = zoom;
    
        }
        
        public void setPath(String path) {
            this.path = path;
        }
    }
  • 相关阅读:
    Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
    入门设计模式之桥梁模式
    入门设计模式之外观模式
    入门设计模式之策略
    入门设计模式之观察者
    入门设计模式之模板
    入门设计模式之原型
    入门设计模式之工厂
    几分钟几张图教你学会如何使用UML
    入门设计模式之建造者
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4888523.html
Copyright © 2020-2023  润新知