誰かがWebビューにGIF画像を表示するコードを提供できますか(私はすでにpng画像のフレームアニメーションを使用して同じものを表示できます)フレームをロードしたり画像を再度描画したりするのではなく、GIF画像を表示する方法が必要ですそしてまた!
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");
これを試して..
WebView wv = (WebView) findViewById(R.id.webView1);
wv.loadUrl("file:///Android_asset/anim5.gif");
このようなアセットからGIF画像を呼び出すだけです。
これは、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のように機能します。
HTMLコードは必要ありません...この行を使用するだけです
webViewControl.LoadUrl("file://" + pathToTheGifFile);
わたしにはできる。
はい、これはgifがAndroid別の解決策としてサポートされていない権利です TRonZ
WebViewはgifをサポートしています、ただmake a WebView
およびload the URL of the gif image
そしてあなたは終わりです
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);
GIFファイルをAssetsフォルダーに保存します。ここで、「loading.gif」はファイル名です。
WebView webView=new WebView();
Content = webView;
webView.Source = new HtmlWebViewSource
{
Html = $"<body\"><img src=\"loading.gif\"/></body>"
};
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>