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中,处理这种格式的图片需要特别的方法,因为默认的ImageView组件并不支持GIF动画。 要实现在Android应用中显示GIF图片,我们可以使用以下几种方法: 1. **利用第三方库**:由于Android原生API对GIF支持...
本文将深入探讨如何在Android中有效地显示gif图片,并提供相关的知识点。 首先,Android原生的ImageView控件并不支持直接显示GIF动态图,因此我们需要借助第三方库或者自定义控件来实现这个功能。其中,两个常用的...
在Android开发中,GIF图片的动态显示是一个常见的需求,特别是在社交、游戏或者动画应用中。本篇将详细讲解如何在Android中实现GIF图片的动态播放,主要围绕标题"android gif图片播放"和描述中的内容展开。 首先,...
在Android开发中,加载Gif图片是一项常见的任务,特别是在创建动态表情、动画或者游戏场景时。Gif格式因其小巧且支持动画的特点,被广泛应用于移动应用。本篇将深入探讨如何在Android中加载和显示Gif图片。 1. **...
总之,要在`Android TextView`中显示GIF图片,你可以选择使用第三方库如`Glide`,或者自定义组件和`Spanned`实现。无论哪种方式,都需要对Android UI组件、图片加载机制以及动画处理有深入的理解。在实际项目中,应...
在Android平台上,播放GIF图片是一项常见的需求,无论是用于加载动画、表情符号还是其他动态展示。本示例将深入探讨如何在Android应用中实现这一功能,以帮助开发者更好地理解和运用。 首先,我们要知道GIF是一种...
首先,让我们了解一下GIF图片的原理。GIF(Graphics Interchange Format)是一种无损压缩的图像格式,它支持透明度和多帧动画。每一帧可以有独立的透明度设置,通过按照特定的时间顺序显示这些帧,就形成了动画效果...
在Android平台上,加载和显示GIF图片是一项常见的需求,特别是在创建动态效果或者动画时。GIF是一种支持多帧图像和简单动画的文件格式,但在原生的Android SDK中,并不直接支持显示GIF。因此,我们需要借助第三方库...
在Android平台上,显示GIF动画图像可能比显示静态图片复杂一些,因为Android原生API并不直接支持GIF的播放。然而,通过第三方库或者自定义控件,我们可以轻松实现这一功能。以下是一个关于如何在Android应用中显示...
在Android开发中,动态显示GIF图片是一项常见的需求,尤其在制作动画效果或者加载等待界面时。本教程将深入探讨如何在Activity中实现这一功能,同时讲解如何对GIF图片的播放进行监听。 首先,我们需要引入能够处理...
首先,Android系统本身并不直接支持GIF格式的动态图片播放。因此,我们需要借助第三方库来实现这一功能。在描述中提到的“导入代码即可运行”,通常是指引入一个成熟的GIF库,如Android-Universal-Image-Loader、 ...
本文将深入探讨如何在Android应用中实现加载和显示GIF图片。 首先,Android原生的Bitmap类并不支持直接加载和播放GIF文件,因此我们需要借助第三方库来实现这一功能。一个常用的库是`NineOldAndroids`和`Android-...
它通常比直接使用Android支持库中的GIF解析器更高效,因为它专注于GIF动画的显示,优化了内存管理和性能。 - GIFView通过解析GIF文件的每一帧并进行逐帧渲染,实现了流畅的动画效果。 3. **集成GIFView** - 将...
在Android开发中,加载GIF图片并实现动画效果是一项常见的需求,特别是在制作动态表情、加载指示器或游戏动画等场景中。本篇文章将详细介绍如何在Android应用中加载和播放GIF图片。 首先,我们需要理解GIF是一种...
在Android开发中,有时我们需要在应用中展示动态的GIF图片,这通常涉及到对GIF动画的播放。本文将深入探讨如何在Android平台上实现在应用中播放GIF动画,并介绍一个已经封装好的jar包,方便开发者直接使用。 GIF是...
综上所述,解决Android中显示大GIF图片导致的内存溢出问题,需要结合多种策略,包括但不限于选择合适的GIF解析库、使用JNI进行优化、异步加载、流式处理、内存管理和预处理等。同时,不断地测试和调整,以找到最佳的...
本文将深入探讨如何使用`pl.droidsonroids.gif:android-gif-drawable`库来实现GIF图片的播放和暂停功能。 首先,`pl.droidsonroids.gif:android-gif-drawable`是一个强大的Android库,专门用于处理GIF图像。它提供...
- `Glide`:这是一个流行的图片加载库,支持Gif图片的加载和显示。通过`Glide.with(context).load(gifUrl).into(imageView)`即可实现Gif的加载。 - `Picasso`:另一款常用的图片加载库,也可以处理Gif,但需要配合...
总的来说,`android-gif-drawable`是一个强大且灵活的库,它解决了Android平台原生不支持GIF动画的问题,提供了丰富的控制选项和优化的性能。通过合理使用和适当优化,开发者可以轻松地在应用中加入生动有趣的动态...