Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
#1

WebView и gif анимация - Программирование Android

22.12.2015, 10:55. Просмотров 367. Ответов 10
Метки нет (Все метки)

Делаю приложение где html c гифками (качаются с инета) выводятся на WebView.
Все работает до тех пор пока не появится тяжелая гифка, размером 10-20 мб. Приложение перезапускается с ошибкой "Channel is unrecoverably broken and will be disposed!".
На ум приходит несколько вариантов:
1. Уменьшать гифку при скачивании. Есть ли такие инструменты? Страдает качество - минус.
2. Прописать в манифесте android:largeHeap=true (еще не пробовал). Костыль - минус.
3. Рисовать в WebView не гифку, а статическое изображение, а гифку открывать после тапа на него в отдельном окне. оптимальное рашение мне кажется, кто нибудь сталкивался с таким?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2015, 10:55     WebView и gif анимация
Посмотрите здесь:

gif анимация и WebView - Программирование Android
WebView отображает HTML страницу из assets. На странице кроме текста и картинок есть ещё и gif анимация, которая отображается как картинка....

В Webview не работает анимация CSS - Программирование Android
Всем доброго времени суток! Нужно сделать приложение на основе сайта, на сайте есть Выплывающая панель... CSS: #navPanel { ...

Gif анимация в приложении - Программирование Android
Народ, был ли у кого-нибудь опыт показа git анимации в своих приложениях? Поделитесь как это можно сделать. Варианты типо покадровой смены...

Gif анимация в Android - Программирование Android
Как запустить gif файл в андроид приложении. Делал этот файл фоном,но он просто стоит на месте как статичная картинка. Или такие вещи...

Закгрузить файл в WebView - Программирование Android
Всем привет! Я сделал webview для сайта и теперь при загрузки файла на сайт ,при выборе файла нечего не пооисходит ,как сделать ,чтоб можно...

WebView. Навигация свайпом - Программирование Android
Здравствуйте! Есть WebView, статьи в который подгружаются из res/raw (n1.txt - n...txt), одна статья - один файл. Как свайпом осуществить...

Передача с webview в jsoup - Программирование Android
Здравствуйте.Подскажите,как решить проблему. Необходимо что бы все хтмл странички открывались спарсенными по условию, к примеру для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 836
22.12.2015, 11:03     WebView и gif анимация #2
Цитата Сообщение от Rube Посмотреть сообщение
Рисовать в WebView не гифку, а статическое изображение, а гифку открывать после тапа на него в отдельном окне. оптимальное рашение мне кажется, кто нибудь сталкивался с таким?
ну так в мобильном клиенте VK так и реализовано, вполне приемлемое решение как по мне
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
22.12.2015, 12:25  [ТС]     WebView и gif анимация #3
androbro, не фанат, не пользуюсь, знал бы так. А там точно WebView, вы уверены?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 836
22.12.2015, 14:14     WebView и gif анимация #4
Цитата Сообщение от Rube Посмотреть сообщение
не фанат, не пользуюсь, знал бы так. А там точно WebView, вы уверены?
нее, там не WebView, я лишь хотел сказать что само поведение такое вполне юзабельное
а почему Вы считаете костылем android:largeHeap=true, это же вполне законная штука так сказать? или из за того что это не решает проблему, а лишь уменьшает шанс ее возникновения
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
22.12.2015, 14:17     WebView и gif анимация #5
Есть куча библиотек для воспроизведения гиф анимацией, чем они вам не нравятся?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
22.12.2015, 15:45  [ТС]     WebView и gif анимация #6
Цитата Сообщение от androbro Посмотреть сообщение
а почему Вы считаете костылем android:largeHeap=true
Проверить надо как оно.
Цитата Сообщение от dajver Посмотреть сообщение
Есть куча библиотек для воспроизведения гиф анимацией
Есть то они есть. Вопрос в другом.
Клик по картинке в html запускает вью с гифкой. Это реализуемо. А есть туториалы?
Как сделать картинку из гифки.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
22.12.2015, 16:20     WebView и gif анимация #7
Цитата Сообщение от Rube Посмотреть сообщение
Проверить надо как оно.
Сколь не тестировал - работало нормально. Но почему-то все говорят, что памяти больше система может и не выделить, возможно в особых случаях так и будет.
Цитата Сообщение от Rube Посмотреть сообщение
Клик по картинке в html запускает вью с гифкой
Ну тут ничего сложного нет, ловим переходы по ссылкам и получаем из ссылки все что нужно для получения гифки (это если доступ к html коду есть). А если html чужой уже сложнее - придется менять все ссылки на гифки ссылками на картинки и подставлять в url картинки какие-то данные, для получения гифки. Вообще это все геморно лучше вообще стараться не использовать WebView.
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
22.12.2015, 16:38     WebView и gif анимация #8
Цитата Сообщение от Rube Посмотреть сообщение
Есть то они есть. Вопрос в другом.
Клик по картинке в html запускает вью с гифкой. Это реализуемо. А есть туториалы?
Как сделать картинку из гифки.
https://github.com/koush/ion

Java
1
2
3
4
Ion.with(imgView)
  .error(R.drawable.default_image)
  .animateGif(AnimateGifMode.ANIMATE)
  .load("file:///android_asset/animated.gif");
и все

Добавлено через 2 минуты
или вот еще одна библиотека
https://github.com/koral--/android-gif-drawable

http://stackoverflow.com/a/31639737/520349 вот пример
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
22.12.2015, 20:32  [ТС]     WebView и gif анимация #9
android:largeHeap не помог.
У меня уже готовый html (в папке files) с текстом и картинками, который загружается в webview.
И когда попадается тяжелый gif, то активити с webview через секунду-две закрывается с логом "Channel is unrecoverably broken and will be disposed!". Не хватает памяти, т.к. на эмуляторе работает.
В Ion не проблема передать ссылку на гифку, но страницу надо ж открыть это раз, и два это сделать вместо гифки кликабельную статичную картинку типа jpeg, желательно отбражающую первый кадр. Вот как это сделать есть мысли?

Добавлено через 22 минуты
Т.к. тяжелые гифки попадаются относительно редко, то думаю можно сделать шаблонную кликабельную картинку и вставлять ее если размер файла превышает например 5 мб.
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
22.12.2015, 21:45     WebView и gif анимация #10
https://github.com/dragon66/pixymeta-android/issues/3 попробуйте это, там есть либа, которая бьет на фреймы. Там чувак написал как пользоваться
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2015, 11:07     WebView и gif анимация
Еще ссылки по теме:

Получить html из WebView - Программирование Android
Здравствуйте! Собственно вопрос в том, как получить html уже загруженной страницы в WebView?

onClick и onLongClick у WebView - Программирование Android
Собственно как научить WebView обрабатывать эти 2 события?

WebView и реализации tel: - Программирование Android
Приложение разрабатывается в android studio. Используется компонент WebView для отображения одного сайта(при запуске открывается именно...

Не работает javascript в WebView - Программирование Android
Добрый день не столкнулся с проблемой: неотрабатывает javaScript в webView (android 4.2). Для загрузки страницы использую...

Открытие svg в webview - Программирование Android
Всем привет! Столкнулся с проблемой, связанной с WebView: При загрузке svg-шного изображения в webview конструкцией типа ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
23.12.2015, 11:07  [ТС]     WebView и gif анимация #11
Цитата Сообщение от dajver Посмотреть сообщение
попробуйте это, там есть либа, которая бьет на фреймы
Инструкция разбиения гифки на фреймы и сохранения 1-го фрейма в папке files:
Копируем класс в проект.
Добавляем в активити:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void saveFrame (String filename, String outputfilename) {
    FrameReader reader = new FrameReader();
    try {
        InputStream is = getAssets().open(filename);            
        GIFFrame frame = reader.getGIFFrame(is);
        Bitmap bi = frame.getFrame();
        File file = new File(getFilesDir() + "/", outputfilename);
        FileOutputStream outStream = new FileOutputStream(file);
        bi.compress(Bitmap.CompressFormat.PNG, 100, outStream);
        outStream.flush();
        outStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}   
 
public class FrameReader extends AnimatedGIFReader {
    public GIFFrame getGIFFrame(InputStream is) throws Exception {
        Bitmap bmp = getFrameAsBitmap(is);
        return (bmp != null)?new GIFFrame(bmp, image_x, image_y, delay, disposalMethod, 
            userInputFlag, transparencyFlag, transparent_color):null;
    }
}
Yandex
Объявления
23.12.2015, 11:07     WebView и gif анимация
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru