java movie_java – 关于Android的Movie类的信息

我一直在尝试使用this方法做同样的事情(显示动画GIF).

只有在指定uses-sdk android:minSdkVersion =“3”时才有效

用于缩放…

package com.example.GIFShow;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Movie;

import android.graphics.Rect;

import android.util.Log;

import android.view.View;

class MYGIFView extends View {

private static final boolean twigDebug = true;

private Movie mMovie;

private long mMovieStart;

MYGIFView(Context aContext, Movie aMovie) {

super(aContext);

if (aMovie == null)

return;

mMovie = aMovie;

mMovieStart = android.os.SystemClock.uptimeMillis();

}

protected void onDraw(Canvas aCanvas) {

super.onDraw(aCanvas);

if (mMovie == null || mMovie.duration() == 0)

return;

int relTime = (int)((android.os.SystemClock.uptimeMillis() - mMovieStart)

% mMovie.duration());

mMovie.setTime(relTime);

Bitmap movieBitmap = Bitmap.createBitmap(mMovie.width(), mMovie.height(),

Bitmap.Config.ARGB_8888);

Canvas movieCanvas = new Canvas(movieBitmap);

mMovie.draw(movieCanvas, 0, 0);

Rect src = new Rect(0, 0, mMovie.width(), mMovie.height());

Rect dst = new Rect(0, 0, this.getWidth(), this.getHeight());

aCanvas.drawBitmap(movieBitmap, src, dst, null);

this.invalidate();

}

}

现在,您可以通过以下两种方式之一获取并将Movie对象传递给该类…

从项目可绘制文件夹中获取输入GIF Movie对象

Movie movie = Movie.decodeStream

(context.getResources().openRawResource(R.drawable.somefile));

或者从外部存储器获取输入GIF Movie对象

(/ mnt / sdcard … / mnt / extSdCard …等)

Movie movie = null;

try {

FileInputStream stream =

new FileInputStream(Environment.getExternalStorageDirectory() +

"/somefolder/somefile.gif");

try {

byte[] byteStream = streamToBytes(stream);

movie = Movie.decodeByteArray(byteStream, 0, byteStream.length);

}

finally {

stream.close();

}

}

catch (IOException e) { }

现在将移动的GIF图像/电影对象设置到您的活动视图中:

View view = new MYGIFView(this, movie);

setContentView(view);

如果从外部存储器获取GIF图像/电影对象(第二个示例),则需要支持例程:

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值