首页 > 其他分享 >如何让Android支持GIF图片

如何让Android支持GIF图片

时间:2023-04-17 20:32:40浏览次数:42  
标签:mBitmap mMovie int private Bitmap GIF new Android 图片


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);
    }
}

标签:mBitmap,mMovie,int,private,Bitmap,GIF,new,Android,图片
From: https://blog.51cto.com/u_2198048/6196318

相关文章

  • 理解Android系统的进程间通信原理(一)----RPC中的代理模式
    理解Android系统的进程间通信原理(一)----RPC中的代理模式Android系统中的进程间通信是通过一个轻量级的RPC(RemoteProcedureCall远程进程调用)和AIDL(AndroidInterfaceDefininationLanguage)规范来生成两个进程之间可以相互访问的代码。其中RPC是以接口方式来实现,客户端与被......
  • 文本编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
    ​ 当前功能基于PHP,其它语言流程大抵相同。大概流程:1.将docx文件上传到服务器中2.使用PHPoffice/PHPword实现将word转换为HTML3.将HTML代码返回并赋值到编辑器中 1编辑器配置修改1.1新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /*......
  • JSON.stringify()与JSON.parse()没有你想的那样简单
    重新学习这两个API的起因在本周五有线上的项目,16:30开始验证线上环境。开始都是顺顺利利,一帆风顺。大概17:50左右,我正在收拾东西。准备下班去王者峡谷骑着我的船溜达一圈。可是天降意外,给我派了一个bug。测试给我说:有一条数据的详情页有数据但是在页面中没有显示数据。不可......
  • Origin导出的图片-无大白边设置
    转载:简单设置让你Origin导出的图片不在有大白边(qq.com)对于刚刚接触origin的朋友,当你在origin中处理完数据,画完图,想把图copy到Word中时,为了能再次修改我们一般选择copypage,然后在Word中粘贴。但是你会发现我们粘贴到Word中的图片,有一个大白边,如下图。如果你一排放一张图还没......
  • css中文字与图片对齐
    css中文字与图片对齐第一种,使用vertical-align:middle.icon{ background-repeat:no-repeat; background-position:center;display:inline-block;width:16px;height:16px;vertical-align:middle;}.icon-down{background-image:url(./imgs/icon......
  • [OpenCV] 图像金字塔和图片缩放
    高斯金字塔:PyrDown图像变小,细节减少拉普拉斯金字塔:PyrUp图像变大,尽量弥补细节ResizeCV_EXPORTS_Wvoidresize(InputArraysrc,OutputArraydst,Sizedsize,doublefx=0,doublefy=0,intinterpolatio......
  • Android Handler 知识点
    Android面试必问的Handler知识点一叶飘舟于 2020-12-0312:03:10 发布547 收藏 9 版权前言在Android中,Handler是贯穿于整个应用的消息机制,在面试中出现的概率为:100%在这篇文章里,我将带你梳理Handler的使用攻略&设计原理。追求简单易懂又不失深度......
  • django保存图片并返回url
    场景描述前端传递一个表单,表单中有title,description,以及image等信息,image在这里传递的是二进制文件后端需要将这些数据保存到一个数据库中。image需要保存到指定文件夹下,并且数据库中保存的是image的路径,之后我们可以通过浏览器访问类似127.0.0.1:8000/xxx/a.jpg访问到这......
  • 把文字从图片中去掉
    1、打开图片,并框选文字 2、菜单:选择--颜色范围,调整色彩容差  3、菜单:选择--修改--扩展,调整大小 4、菜单:编辑--内容识别填充,看看预览图,然后确定  5、Ctrl+D,进行确定 6、上面操作后,成品图 ......
  • 《花雕学AI》20:ChatGPT使用之体验评测AI EDU的网页版+桌面端+Android+App store组合
    最近准备出门,要去新疆哈密参加活动,一直在寻找手机上可用的AI移动端。昨天在网上偶然找到了AIEDU(这个不是MSRA创立的人工智能开源社区),其链接是:https://ai.aigcfun.com,今天就尝试做个相关体验与学习的记录。打开首页如下:  引言:人工智能聊天机器人ChatGPT是一种基于GPT-......