Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Gif в WebView - Программирование Android
В одном известном браузере просмотр гиф реализован так: статическая картинка (фрейм), после клика по нему этот фрейм преобразуется в гифку....

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

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

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

Webview - Программирование Android
Всем привет.У меня вопросище. Или я так привык к шарпику, что разобраться совсем тяжко. Поехали, суть такова , необходимо просто...

10
androbro
333 / 294 / 63
Регистрация: 17.10.2014
Сообщений: 869
22.12.2015, 11:03 #2
Цитата Сообщение от Rube Посмотреть сообщение
Рисовать в WebView не гифку, а статическое изображение, а гифку открывать после тапа на него в отдельном окне. оптимальное рашение мне кажется, кто нибудь сталкивался с таким?
ну так в мобильном клиенте VK так и реализовано, вполне приемлемое решение как по мне
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
22.12.2015, 12:25  [ТС] #3
androbro, не фанат, не пользуюсь, знал бы так. А там точно WebView, вы уверены?
0
androbro
333 / 294 / 63
Регистрация: 17.10.2014
Сообщений: 869
22.12.2015, 14:14 #4
Цитата Сообщение от Rube Посмотреть сообщение
не фанат, не пользуюсь, знал бы так. А там точно WebView, вы уверены?
нее, там не WebView, я лишь хотел сказать что само поведение такое вполне юзабельное
а почему Вы считаете костылем android:largeHeap=true, это же вполне законная штука так сказать? или из за того что это не решает проблему, а лишь уменьшает шанс ее возникновения
1
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,114
22.12.2015, 14:17 #5
Есть куча библиотек для воспроизведения гиф анимацией, чем они вам не нравятся?
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
22.12.2015, 15:45  [ТС] #6
Цитата Сообщение от androbro Посмотреть сообщение
а почему Вы считаете костылем android:largeHeap=true
Проверить надо как оно.
Цитата Сообщение от dajver Посмотреть сообщение
Есть куча библиотек для воспроизведения гиф анимацией
Есть то они есть. Вопрос в другом.
Клик по картинке в html запускает вью с гифкой. Это реализуемо. А есть туториалы?
Как сделать картинку из гифки.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
22.12.2015, 16:20 #7
Цитата Сообщение от Rube Посмотреть сообщение
Проверить надо как оно.
Сколь не тестировал - работало нормально. Но почему-то все говорят, что памяти больше система может и не выделить, возможно в особых случаях так и будет.
Цитата Сообщение от Rube Посмотреть сообщение
Клик по картинке в html запускает вью с гифкой
Ну тут ничего сложного нет, ловим переходы по ссылкам и получаем из ссылки все что нужно для получения гифки (это если доступ к html коду есть). А если html чужой уже сложнее - придется менять все ссылки на гифки ссылками на картинки и подставлять в url картинки какие-то данные, для получения гифки. Вообще это все геморно лучше вообще стараться не использовать WebView.
1
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,114
22.12.2015, 16:38 #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 вот пример
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
22.12.2015, 20:32  [ТС] #9
android:largeHeap не помог.
У меня уже готовый html (в папке files) с текстом и картинками, который загружается в webview.
И когда попадается тяжелый gif, то активити с webview через секунду-две закрывается с логом "Channel is unrecoverably broken and will be disposed!". Не хватает памяти, т.к. на эмуляторе работает.
В Ion не проблема передать ссылку на гифку, но страницу надо ж открыть это раз, и два это сделать вместо гифки кликабельную статичную картинку типа jpeg, желательно отбражающую первый кадр. Вот как это сделать есть мысли?

Добавлено через 22 минуты
Т.к. тяжелые гифки попадаются относительно редко, то думаю можно сделать шаблонную кликабельную картинку и вставлять ее если размер файла превышает например 5 мб.
0
dajver
410 / 274 / 18
Регистрация: 18.09.2010
Сообщений: 1,114
22.12.2015, 21:45 #10
https://github.com/dragon66/pixymeta-android/issues/3 попробуйте это, там есть либа, которая бьет на фреймы. Там чувак написал как пользоваться
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
23.12.2015, 11:07  [ТС] #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;
    }
}
1
23.12.2015, 11:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2015, 11:07
Привет! Вот еще темы с ответами:

WebView - Программирование Android
Добрый день! Мне нужно выполнить действие после полной загрузки страницы в WebView. Нужно что-то типа Qtшного сигнала...

WebView - Программирование Android
У меня есть лист меню, как сделать так что бы при нажатии на первый объект так можно сказать открывался бразузер и преходил по заданной...

WebView - Height - Программирование Android
Добрый вечер. Вот такая пробела. Когда я передаю информацию в WebView он почему выводится только на (height:10px;) и включает...

WebView ошибка - Программирование Android
Помогите исправить ошибку Сам код package com.example.list1; import android.annotation.SuppressLint; import...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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