Я хочу отображать анимированные GIF-изображения в своем приложении. Как я убедился на собственном опыте, Android изначально не поддерживает анимированный GIF.
в вашем действии поместите следующий код внутри onCreate
web = (WebView) findViewById(R.id.webView); web.setBackgroundColor(Color.TRANSPARENT); //for gif without background web.loadUrl("file:///android_asset/htmls/name.html");
если вы хотите загружать файлы динамически, вам нужно загрузить webview с данными:
// or "[path]/name.gif" (e.g: file:///android_asset/name.gif for resources in asset folder), and in loadDataWithBaseURL(), you don't need to set base URL, on the other hand, it's similar to loadData() method. StringgifName="name.gif"; StringyourData="<html style=\"margin: 0;\">\n" + " <body style=\"margin: 0;\">\n" + " <img src=" + gifName + " style=\"width: 100%; height: 100%\" />\n" + " </body>\n" + " </html>"; // Important to add this attribute to webView to get resource from outside. webView.getSettings().setAllowFileAccess(true);
// Notice: should use loadDataWithBaseURL. BaseUrl could be the base url such as the path to asset folder, or SDCard or any other path, where your images or the other media resides related to your html webView.loadDataWithBaseURL("file:///android_asset/", yourData, "text/html", "utf-8", null); // Or if you want to load image from SD card or where else, here is the idea. Stringbase= Environment.getExternalStorageDirectory().getAbsolutePath().toString(); webView.loadDataWithBaseURL(base + '/', yourData, "text/html", "utf-8", null);
Я решил проблему, разбив gif анимацию на кадры перед сохранением ее на телефон, поэтому мне не пришлось бы иметь с этим дело в Android.
Затем я загружаю каждый кадр на телефон, создаю из него возможность рисования, а затем создаю AnimationDrawable - очень похоже на пример из моего вопроса