zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    关于guava实现线程池
    结构化方法与面向对象方法的比较
    敏捷开发与传统开发方式的比较
    C# 事件的使用方法
    C# 泛型反射的调用
    RPC 知识科普一下
    C#枚举(Enum)小结
    C#图片添加文字水印
    C#索引器
    C#隐式转换与显示转换
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4888523.html
Copyright © 2011-2022 走看看