Read Gif Images using WebView android

前端 未结 4 1746
渐次进展
渐次进展 2021-01-01 08:30

When I try to read a gif images using a WebView in Android 2.3.3 API 10, it\'s not animated (it appears static). How can I solve this issue? Is there any setting I must chan

4条回答
  •  悲哀的现实
    2021-01-01 08:45

    When you are trying to load gif from assets directory, its not animated, you should use GifWebView for this.

    activity_main.xml

    
    
    
        
        
    
    
    

    MainActivity.java

    package com.test2;
    
    import java.io.InputStream;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    public class MainActivity extends Activity {
    
        WebView webviewActionView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            InputStream stream = null;
            try {
                stream = getAssets().open("loading2.gif");
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            webviewActionView = (WebView)findViewById(R.id.webviewActionView);
            webviewActionView.setWebViewClient(new MyWebViewClient());
            webviewActionView.getSettings().setJavaScriptEnabled(true);
    
            GifWebView view = new GifWebView(this, stream);
            webviewActionView.addView(view);
        }
    
        private class MyWebViewClient extends WebViewClient {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        }
    }
    

    GifWebView.java

    package com.test2;
    
    import java.io.InputStream;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Movie;
    import android.os.SystemClock;
    import android.view.View;
    
    public class GifWebView extends View {
        private Movie mMovie;
        InputStream mStream;
        long mMoviestart;
    
        public GifWebView(Context context, InputStream stream) {
            super(context);
            mStream = stream;
            mMovie = Movie.decodeStream(mStream);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawColor(Color.TRANSPARENT);
            super.onDraw(canvas);
            final long now = SystemClock.uptimeMillis();
    
            if (mMoviestart == 0) {
                mMoviestart = now;
            }
            final int relTime = (int) ((now - mMoviestart) % mMovie.duration());
            mMovie.setTime(relTime);
            mMovie.draw(canvas, 10, 10);
            this.invalidate();
        }
    }
    

    Put "loading2.gif" file in your assets directory.

    Download this full deom from below link

    Download Demo

提交回复
热议问题