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;
        }
    }
  • 相关阅读:
    Linux平台下mysql的ODBC配置方法
    linux制做RPM包
    linux个性化定制登录信息
    free -m 下的含义
    MegaCli 使用
    判断占用系统资源的进程
    linux批量修改文件名
    linux禁止IPv6
    怎么删除STL容器的元素
    STL——sort函数的实现原理
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4888523.html
Copyright © 2011-2022 走看看