`

如何让Android支持GIF图片

 
阅读更多

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);
    }
}
 
分享到:
评论

相关推荐

    android gif图片循环显示

    在Android中,处理这种格式的图片需要特别的方法,因为默认的ImageView组件并不支持GIF动画。 要实现在Android应用中显示GIF图片,我们可以使用以下几种方法: 1. **利用第三方库**:由于Android原生API对GIF支持...

    Android 显示gif图片

    本文将深入探讨如何在Android中有效地显示gif图片,并提供相关的知识点。 首先,Android原生的ImageView控件并不支持直接显示GIF动态图,因此我们需要借助第三方库或者自定义控件来实现这个功能。其中,两个常用的...

    android gif图片播放

    在Android开发中,GIF图片的动态显示是一个常见的需求,特别是在社交、游戏或者动画应用中。本篇将详细讲解如何在Android中实现GIF图片的动态播放,主要围绕标题"android gif图片播放"和描述中的内容展开。 首先,...

    android加载Gif图片

    在Android开发中,加载Gif图片是一项常见的任务,特别是在创建动态表情、动画或者游戏场景时。Gif格式因其小巧且支持动画的特点,被广泛应用于移动应用。本篇将深入探讨如何在Android中加载和显示Gif图片。 1. **...

    android TextView 显示Gif 图片

    总之,要在`Android TextView`中显示GIF图片,你可以选择使用第三方库如`Glide`,或者自定义组件和`Spanned`实现。无论哪种方式,都需要对Android UI组件、图片加载机制以及动画处理有深入的理解。在实际项目中,应...

    android播放gif图片

    在Android平台上,播放GIF图片是一项常见的需求,无论是用于加载动画、表情符号还是其他动态展示。本示例将深入探讨如何在Android应用中实现这一功能,以帮助开发者更好地理解和运用。 首先,我们要知道GIF是一种...

    android_gif_drawable(播放gif图片)

    首先,让我们了解一下GIF图片的原理。GIF(Graphics Interchange Format)是一种无损压缩的图像格式,它支持透明度和多帧动画。每一帧可以有独立的透明度设置,通过按照特定的时间顺序显示这些帧,就形成了动画效果...

    android 加载(显示)gif图片

    在Android平台上,加载和显示GIF图片是一项常见的需求,特别是在创建动态效果或者动画时。GIF是一种支持多帧图像和简单动画的文件格式,但在原生的Android SDK中,并不直接支持显示GIF。因此,我们需要借助第三方库...

    android显示gif图片完整代码

    在Android平台上,显示GIF动画图像可能比显示静态图片复杂一些,因为Android原生API并不直接支持GIF的播放。然而,通过第三方库或者自定义控件,我们可以轻松实现这一功能。以下是一个关于如何在Android应用中显示...

    Android动态gif图片显示与监听

    在Android开发中,动态显示GIF图片是一项常见的需求,尤其在制作动画效果或者加载等待界面时。本教程将深入探讨如何在Activity中实现这一功能,同时讲解如何对GIF图片的播放进行监听。 首先,我们需要引入能够处理...

    Android GIF图片播放实现

    首先,Android系统本身并不直接支持GIF格式的动态图片播放。因此,我们需要借助第三方库来实现这一功能。在描述中提到的“导入代码即可运行”,通常是指引入一个成熟的GIF库,如Android-Universal-Image-Loader、 ...

    android 加载gif图片

    本文将深入探讨如何在Android应用中实现加载和显示GIF图片。 首先,Android原生的Bitmap类并不支持直接加载和播放GIF文件,因此我们需要借助第三方库来实现这一功能。一个常用的库是`NineOldAndroids`和`Android-...

    Android手机GIF图片的使用

    它通常比直接使用Android支持库中的GIF解析器更高效,因为它专注于GIF动画的显示,优化了内存管理和性能。 - GIFView通过解析GIF文件的每一帧并进行逐帧渲染,实现了流畅的动画效果。 3. **集成GIFView** - 将...

    android中加载gif图片

    在Android开发中,加载GIF图片并实现动画效果是一项常见的需求,特别是在制作动态表情、加载指示器或游戏动画等场景中。本篇文章将详细介绍如何在Android应用中加载和播放GIF图片。 首先,我们需要理解GIF是一种...

    android播放gif图片动画

    在Android开发中,有时我们需要在应用中展示动态的GIF图片,这通常涉及到对GIF动画的播放。本文将深入探讨如何在Android平台上实现在应用中播放GIF动画,并介绍一个已经封装好的jar包,方便开发者直接使用。 GIF是...

    android 显示大的gif图片 能解决内存溢出的问题

    综上所述,解决Android中显示大GIF图片导致的内存溢出问题,需要结合多种策略,包括但不限于选择合适的GIF解析库、使用JNI进行优化、异步加载、流式处理、内存管理和预处理等。同时,不断地测试和调整,以找到最佳的...

    android gif图片播放、暂停

    本文将深入探讨如何使用`pl.droidsonroids.gif:android-gif-drawable`库来实现GIF图片的播放和暂停功能。 首先,`pl.droidsonroids.gif:android-gif-drawable`是一个强大的Android库,专门用于处理GIF图像。它提供...

    AndroidDemo Gif图片展示

    - `Glide`:这是一个流行的图片加载库,支持Gif图片的加载和显示。通过`Glide.with(context).load(gifUrl).into(imageView)`即可实现Gif的加载。 - `Picasso`:另一款常用的图片加载库,也可以处理Gif,但需要配合...

    Android-android-gif-drawable用于在Android上显示动画GIF

    总的来说,`android-gif-drawable`是一个强大且灵活的库,它解决了Android平台原生不支持GIF动画的问题,提供了丰富的控制选项和优化的性能。通过合理使用和适当优化,开发者可以轻松地在应用中加入生动有趣的动态...

Global site tag (gtag.js) - Google Analytics