在我的Android应用程序中,我正在使用电影来显示gif,但我面临的问题是,如果我接收带有扩展名.gif的图像,只有一帧图像,则显示空白屏幕。
请告诉我在android中显示gif的更好方法。
我正在使用的代码是
public MYGIFView(Context context, InputStream is, int i, int j,int screenWidth,int screenHeight) {
super(context);
//is=context.getResources().openRawResource(red);
movie=Movie.decodeStream(is);
xcoordinate = i;
ycoordinate = j;
viewWidth = screenWidth;
viewHeight = screenHeight;
setLayoutParams(new LayoutParams(viewWidth,viewHeight));
}
@Override
protected void onDraw(Canvas canvas) {
if(movie != null) {
long now = android.os.SystemClock.uptimeMillis();
int dur = Math.max(movie.duration(), 1); // is it really animated?
int pos = (int)(now % dur);
movie.setTime(pos);
movie.draw(canvas,xcoordinate, ycoordinate);
}
答案 0 :(得分:0)
此API demos itself provides a solution。
我认为你缺少的是触发这部电影。
这样做:
Handler handler = new Handler();
new Thread() {
@Override public void run() {
// ... setup the movie (using the code from above)
// ... create and display the custom view, passing the movie
while(!Thread.currentThread().isInterrupted()) {
handler.post(new Runnable() {
public void run(){
view.invalidate();
}
});
try {
Thread.sleep(50); // yields 20 fps
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}.start();
或者如API演示所示,使onDraw()
事件本身中的视图无效,导致重绘,直到电影的持续时间结束。
答案 1 :(得分:0)
我试过这样的工作gif文件在android中运行。
<强> MainActivity.java 强>
package com.example.gifview;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GifWebView view = new GifWebView(this, "file:///android_asset/earth.gif");
setContentView(view);
}
}
<强> GifWebView.java 强>
package com.example.gifview;
import android.content.Context;
import android.webkit.WebView;
public class GifWebView extends WebView {
public GifWebView(Context context, String path) {
// TODO Auto-generated constructor stub
super(context);
loadUrl(path);
}
}
注意:无需在activity_main.xml
中进行编辑答案 2 :(得分:0)
您无法直接将.GIF图片加载到Android。
您可以通过ImageSwitcher或其他替代方法欺骗它。 请参阅此链接,Adding gif image in an ImageView in android