gpt4 book ai didi

android - 在android中显示gif

转载 作者:IT老高 更新时间:2023-10-28 23:22:45 28 4
gpt4 key购买 nike

我有这个代码来显示带有电影的 gif 图像。

public class GIFView extends View{        
private Movie movie;
private InputStream is;
private long moviestart;
public GIFView(Context context) {
super(context);
is=getResources().openRawResource(R.drawable.anim_cerca);
movie=Movie.decodeStream(is);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
long now=android.os.SystemClock.uptimeMillis();

if (moviestart == 0)
moviestart = now;

int relTime = (int)((now - moviestart) % movie.duration());
movie.setTime(relTime);
movie.draw(canvas,10,10);
this.invalidate();
}

}

我的问题是在加载 gif 时产生的,它画得非常糟糕,只显示第一帧,其他的都被打扰了。我能做什么?

编辑:问题是模拟器!它不显示 GIF,但在设备上没问题! :)

最佳答案

好的开始。必须让它在添加到 View 后加载不同的 gif 以及 Assets 或资源更有用。此外,对于具有硬件加速功能的设备,我得到了空白 View ,因此我为这个 GIFView 关闭了它。

另外,请务必将动画 gif 放入 res/drawable-xhdpi 目录(如果使用这种方式,则放入 assets)

public class GIFView extends View{

Movie movie;
long moviestart;

public GIFView(Context context) throws IOException {
super(context);
}
public GIFView(Context context, AttributeSet attrs) throws IOException{
super(context, attrs);
}
public GIFView(Context context, AttributeSet attrs, int defStyle) throws IOException {
super(context, attrs, defStyle);
}

public void loadGIFResource(Context context, int id)
{
//turn off hardware acceleration
this.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
InputStream is=context.getResources().openRawResource(id);
movie = Movie.decodeStream(is);
}

public void loadGIFAsset(Context context, String filename)
{
InputStream is;
try {
is = context.getResources().getAssets().open(filename);
movie = Movie.decodeStream(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (movie == null) {
return;
}

long now=android.os.SystemClock.uptimeMillis();

if (moviestart == 0) moviestart = now;

int relTime;
relTime = (int)((now - moviestart) % movie.duration());
movie.setTime(relTime);
movie.draw(canvas,10,10);
this.invalidate();
}
}

用法:

imageView.loadGIFResource(this, R.drawable.quickguide_1);

<com.eyeverify.GIFView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="50dp"
android:layout_marginTop="110dp"
android:src="@drawable/quickguide_1"/>

关于android - 在android中显示gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777315/

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