Anton
Как?🤔
Напомни завтра я кину кусочки кода... Сейчас уже сплю
Anonymous
как фиксануть?
поставить Windows)
Anonymous
поставить Windows)
Изыйди нечисть
Mr. Black
Дратути
Mr. Black
У меня есть вопрос по части изображений. Лет 5 назад пробовал галерею сделать с большими превью, но часто приложение крашилось из-за нехватки памяти. Спустя столько лет решил снова попробовать. Подскажите что я делал не правильно?)
Mr. Black
Mr. Black
При таких размерах вылетало
Mr. Black
Тогда был Android 4.4
Mr. Black
При таких размерах не вылетало, но уже ругалось на память в логах
Andrew
При таких размерах не вылетало, но уже ругалось на память в логах
то есть факту ты брал эти картинки 1400 х 800 и запихивал в ресайклер?
Andrew
ты их не пережимал?
Andrew
я с вк апи работал какое-то время, они на все фотко-реквесты отправляют по 5 вариаций одной и той же фотки, вот для превью и берешь ту, что поменьше, а когда юзер уже кликает на нее - берешь другую ссылку, которая меньше пережата
Andrew
тут в принципе можешь придумать тоже что-то такого плана, если у тебя есть зашитые в приложение картинки, прежде чем сувать их в список - пережимай, чтобы они меньше весили, при нажатии на них - выдавай не пережатую версию, и не забывай использованые битмапы ресайклить, они сильну жрут натив хип
Mr. Black
тут в принципе можешь придумать тоже что-то такого плана, если у тебя есть зашитые в приложение картинки, прежде чем сувать их в список - пережимай, чтобы они меньше весили, при нажатии на них - выдавай не пережатую версию, и не забывай использованые битмапы ресайклить, они сильну жрут натив хип
Дело в том, что их пережимал я под размер View. Помню ещё проблемы были, что нельзя было получить размер этого view, пока не вставишь в него изображение. Кароч там же нельзя поставить джпег, только битмап, естественно размер превью в памяти зависел от кол-ва пикселей и кушал всю память
Mr. Black
Если сжимать картинки, они да потом мало весят, но у них при этом очень малоенькое разрешение и если растянуть изображение разрешением меньше, чем сам view, то получается мыло
Mr. Black
А мне хотелось очень чёткого изображения
Mr. Black
Вот и задаюсь по сей день вопросом, каким образом н ютубе превью работают, например. Думал уже что обработкой изображений должен заниматься не CPU, а GPU
Mr. Black
При таких размерах не вылетало, но уже ругалось на память в логах
Вот как здесь, размеры превью были пережаты вручную под размер view, однако в логах всё равно ругалось на нехватку памяти, но уже без краша
Mr. Black
Варнинги, но это было так давно, что я не вспомню точно что там было написано
Mr. Black
Может я не тот view использовал. Ютуб же превью большие использует и проблем нет. Зотя там даже вместо изображений бывают видео превью
Andrew
Варнинги, но это было так давно, что я не вспомню точно что там было написано
ну сейчас девайсы стали получше, даже если очень плохой и неоптимизированный код пишешь - вряд ли что-то упадет по аут оф мемори
Mr. Black
ну сейчас девайсы стали получше, даже если очень плохой и неоптимизированный код пишешь - вряд ли что-то упадет по аут оф мемори
Да, но это не повод пилить говнософт. Хочется всё-таки оптимизировано и правильно сделать. У меня снеп 845, но хочется чтобы и на старых устройствах работало
Andrew
ты же использовал recyclerview?
Mr. Black
ресёкл да, помню что-то такое. Сейчас гляну в исходниках что я там понаговнокодил
Mr. Black
ты же использовал recyclerview?
Что-то нашёл, вроде работало через это. В исходниках остался только метод работы файловой системы и массива путей к картинкам Bitmap output = Bitmap.createBitmap(bitmap.getWidth() + 20, bitmap.getHeight() + 20, Bitmap.Config.ARGB_8888);
Mr. Black
Успел отправить, электричество вырубили :D
Mr. Black
Вот помню менял ARGB на самый мухаморный 4 бит вроде
Mr. Black
Вроде да, этот метод по пути файла делал превью из полного размера
Mr. Black
Сейчас бы вспомнить точно для чего это было
Mr. Black
Я думаю делал я с карефаном тогда не правильно
Mr. Black
это где такое?
Это было 5 лет назад, я говнокодил как мог, простите
ну это код для чего?
Andrew
ну я сейчас сорцы покопал, этот метод битмапа создает пустой битмап
Mr. Black
Я бы порылся и скинул ещё пару ужасов, но у меня свет дома вврубили
Mr. Black
ну я сейчас сорцы покопал, этот метод битмапа создает пустой битмап
Скорее всего мы создавали пустой битмап и помещали туда обрезаную картинку
мб вы просто не так ресайзили
Mr. Black
Переформулирую. Мы сощдали пустой битмап с указаным размером, потом поместили в это пространство полное изображение и обрезали. Вроде логика такая была, если я ничего не путаю
обрезали в смысле уменьшали?
Mr. Black
мб вы просто не так ресайзили
Похоже на то, поэтому краш из-за нехватки памяти
Mr. Black
Далвик кеш ругался. Даже помню что-то такое, что меняли разрешение на ввделение больше памяти системой для приложения, но это не помогло
Anton
Далвик кеш ругался. Даже помню что-то такое, что меняли разрешение на ввделение больше памяти системой для приложения, но это не помогло
Просто используй glide и не будет проблем. Он все правильно пережмет и покажет и закеширует так как скажешь
Anton
Глянул, не знал про такое. Дай бох здоровья 💛
Ну тогда смотри ещё на picaso и fresco. И выбирай что тебе больше подойдёт
Mr. Black
Ну тогда смотри ещё на picaso и fresco. И выбирай что тебе больше подойдёт
А это разве не дополнительные библиотеки? Слышал, вроде, что picaso это фреймворк
Mr. Black
Причём кроссплатформенный
Anton
Это все библиотеки. И glide
Mr. Black
Аааа
Mr. Black
Не хочу использовать фреймворки. Я из-за этого веб бросил. Спустя год решил андрюшку попробовать 😔
Stanislav
Подскажите, пожалуйста, где можно прочитать о том, как по локации узнать адрес. Заранее спасибо
Vladislav
Подскажите, пожалуйста, где можно прочитать о том, как по локации узнать адрес. Заранее спасибо
Скорее всего, надо использовать api какого нибудь картографического сервиса: яндекс, гугл, openstreetmap и т.д. У яндекса есть "геокодер" в api карт для этого дела.
Vladislav
Ну и читать соответсвтенно документации для этих api
Mr. Black
Значит скоро и и андрюшку бросишь
А что без этого не обойтись?
Сыктывкариум
А что без этого не обойтись?
Ну если ты готов на решение тривиальной задачи тратить 4 часа вместо одной строчки в коде и одной строчки в граддл - то обойтись.
Mr. Black
Ну если ты готов на решение тривиальной задачи тратить 4 часа вместо одной строчки в коде и одной строчки в граддл - то обойтись.
У меня времени много и нет никаких сроков. Прежде чем использовать библиотеки, хочу понять как сделать без них
Сыктывкариум
А что без этого не обойтись?
Представь задачу, сполучить по ссылке картинку, загрузить ее и поместить в imageview. На вскидку, сколько понадобится кода, времени и трай-кэтчей? А вот как это делается с помощью библиотеки: Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);
Сыктывкариум
У меня времени много и нет никаких сроков. Прежде чем использовать библиотеки, хочу понять как сделать без них
Если для того, что бы понять - то имеет смысл писать руками. Но если надо использовать в работе - то это не совсем правильный путь. Твое решение практически всегда будет более корявыми, чем готовая, отлаженная, проверенная библиотека.
Mr. Black
Ничему
Сыктывкариум
Я могу использовать пикасо, написать пару строк и что всё готово? А чему я научусь?
А чему ты хочешь научиться? Скачивать картинки через хттп? Сохранять во временные файлы? Загружать из файлов и помещать во вью? Ну сделай один раз это, пойми, как происходит процесс, а потом начинай юзать готовые библиотеки
Mr. Black
Хочу научиться создавать такие фреймворки. А то сейчас модно ничего не знать, да скачивать библиотеки и на них всякое говнище писать кривое, коем забито более половины маркета
Andrew
Разве использовать готовые библиотеки это плохо? Например, на C вполне норм юзать stdlib для println("Hello, world\n") чем делать свою реализацию.
Andrew
Точно также и в андройде
Mr. Black
Не ну это да
Mr. Black
А есть приложения очень лаговые
Andrew
Я кучу времени потратил и много кода, чтобы слать post запросы, в итоге плюнул и взял Retrofit
Mr. Black
Как и сайты
Mr. Black
На вордпресах всяких или симфонах
Mr. Black
Да слышал я про время, заезжаная тема, всё я жто проходил. Больная тема у меня. Но я хочу научиться или понять как эти рфеймы работают
Mr. Black
Для меня опыт знание полезнее сейчас, нежели сделать что-то быстро
Сыктывкариум
Хочу научиться создавать такие фреймворки. А то сейчас модно ничего не знать, да скачивать библиотеки и на них всякое говнище писать кривое, коем забито более половины маркета
Всё зависит от того, какая у тебя цель. Если освоить принципы работы - то да, пиши сам. А если тебе надо выпустить готовый продукт, то твой заказчик не будет ждать, пока ты напишешь свою библиотеку, потратив на это полгода, когда твой конкурент на готовых библиотеках сделает весь продукт за месяц.
Mr. Black
Да нету у меня заказчиков