标签:
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; } }
标签:
原文地址:http://www.cnblogs.com/wei1228565493/p/4888523.html