gpt4 book ai didi

Android GIF 渲染问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:15 25 4
gpt4 key购买 nike

在我的 activity_main.xml 文件中,我有以下代码块,因为我想用它来制作我的 GIF 文件的动画。

<matthewallenlinsoftware.keepy_uppy.PlayGifView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/viewGif"
android:layout_gravity="center"
android:layout_weight="0.04"
android:src="@drawable/bouncing_ball" />

GIF 的动画效果很好,但这会导致 Android Studio 中出现渲染问题。有解决办法吗?

PlayGifView 的代码如下:

public class PlayGifView extends View {

private static final int DEFAULT_MOVIEW_DURATION = 1000;

private int mMovieResourceId;
private Movie mMovie;

private long mMovieStart = 0;
private int mCurrentAnimationTime = 0;

@SuppressLint("NewApi")
public PlayGifView(Context context, AttributeSet attrs) {
super(context, attrs);

/**
* Starting from HONEYCOMB have to turn off HardWare acceleration to draw
* Movie on Canvas.
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}

public void setImageResource(int mvId){
this.mMovieResourceId = mvId;
mMovie = Movie.decodeStream(getResources().openRawResource(mMovieResourceId));
requestLayout();
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if(mMovie != null){
setMeasuredDimension(mMovie.width(), mMovie.height());
}else{
setMeasuredDimension(getSuggestedMinimumWidth(), getSuggestedMinimumHeight());
}
}

@Override
protected void onDraw(Canvas canvas) {
if (mMovie != null){
updateAnimtionTime();
drawGif(canvas);
invalidate();
}else{
drawGif(canvas); //NULLPTR EXCEPTION
}
}

private void updateAnimtionTime() {
long now = android.os.SystemClock.uptimeMillis();

if (mMovieStart == 0) {
mMovieStart = now;
}
int dur = mMovie.duration();
if (dur == 0) {
dur = DEFAULT_MOVIEW_DURATION;
}
mCurrentAnimationTime = (int) ((now - mMovieStart) % dur);
}

private void drawGif(Canvas canvas) {
mMovie.setTime(mCurrentAnimationTime); //NULLPTR EXCEPTION
mMovie.draw(canvas, 0, 0);
canvas.restore();
}

}

最佳答案

如果您将 GIF 保存在 hdpi、xhdpi 等文件夹中。也可以直接将 GIF 复制到“drawable”中或尝试以管理员身份运行 android studio...

关于Android GIF 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34466840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com