Pull to refresh
48
0
Артём Гапченко @artemgapchenko

Android Dev

Send message
А внутриигровые достижения, кстати, можно было бы реализовать через Google Play Games Services, чтобы игрокам было проще померяться писуспехами.
Игра классная, залип надолго! Вы молодец!
Я, кстати, так и не понял, в чем отличие процентных лэйаутов от LinearLayout с weights. А библиотека preferences оказалась мне не релевантна — там PreferenceFragment наследуются от android.app.Fragment (так как добавлены в support library v14), а у меня приложение целиком построено на android.support.v4.app.Fragment, которые, соответственно, умеют работать только с support activity и support fragment manager.
… библиотека Fresco идеально Вам подойдёт, так как она гибкая и расширяемая практически везде.

Как-то не совсем убедительно звучит. Есть же уже Picasso, Glide, UIL — это то, что пришло в голову с ходу. И из переведенной вами статьи непонятно, чем Fresco лучше.
Насколько я понял по чтению официальной документации и из статьи Square, в которой они объясняли причины создания LeakCanary (тыц и тыц), вся соль Fresco в том, что в Android 4.x и ниже, она Bitmap не использует, использует вместо этого какое-то свое представление изображений и укладывает картинки в особый регион памяти (который, скорее всего, расположен вне heap раздела). И в итоге получается, что памяти отъедается гораздо меньше, чем при использовании стандартных ImageView/BitmapDrawable. Плюс есть поддержка progressive JPEG, которая отсутствует в стандартном SDK.
Небольшой оффтопик: а что вы имели в виду, когда писали
Там было все что только можно было запихнуть — и retrolambda/java8

Как retrolambda подключить к Андроид-проекту я в курсе, а вот про Java 8 не слышал. Там же вроде только 1.7 доступна, причём try-with-resources — начиная с KitKat. Или я не прав?
кода пользователь поймает баг и пришлёт вам обфускированный лог ошибок.

В части наших проектов мы используем Crashlytics, а для ещё одного писали своё собственное решение для автоматического сбора крэшей. Статистика по проблемам, возникающим у пользователей, собирается гораздо быстрее, если не доверять им возможность выбора — слать отчёт об ошибке, или не слать, а отсылать сразу же в фоновом режиме.

Подводные камни: Genymotion не позволяет использовать в приложении такие сервисы Google, как Google Play Store или Maps.

Это только если не научить его их использовать. :)
О да, именно после прочтения этого треда курсе так на втором университета, я начал периодически посматривать по сторонам — то Haskell потрогаю, то на Kotlin взгляну, то курс по ФП от Одерски на Курсере пройду и все задачки прорешаю. Сейчас вот подписался на курс по дискретной математике, упоминавшийся как-то на Хабре.
Серьёзно, тред очень стоящий, и его стоит просмотреть хотя бы до середины.
А можете ссылку на приложение опубликовать? Хотя бы в личку?
Я правильно понимаю, что механизм Data Binding не зависит от версии Android, установленной на устройстве пользователя? То есть работать будет везде, чисто за счет кодогенерации, верно?
Специально создал сейчас простенький проект с ListActivity. Каждый элемент — TextView, в адаптере лежат сто чисел, от 0 до 99. Переопределил метод ArrayAdapter#getView(int, View, ViewGroup) следующим образом:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    Log.e(getClass().getName(), "position: " + position + "; " + ((convertView == null) ? "new one" : "reused"));
    return super.getView(position, convertView, parent);
}


Итог: для позиций 0-11 вывелось «new one», для всех остальных «reused». Проскроллил обратно вверх — для всех позиций вывелось «reused». По-моему это подтверждает мою точку зрения о том, что AdapterView с наследниками точно так же используют ранее созданные View для новых позиций.
Cсылка на такой холдер для каждого элемента сохраняется в корневом layout'е, используя метод setTag(int, Object) (с моей точки зрения тот ещё костыль).

Есть еще View#setTag(Object), для случаев, когда с View нужно проассоциировать только один тэг.

Всё вроде здорово, но при отображении больших списков таких вот ViewHolder'ов создаётся достаточно много, что плохо влияет на размер используемой памяти.

Почему? Наследники AdapterView, т.е. ListView или GridView, создают ровно столько элементов, сколько помещается на экране, при скроллинге ранее созданные элементы списков/таблиц переиспользуются. То есть помещается у меня в ListView 8 элементов на экране, значит и всего будет создано 8 элементов, пусть даже в адаптере этого ListView находится две-три сотни объектов. На каждый из них будет прицеплен свой собственный ViewHolder, то есть их тоже будет 8 штук. Не такие уж и большие затраты по памяти.

Упомяну еще twoway-view — библиотека, которая решает некоторые из рассмотренных вами проблем с RecyclerView (отсутствие выделения элементов, OnItemClickListeners и прочего).
А подскажите, пожалуйста, ресурс, где я мог бы посмотреть ту же «Игру престолов», легально, в оригинале и с субтитрами? И не только её, но и еще с пяток других сериалов, которые я сейчас смотрю (чтобы не вспоминать всякий раз, на каком сервисе я смотрю сериал Foo, а на каком — сериал Bar). С удовольствием бы заплатил им деньги.
Никак не могу понять: кто постоянно минусует этот дайджест? Хоть бы причины объясняли, что ли. Не нравится содержание — предложите пути улучшения, не нравится сам факт существования — пройдите мимо, не для вас этот дайджест. Я, например, каждую неделю что-то полезное и новое тут черпаю.
Впитывать-то впитывает, но у меня есть ощущение, что иногда лучше поднапрячься и попробовать родить хорошее слово, произошедшее от уже существующих в русском языке слов. По крайней мере «наушники», «миротворец» и «болеутоляющее» звучат для меня гораздо приятнее «хэдфонов», «писмейкеров» и «пэйнкиллеров» (могу ошибаться, воможно эти слова сначала появились не в английском, а в другом языке).
C момента первого анонса Cardboard в 2014 году партнёры поискового гиганта смогли продать более полумиллиона комплектов, самый дешёвый из которых стоит $18.95.

Ну это смотря где покупать, китайцы на ebay продают за 1.5-2 доллара.
Я тоже с MiBand вставал легче, недели две, пока не научился спать с вибрирующим на руке браслетом. :)
Я как-то писал приложение под Android на Scala с использованием вот этого плагина, и там я подобную проблему решил с применением trait'ов.
Каких-то решений с использованием Java я не знаю, увы.
Я открыл приложение и начал прокликивать экраны, ожидая, когда же приложение наконец упадет на моем Nexus 5. Наконец, через 5 минут и 55 экранов, приложение упало.

Вот поэтому я и проверяю плавность работы анимаций, скорость перехода между экраанами и прочие визуальные штуки (включая и OutOfMemoryError, причины которых я нет-нет, и допускаю в коде) в приложениях, которые я пишу, не на Nexus 5, а на довольно хилом HTC Desire X.
В чейнджлогах Android Studio периодически проскакивает информация о том, что были стянуты новые изменения из Intellij Idea. В этой статье написано, что периодически стягиваются изменения из Android Studio в Intellij Idea.
Вопрос — есть какое-то различие между этими двумя продуктами, или это один и тот же функционал, завернутый в немного разные обертки?
У вас введение и содержание расходятся. После слов
Мне стало интересно, как это реализовано
я ожидал увидеть реализацию анимации перехода burger button в стрелку, а увидел самое обычное использование Toolbar вместо ActionBar. Поменяйте одно из двух, не смущайте народ. :)

Information

Rating
Does not participate
Date of birth
Registered
Activity