`
wang_peng1
  • 浏览: 3944281 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android画图-----实现播放gif效果

阅读更多
在BitmapDecode这个例子中,从里面可以学到有流转化为字节数组,同时有两种读取留图片的方法,还有两种现在图片的方法,但是我觉得在这里最好用的还是能显示出gif效果,通常gif图片是只显示第一的。
首先是将图片转化为流java.io.InputStream is;
            is = context.getResources().openRawResource(R.drawable.beach);
后面就有两种实现:bm = BitmapFactory.decodeStream(is, null, opts);
BitmapFactory.decodeStream(is);
第二种很简单了 关键是第一种的第三个参数:
BitmapFactory.Options opts = new BitmapFactory.Options();
            Bitmap bm;
opts.inJustDecodeBounds = false;    // this will request the bm 默认是false 如果设置为true 那么返回的图像是为null 这点注意。
// scaled down by 4 默认为1 只要《=1 就是显示原图片的大小,其他的你设置为4就是原图片的1/4倍大小。
             opts.inSampleSize = 4;           
           bm = BitmapFactory.decodeStream(is, null, opts);

后面呢 就是从一个图像复制另一个图像了,这里用到了复制色素的数组:
int w = mBitmap2.getWidth();
            int h = mBitmap2.getHeight();
            int[] pixels = new int[w*h];
            mBitmap2.getPixels(pixels, 0, w, 0, 0, w, h);
            mBitmap3 = Bitmap.createBitmap(pixels, 0, w, w, h,
                                           Bitmap.Config.ARGB_4444);

在后面的代码 就是实现gif图像的了:
is = context.getResources().openRawResource(R.drawable.a3);
mMovie = Movie.decodeStream(is);
或者呢
byte[] array = streamToBytes(is);
                mMovie = Movie.decodeByteArray(array, 0, array.length);
如果这么做还不能完全实现动态效果,必须是时时更新画面,才可以达到播放gif效果:
long now = android.os.SystemClock.uptimeMillis();
            if (mMovieStart == 0) {   // first time
                mMovieStart = now;
            }
            if (mMovie != null) {
                int dur = mMovie.duration();
                Log.i("dur","AA"+dur);
                if (dur == 0) {
                    dur = 300;
                }
                int relTime = (int)((now - mMovieStart) % dur);
                mMovie.setTime(relTime);
               // mMovie.draw(canvas, getWidth() - mMovie.width(),  getHeight() - mMovie.height());
                mMovie.draw(canvas, 150,250);
                invalidate();
            }
上面的代码中最重要的就是 mMovie.setTime(relTime); 里面的参数必须是变化的 不然也只有第一帧动画
invalidate();也是必须的
其他的细节就是画图了:
两种方法,也说不上两种方法了 只要注意就好:
canvas.drawBitmap(mBitmap4, 210, 170, null);
           
  mDrawable.draw(canvas);
第二种只是当你设置setBounds属性的时候,画图显示只能采用这种方法而不能采用上面的方法。
mDrawable = context.getResources().getDrawable(R.drawable.button);
            mDrawable.setBounds(150, 20, 300, 100);
分享到:
评论

相关推荐

    Android画图的Demo—还可以浏览图片-播放图片

    首先,我们来探讨Android画图的基本概念。在Android中,画图主要通过Canvas类来完成,它提供了一系列的方法用于在Surface上绘制各种形状、线条和图像。例如,`drawRect()`用于绘制矩形,`drawCircle()`用于绘制圆形...

    android开发资料大全

    android 播放gif图片 DEMO Android图片浏览之源码 图片浏览器android源码下载 Android瀑布流加载图片效果实例 Android中利用ViewPager实现视图切换 Android泡泡聊天界面的源码实现 android 实现EditText震动效果 ...

    android二维图形

    Android系统提供了一个定制的2D图形库,使得开发者能够轻松地绘制图形、图像并实现动画效果。本文将探讨如何在Android应用程序中利用Drawable对象进行画图,并介绍如何创建动画,包括图形的补间动画和连续动画。 ...

    matlab画图各种虚线代码-made-in-france:France法国制造的整洁项目清单

    matlab画图各种虚线代码法国制造 法国制造的整洁项目清单 内容 JavaScript :glowing_star: 名称 描述 :globe_showing_Europe-Africa: 6408 / 专门用于图形绘制JavaScript库 5964 / Bootstrap 3的AngularJS 1.2+本机...

    雷达扫描特效+倒影效果+详细注释

    综上所述,"雷达扫描特效+倒影效果+详细注释"这个压缩包提供了一个学习Android图形编程和特效实现的实战案例。通过研究其中的代码和注释,开发者可以提升自己的技能,理解如何利用Canvas、Paint、Path以及动画机制来...

    安卓头像制作图片圆角剪裁相关-个人简介.zip

    在Android开发中,有多种方法可以实现这一效果,如使用Canvas和Paint对象进行画图操作,使用BitmapShader实现Shader效果,或者利用第三方库如Picasso、Glide等集成的圆角转换功能。 【压缩包子文件的文件名称列表】...

    图片编辑dmeo

    在Android中,可以自定义一个Undoable接口来实现类似功能。 7. 添加时间戳:在图片上添加时间戳可以记录图片的创建或修改时间。这需要获取系统时间,转换为字符串,并用特定字体和样式在图片上绘制出来。在Android...

    AndroidPaint:自定义视图和手势控制的游乐场

    安卓画图应用 这是一个 Android Paint 应用程序。 这是一个了解自定义视图、手势控制等的游乐场。 花费时间:共花费3小时 完成的用户故事: 用户可以按下以在画布上绘图。 用户可以选择至少 6 种颜色来绘制。 ...

    屏幕抓图技巧

    - 印象键(PrtScn):按下该键,会截取整个屏幕到剪贴板,然后可以粘贴到图像编辑软件如画图或Photoshop中保存。 - Alt + PrtScn:组合键用于截取当前活动窗口,并将其保存到剪贴板。 - Windows键 + Print Screen...

    屏幕截图软件

    9. **跨平台支持**:考虑到多设备使用的需要,部分屏幕截图软件支持跨平台使用,如Chromebook、iOS和Android设备,确保用户在不同设备间保持一致的截图体验。 10. **自定义设置**:高级的屏幕截图软件允许用户...

Global site tag (gtag.js) - Google Analytics