有人可以提供代码在webview中显示GIF图像(我已经能够使用png图像的帧动画显示相同的内容)现在我想要一种方法来显示GIF图像而不是加载框架或绘图这些图像一次又一次!
答案 0 :(得分:23)
试试这个..
WebView wv = (WebView) findViewById(R.id.webView1);
wv.loadUrl("file:///android_asset/anim5.gif");
只需从像这样的资产中调用您的GIF图像..
答案 1 :(得分:16)
网页视图支持Gif。
编写一个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");
答案 2 :(得分:3)
这是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:backgroun d声明的drawable是GIF文件,那么它们将自动识别为GifDrawables 并且动画。如果给定的drawable不是GIF,那么提到的Views就像普通的ImageView和ImageButton一样。
答案 3 :(得分:1)
是的,这是gif在android中不支持的权利
另一个解决方案作为TRonZ
WebView支持gif,只需make a WebView
和load the URL of the gif image
即可完成
答案 4 :(得分:0)
您不需要任何HTML代码......只需使用此行
即可webViewControl.LoadUrl("file://" + pathToTheGifFile);
它适合我。
答案 5 :(得分:0)
在webview中加载gif并将其放入设备屏幕,无需任何HTML代码...尝试此代码
mWebView = ((CustomWebView)mRootView.findViewById(R.id.webview));
mWebView.loadUrl("file:///android_asset/file.gif");
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
答案 6 :(得分:0)
将GIF文件保存在Assets文件夹中。这里的“ loading.gif”是文件名。
WebView webView=new WebView();
Content = webView;
webView.Source = new HtmlWebViewSource
{
Html = $"<body\"><img src=\"loading.gif\"/></body>"
};
答案 7 :(得分:0)
在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>