web-dev-qa-db-ja.com

WebViewを使用したGIF画像表示

誰かがWebビューにGIF画像を表示するコードを提供できますか(私はすでにpng画像のフレームアニメーションを使用して同じものを表示できます)フレームをロードしたり画像を再度描画したりするのではなく、GIF画像を表示する方法が必要ですそしてまた!

12
msumaithri

GIFはWebビューでサポートされています。

次のようにhtmlファイルを記述します。

<html>
<body bgcolor="white">
    <table width="100%" height="100%">
        <tr>
            <td align="center" valign="center">
                <font color="gray">Some text you display</font>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <img src="yourGIF.gif">
            </td>
        </tr>
    </table>
</body>

アプリケーションの「assets」フォルダに保存し、gifも同じフォルダに保存します。そしてそれを示すために以下を行います:

webview.loadUrl("file:///Android_asset/your_html.html");
17
Kantesh

これを試して..

WebView wv = (WebView) findViewById(R.id.webView1);
wv.loadUrl("file:///Android_asset/anim5.gif");

このようなアセットからGIF画像を呼び出すだけです。

25
Avinash Jain

これは、Android:のGIFに最適なソリューションです。

プロジェクトのbuild.gradleファイルに次の依存関係を挿入します。

dependencies {
    compile 'pl.droidsonroids.gif:Android-gif-drawable:1.1.+'
}

その後

The simplest way is to use GifImageView 

<pl.droidsonroids.gif.GifImageView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:src="@drawable/src_anim"
    Android:background="@drawable/bg_anim"
    />

Android:srcおよび/またはAndroid:backgroundによって宣言されたドローアブルの場合GIFファイルの場合、それらは自動的にGifDrawablesとして認識され、アニメーション化されます。与えられたドローアブルがGIFでない場合、言及されたビューはプレーンなImageViewやImageButtonのように機能します。

https://github.com/koral--/Android-gif-drawable

4
Spl2nky

HTMLコードは必要ありません...この行を使用するだけです

webViewControl.LoadUrl("file://" + pathToTheGifFile);

わたしにはできる。

1
Ilber

はい、これはgifがAndroid別の解決策としてサポートされていない権利です TRonZ WebViewはgifをサポートしています、ただmake a WebViewおよびload the URL of the gif imageそしてあなたは終わりです

1
Parag Chauhan

GifをWebビューにロードし、HTMLコードなしでデバイス画面に合わせます...このコードを試してください

mWebView = ((CustomWebView)mRootView.findViewById(R.id.webview));
mWebView.loadUrl("file:///Android_asset/file.gif");
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
0
tony baby

GIFファイルをAssetsフォルダーに保存します。ここで、「loading.gif」はファイル名です。

    WebView webView=new WebView();
    Content = webView;

    webView.Source = new HtmlWebViewSource
    {
        Html = $"<body\"><img src=\"loading.gif\"/></body>"
    };
0
Kokul Jose

Srcフォルダーの下に「Utils」という名前のパッケージを作成し、「GifImageView」という名前のクラスを作成します

public class GifImageView extends View {
    private InputStream mInputStream;
    private Movie mMovie;
    private int mWidth, mHeight;
    private long mStart;
    private Context mContext;
    public GifImageView(Context context) {
        super(context);
        this.mContext = context;
    }
    public GifImageView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    public GifImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.mContext = context;
        if (attrs.getAttributeName(1).equals("background")) {
            int id = Integer.parseInt(attrs.getAttributeValue(1).substring(1));
            setGifImageResource(id);
        }
    }
    private void init() {
        setFocusable(true);
        mMovie = Movie.decodeStream(mInputStream);
        mWidth = mMovie.width();
        mHeight = mMovie.height();
        requestLayout();
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(mWidth, mHeight);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        long now = SystemClock.uptimeMillis();
        if (mStart == 0) {
            mStart = now;
        }
        if (mMovie != null) {
            int duration = mMovie.duration();
            if (duration == 0) {
                duration = 1000;
            }
            int relTime = (int) ((now - mStart) % duration);
            mMovie.setTime(relTime);
            mMovie.draw(canvas, 0, 0);
            invalidate();
        }
    }
    public void setGifImageResource(int id) {
        mInputStream = mContext.getResources().openRawResource(id);
        init();
    }
    public void setGifImageUri(Uri uri) {
        try {
            mInputStream = mContext.getContentResolver().openInputStream(uri);
            init();
        } catch (FileNotFoundException e) {
            Log.e("GIfImageView", "File not found");
        }
    }
}

次に、MainActivityファイルでGifImageViewを定義します:src/activity/MainActivity.class

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GifImageView gifImageView = (GifImageView) findViewById(R.id.GifImageView);
        gifImageView.setGifImageResource(R.drawable.smartphone_drib);
    }
}

今UIパーツファイル:res/layout/activity_main.xml

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin"
    Android:gravity="center"
    Android:background="#111E39"
    tools:context=".Activity.MainActivity">
    <com.Android.animatedgif.Utils.GifImageView
        Android:id="@+id/GifImageView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true" />

</RelativeLayout>

リソース: Androidでgif imageviewを表示する方法

0
Tienanhvn