Android 实现播放本地GIF图片
来源:互联网 发布:费马的房间 知乎 编辑:程序博客网 时间:2024/05/15 20:57
做一个记录,实现播放本地GIF图片,前提是需要一张GIF图片
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GifSurfaceView sv = (GifSurfaceView) findViewById(R.id.sv); sv.setNet(false); sv.setZoom(1.0f); }}import java.io.IOException;import java.io.InputStream;import java.net.URL;import android.content.Context;import android.graphics.Canvas;import android.graphics.Movie;import android.os.Handler;import android.util.AttributeSet;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView;/*** * 高速描绘 * @author Sinocall * */public class GifSurfaceView extends SurfaceView implements Callback { private SurfaceHolder holder; private Movie movie; private boolean isNet = false; private String path; private float zoom; //不断绘制,不断更新视图 private Handler handler = new Handler(); private Runnable run = 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); //5,1 2 3 4 5, movie.setTime((int)System.currentTimeMillis() % movie.duration()); handler.removeCallbacks(run); handler.postDelayed(run, 30); } }; public GifSurfaceView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public GifSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); holder = getHolder(); holder.addCallback(this); } public GifSurfaceView(Context context) { super(context); } /*** * 计算,控件, */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); //开始Gif图片绘制 //Gif图片---》影片 InputStream is; try { if(isNet){ is = new URL(path).openConnection().getInputStream(); }else{ is = getContext().getAssets().open("1.gif"); } movie = Movie.decodeStream(is); //设置SurfaceView宽高 int width = movie.width(); int height = movie.height(); //指定控件的宽高 setMeasuredDimension((int)(width*zoom), (int)(height*zoom)); //有很多个珍画面轮训播放 handler.post(run); } catch (IOException e) { e.printStackTrace(); } } /** * 初始化完成 * @param holder */ @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(run); } public boolean isNet() { return isNet; } public void setNet(boolean isNet) { this.isNet = isNet; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public float getZoom() { return zoom; } public void setZoom(float zoom) { this.zoom = zoom; }}<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <com.hky.view.GifSurfaceView android:id="@+id/sv" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>
- 就这么简单,就这么任性的完成了!
0 0
- Android 实现播放本地GIF图片
- Android轻松实现播放Gif图片
- 实现android gif图片动画播放功能
- Android播放GIF图片
- android Gif图片播放
- android播放gif图片
- android 播放gif 图片
- Android播放Gif图片
- android 播放网络或本地gif格式的动态图片
- android 实现gif播放
- android实现Gif播放
- Android如何播放gif图片
- android播放gif图片动画
- Android 中使用ImageView实现播放Gif图片功能
- weex android 基础与扩展本地图片加载 gif播放自定义module
- Windows Mobile C#实现GIF图片播放
- Android中播放GIF图片动画
- Android中播放GIF图片动画
- Xcode6添加pch(Precompile Prefix Header)文件
- POI推荐算法
- js中日期的格式化
- 2015亚冠十六强东亚区对阵
- 位图和像素位
- Android 实现播放本地GIF图片
- HTML列表标签
- VC编程实现色彩空间XYZ与LAB相互转换
- 【iOS学习笔记】本地通知 UILocalNotification
- Android常见错误处理(三)
- 黑马程序员————java集合框架详解
- Spring MVC的事务配置和Spring4与Hibernate4的整合
- Java语言考核方式的选择
- java简单ping其他Ip是否可以ping通