在我的Android应用程序中我需要显示gif图像,我已经引用了一些代码来显示但是它不工作不知道我错过了哪里,看看我的代码
我的班级 公共类SampleAnimgif扩展了View {
private Movie mMovie;
private long mMovieStart;
public SampleAnimgif(Context context) {
super(context);
setFocusable(true);
java.io.InputStream is;
is = context.getResources().openRawResource(R.drawable.siren);
mMovie = Movie.decodeStream(is);
}
public SampleAnimgif(Context context, AttributeSet attrSet) {
super(context, attrSet);
setFocusable(true);
java.io.InputStream is;
is = context.getResources().openRawResource(R.drawable.siren);
mMovie = Movie.decodeStream(is);
}
public SampleAnimgif(Context context, AttributeSet attrSet, int defStyle) {
super(context, attrSet, defStyle);
setFocusable(true);
java.io.InputStream is;
is = context.getResources().openRawResource(R.drawable.siren);
mMovie = Movie.decodeStream(is);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(0x00000000);
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);
mMovie.draw(canvas, getWidth() / 2 - mMovie.width() / 2,
getHeight() / 2 - mMovie.height() / 2);
invalidate();
}
}
}
我的xml类
<com.example.activities.SampleAnimgif
android:id="@+id/gif_view"
android:layout_width="100dp"
android:layout_height="wrap_content" />
非常欢迎建议
由于
答案 0 :(得分:0)
我知道这个问题的答案很晚,但它可能对其他人有所帮助。我遇到了与用户相同的问题,我无法解决问题。经过大量的谷歌搜索,我找到了解决方案。问题是在4.0以上的Android手机中启用了硬件加速(我不确定。它可能高于3.0)。您需要做的就是在声明活动时将hardwareaccelation设置为false。
<activity
android:screenOrientation="portrait"
android:hardwareAccelerated="false">