如何让Android支持GIF图片
16lz
2021-01-23
public class SampleView extends View { private Movie mMovie; private Bitmap mBitmap; private Canvas mCanvas; private long mMovieStart; private byte[] streamToBytes(InputStream is) { ByteArrayOutputStream os = new ByteArrayOutputStream(1024); byte[] buffer = new byte[1024]; int len; try { while ((len = is.read(buffer)) >= 0) { os.write(buffer, 0, len); } } catch (java.io.IOException e) { } return os.toByteArray(); } public SampleView(Context context) { super(context); setFocusable(true); InputStream is; is = context.getResources().openRawResource(R.drawable.aa_gif); if (true) { mMovie = Movie.decodeStream(is); } else { byte[] array = streamToBytes(is); mMovie = Movie.decodeByteArray(array, 0, array.length); } int w = mMovie.width(); int h = mMovie.height(); Log.i("-------width-------", w+""); Log.i("-------height-------", h+""); // int[] pixels = new int[w*h]; mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(0xFFCCCCCC); Paint p = new Paint(); p.setAntiAlias(true); long now = android.os.SystemClock.uptimeMillis(); if (mMovieStart == 0) { // first time mMovieStart = now; } if (mMovie != null) { int dur = mMovie.duration(); if (dur == 0) { dur = 1000; } int relTime = (int)((now - mMovieStart) % dur); mMovie.setTime(relTime); mCanvas.drawColor(0xFFCCCCCC); mMovie.draw(mCanvas, 0, 0); Bitmap bitmap = Bitmap.createScaledBitmap(mBitmap, 300, 300, false); mBitmap.createScaledBitmap(mBitmap, 200, 300, false); canvas.drawBitmap(bitmap, 100, 200, null); invalidate(); } } }public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SampleView sampleView = new SampleView(this); setContentView(sampleView); }}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer