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

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

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

WebView и gif анимация - Android

22.12.2015, 10:55. Просмотров 305. Ответов 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 анимация
Посмотрите здесь:

Android WebView ошибка
Android gif анимация и WebView
Android WebView. Крякозябры
Gif анимация в Android Android
Прозрачность WebView Android
Отработать JS в WebView Android
Gif анимация в приложении Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 827
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
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 827
22.12.2015, 14:14     WebView и gif анимация #4
Цитата Сообщение от Rube Посмотреть сообщение
не фанат, не пользуюсь, знал бы так. А там точно WebView, вы уверены?
нее, там не WebView, я лишь хотел сказать что само поведение такое вполне юзабельное
а почему Вы считаете костылем android:largeHeap=true, это же вполне законная штука так сказать? или из за того что это не решает проблему, а лишь уменьшает шанс ее возникновения
dajver
407 / 271 / 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
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
22.12.2015, 16:20     WebView и gif анимация #7
Цитата Сообщение от Rube Посмотреть сообщение
Проверить надо как оно.
Сколь не тестировал - работало нормально. Но почему-то все говорят, что памяти больше система может и не выделить, возможно в особых случаях так и будет.
Цитата Сообщение от Rube Посмотреть сообщение
Клик по картинке в html запускает вью с гифкой
Ну тут ничего сложного нет, ловим переходы по ссылкам и получаем из ссылки все что нужно для получения гифки (это если доступ к html коду есть). А если html чужой уже сложнее - придется менять все ссылки на гифки ссылками на картинки и подставлять в url картинки какие-то данные, для получения гифки. Вообще это все геморно лучше вообще стараться не использовать WebView.
dajver
407 / 271 / 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
407 / 271 / 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 анимация
Еще ссылки по теме:

Android WebView в фоне
Android Webview на фрагменте
В Webview не работает анимация CSS Android
Android Gif в WebView
Android WebView zoom

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

Или воспользуйтесь поиском по форуму:
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 анимация
Ответ Создать тему
Опции темы

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