Учитывая, что яблоко ненужно разработка под яблоко и андроид нихуя не одно и то же, решил таки создать отдельный тред. Коротко о главном: 1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - то добро пожаловать в андроид разработку. 2) Android Studio & Java - единственный легитимный набор. 3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах. 4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js.
Где брать инфу: Интернет-ресурсы 1) http://developer.android.com/index.html Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта. 2) http://stackoverflow.com/ Пользуюсь чаще чем первым сайтом. Можно найти практически все. 3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже. http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/ Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить. 4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
Книги, их никто не читает, но все советуют только одну 1) The Busy Coder’s Guide to Android Development
Что делает код мы не знаем, но по такой базе можем ванговать с высокой точностью. Первым делом надо набить всякими рефлекшенами и прочей гадостью, которой пользуется малваря.
3. Нужно создать базу пекеджей вроде android/annotation - ненужное говно от компилятора android/support/v4 - библиотека костылей com/actionbarsherlock - костыль для акшонбара и не только com/google/ads - реклама от гугля com/google/android/gms - гуглозонд com/lmsa/cqkv143768 - airpush троянец com/startapp/android - еще одни рекламные пидоры
Конечно, надо это как-то рассортировать на категории, быть может присвоить этому риски или даже советовать юзеру удалить приложение с этими говнами. Точную схему таблиц сам затрудняюсь назвать, но для начала хотя бы названия гадости + "свой-чужой" + что делает.
По такой базе можно резать гадости/обновлять нужности
Если заинтересовались, пишите какие-то контакты. Ну и предложения как такие базы наполнять тоже, я слабо представляю как запилить групповой датаентри.
>>525732 (OP) > Учитывая, что яблоко ненужно разработка под яблоко и андроид нихуя не одно и то же, решил таки создать отдельный тред. Долбоёбы, опять из-за своего ctrl+c ctrl+v проебали зачёркивание. И вообще в пизду этот юморок для семиклассников. > Android Studio & Java - единственный легитимный набор. И сразу пошли нахуй.
>>525737 Тебя ебет что там написано? Главное ссылки же и сам тред. Проебал потому что Срд 05:06:10, приехал сонный в говно, а тред в бамплимите. >И сразу пошли нахуй. Потому как официальная поддержка маня и тысяча,нет сотни тысяч примеров, сам на чем пишешь? Лучше доебался бы до ссылок и тд, они хотя бы несут реальную пользу.
>>525941 >>525974 В андроид студии нельзя держать несколько проектов открытыми одновременно в одном окне. В идее, скорее всего, тоже. И нахуй они мне такие нужны? В чём их профиты перед эклипсом? А главное с хуяли наборы eclipse+java и даже idea+java нелегитимны? Потому что какой-то хуила в 1 посте так написал?
>>525980 Ну и похуй. Создали неудобное говно и форсят, забивая на привычные удобные инструменты. Хотя я сам плагин не обновлял около года, надеюсь, он ещё долго проработает.
В студии не работает дебаг. Пик2 - рабочие брейкпоинты в отладке только в первой лаунчер активности, как только перехожу на вторую, получаю пик1 и выполнение не останавливается. Причем первый пик именно в отладке.
>>526056 Нынче вместо аргументов принято сразу использовать гринтекст? Вроде долбоёб, а вроде всегда есть что сказать.
На вопрос о профитах студии, которые перекрывают профиты эклипса напоминаю про несколько проектов в 1 окне, ответа я не получил, кроме не понятно к чему указанного заявления о прекращении поддержки.
А судя по здешним постам, из-за градла студия тормозит весьма значительно, а памяти она так же ест овердохуя хоть это и не проблема для меня.
>>526067 >напоминаю про несколько проектов в 1 окне Это не профит а говно. Открывая один преокт у тебя несколько вариантов его отображения что удобно пи создании интерфейсов и тд. Да и индексирование для многих проектов долго делать. Нужно два проекта открывай два окна, тебе дали возможность, да и путаешься меньше. Градл вообще не проблема студии. А еще ты тупая утка.
>>526094 > Открывая один преокт у тебя несколько вариантов его отображения что удобно пи создании интерфейсов и тд. Редко когда вообще пользуюсь xml разметкой, да и в итоге всё равно надо эмулятор открывать чтобы нормально всё отладить. > Нужно два проекта открывай два окна, тебе дали возможность, да и путаешься меньше. Нужно 10 проектов - открывай 10 окон. Классно придумал. > Градл вообще не проблема студии. Ну да, ведь студия может и без градла... Нет блядь, не может. > А еще ты пок кудак кококо Ясно.
Анонсы, было полусырое приложение с двумя активити - одно для логина, второе главное. В главном активити было дохуя фрагментов внутри фрагментов иногда ещё внутри фрагментов. Решил подробить эту ебалу на 5 активити, внутри которых уже нет такой вложенности. Теперь вопрос - как сделать для пяти активити один тулбар? Чтобы и код не дублировал и чтобы не отжирал ресурсов инб4 нихуя не отжирает, а у меня пунктик на ресурсы
>>525991 А ты пробовал? Хочу услышать дельные аргументы.
У меня есть парочка законченных коммерческих проектов. Не вижу особых проблем, это же просто C# обертка над android-api классами - там можно делать все тоже что и в чистом android.
>>526181 Android может убивать невидимые активити (если у тебя нет жестких ссылок на них) - освобождая память.
>>526104 >Редко когда вообще пользуюсь xml разметкой, да и в итоге всё равно надо эмулятор открывать чтобы нормально всё отладить. Ебать мой хуй. А когда добавляешь 5 елментов в уж существующий лейаут? Удобнее октрывать андроид отображением. А когда только создаешь удобнее обычным пекеджем и тд. >Нужно 10 проектов - открывай 10 окон. Классно придумал. Это нечитабельное говно будет. >Ну да, ведь студия может и без градла... Нет блядь, не может. Градл сейчас офф борщик, пиши петицию. А теперь иди на хуй.
>>526181 На ум приходит только создавать Тулбар программно в onCreate() абстрактной активити, а все твои 5 активити унаследовать от этой и вызывать там super.onCreate().
>>525953 Сап, начал работать на Xamarin пару недель назад, ибо студент первый курс, и весь курс учили шурп, было стрёмно, что с джавой зафейлю (т.к. появилась неплохая возможность проявить себя, написав моб приложение для одного сайта, и надо было решать быстро). По итогу, часть туториалов смотрел на джаве, на уровне синтаксиса всё совершенно поянтно, и проблем никаких небыло вообще. Как думаешь, для такого ньюфага, как я, есть смысл дальше юзать Ксамарин, или проще то же самое на Джаве делать (т.е. лютым знанием аптек Шарпа не обладаю, что один из его плюсов главных, а с Джавой тупо больше мест, с которых учиться/копипастить)? П.С. Бизнес-версию Ксамарина бесплатно получил по студентской программе, работаю в ВС13 Ultimate, знание английского очень хорошее.
>>526437 Выучи или азы освой, это не долго core java. И себе проще сделаешь, и людям, которые не будут потом охуевать с проекта, составленного из непонятной пасты.
>>526498 Java Core это, другими словами, "основы Джавы"? Пока весь проект я сам пилю (приложение это), вполне неплохо получается, всё более чем читабельно. Не понял про непонятную пасту.
Поясните за drawable. Вот есть у меня картинки для разных экранов - mdpi, hdpi, xhdpi, xxhdpi. Есть пустая папка drawable в проекте и соответствующие разрешениям 4 папки mipmap. Как рекомендует гугл в этих mipmap папках надо закидывать только иконку твоего приложения, а для остальных картинок использовать папку drawable. Хорошо, я беру и создаю в пустой папке drawable 4 папки с приставками mdpi, hdpi и так далее. Закидываю туда файлы, но из кода (R.drawable.myimage) картинок из этих папок не видно. А если закидываю картинки еще и в корень папки, то все норм. Так вот вопрос, в корень папки drawable какого разрешения картинки кидать?
>>526437 > Бизнес-версию Ксамарина бесплатно получил В свое время пробовал триал, потыкался в VS2015 - это же ад, все тормозит и глючит, на маке как-то лучше кодится в Indie. Единственное нехватает CI (она только у бизнеса).
> есть смысл дальше юзать Ксамарин Я бы посоветовал на Java напирать - тупо вакансий в 10 раз больше. Также Xamarin обычно юзают кампании которые экономят на разработке. Да я сам java-разработчик, просто хотел попробовать что-то новое.
>>526526 Ну а если уже все в png сделано. Таки какое разрешение в корень папки drawable класть? Или я не там ищу или хуй знает. На developer.android объяснения не нахожу.
>>526524 Реализацию каких-то моментов мелких я имел ввиду, типа обновлений местоположения или еще чего-то. В смысле, что больше каких-то похожих проектов готовых будет, где можно посмотреть, каким образом кто-то сделал то, что ты хочешь сделать. Только по документации официальной сложновато разбираться мне.
>>526528 Не знаю, всё отлично. Чему тормозить, как бы надстройка над ВС, как СВН какой-то. Пару секунд .axml-и грузит, внешний вид именно, соурс сразу доступен. Запускается на их эмуляторе намного быстрее чем на андроида стандартном.
То есть нативно разрабатывать тупо выгоднее? Я думал, что говорят, мол сделай моб приложение классное, и всё равно чем достигаешь результата. Вроде разница не большая, и если всё равно джаву планировал учить, то перебраться и часть опыта использовать можно будет легко?
>>526542 > То есть нативно разрабатывать тупо выгоднее? Лучше идти в компанию где разрабатывают нативно. Просто я встречался с такими подходами: Мобильный отдел iOS и отдел Android - в каждом из них параллельно разрабатывают приложение. Общего кода либо нет либо по минимуму. Отдел из универсалов/эникейщиков - которые фигачат на xamarin (может еще и бэкенд на asp.net рубят) Очевидно что первый вариант более дорогой и его может себе позволить компания с хорошим доходом.
>>526548 Но опыт перед этим какой-то должен быть. Я к тому, что последующие возможности лучше реализовывать через нативный кодинг моб приложений. Вот сейчас делаю на андроид на ксамарине, на iOS тогда лучше на Objective-C писать стараться, и следующие под ведро приложения на Джаве в их средах разработки, правильно понимаю?
>>525953 Поясни за ксамарин, будь добр, я нубс: 1) что там с ценой? Я скачал с их сайта и установил всякие вещи в визуальную студию; я теперь могу написать апликейшн и выложить его в стор? Какие ограничения и вот это всё? 2) Какие вообще подводные камни? В сисярп-треде написали, что приложение грузится около-долго и ещё что-то.
>>526534 мб ты обосрался с именованием папок. Папка drawable предназначена для xml файлов. Если ты кидаешь в папку drawable-hdpi иконку и она не видна через R.drawable, то либо ты папку не там разместил, либо сделай clean.
>>526497 ТруЪ вариант это создать стандартный menu.xml. в котором будут все стандартные кнопки тулбара, а цвет для всех тулбаров установить через тему в style.xml
>>526534 Если иконки не сильно сложные в исполнении, ничего сложного перерисовать в том же inkscape в svg. Самому так пришлось недавно корячиться, дело одного туториала на ютубе и полутора часов времени.
>>526592 > Папка drawable предназначена для xml файлов. Вообще drawable аналогичен drawable-mdpi. Но потом уже повелось кидать xml в drawable, а пикчи для mdpi в drawable-mdpi.
>>526565 Я бы советовал забыть про Xamarin и решать кем ты хочешь быть: Android/Java или iOS/Object-C девелопером
>>526568 1) без крэка ты и не скомпилишь ничего под VS, там нужна минимум BUSINESS лицензия. Можешь на Xamarin Studio попробовать, но на free ты только калькулятор собирешь (ограничение 64kb на код) 2) Это я и написал :) реально долго стартует, пришлось даже splash-screen делать. А дальше будешь долго искать утечки памяти и думать, а как же оптимизировать, ведь их профайлер работает тоже только под BUSINESS
1. Нативные либы аллочат память в куче? 2. Реально ли в рантайме через рефлекцию вытащить все объекты заданного типа в стиле Runtime.getObjectsOfType(Foo.class) 3. Можно ли так тащить объекты, инстансированные в нативной либе?
Суть: вытащить объект Camera из нативной либы, которая работает с видео.
>>525871 А я поддержу тебя. Сам хочу спрыгнуть с идеи на эклипс, т.к. во многих компаниях требуют его. Осталось только дебагом научиться пользоваться и я перепрыгиваю.
>>526919 1) через какой-нибудь malloc нет, но если ты создашь java объект то да 2) нет 3) нет в правильности ответов не уверен
Я бы посоветовал бы найти api которые создает Camera и изучить его сорцы, может оно где-нибудь хранить копию ссылки (типа массив всех созданных инстанцев в Android это любят) и через рефлексию вытащить.
>>526909 Я как бы студентота, на второй курс перехожу, просто пробую всё, где появляется хоть какая-то возможность проявить себя. С узкой специализацией сложно решить, когда нигде ничего не делал, та и рано еще, в принципе. Например, с осени буду еще Python+Django пробовать. А это приложение, которое почти допиленное на Xamarin.Android (на Джаву потом тоже для интереса смогу переписать), хочу еще и на iOS сделать аналогичное, так на чем лучше это сделать, на Xamarin или нативно написать?
Сап, аноны, подскажите ньюфагу. 1. Хочу сделать переходы между двумя внешними видами (список айтемов каких-то, клик на один из них - страница с подробной информацией) (пикрелейтед). А при нажатии "назад" в тулбаре страницы подробной информации, возвращаться назад. Как лучше это реализовать? Проще всего двумя активити наверно (стартовать второе при клике на айтем из списка), а как тогда тулбары связать? Или фрагменты в МейнАктивити менять, засунув в какой-то ФрагментХолдер? 2. В МейнАктивити есть вкладки (Sliding Tab), на одной из них Gmaps Fragment. Как при нажатии некой кнопки на этом фрагменте, менять его на другой фрагмент (вышеописанный список)? Постарался суть объяснить, если совсем другие реализации этих действий проще - укажите, как считаете нужным.
>>527935 > Как при нажатии некой кнопки на этом фрагменте, менять его на другой фрагмент (вышеописанный список) fragmentManager.replace > а как тогда тулбары связать Во второй активити тулбару назначаешь this.onBackKeyPressed()
>>527935 1. Оба варианта верны. Что значит "связать тулбары"? Если тебе нужен они переход назад по стрелке, как на пике - для этого вроде есть встроенная опция тулбара. Реализовать выход из активити можно и самому.
2. Тебе нужно перелистывать вкладку, на которой висит этот список, или менять фрагмент в этой-же вкладке?
>>527938 >>527940 >>527949 На счет тулбаров вроде разобрался, можно просто во втором активити гасить текущее при нажатии на стрелку, и тогда сразу попадешь обратно в момент выхода из первого, ведь так? Быстродействие от такого "лобового" способа не пострадает?
На счет второго: менять фрагмент в текущей вкладке. Опять же постарался изобразить (первый пик). Во втором - то, как создаются сами вкладки, и конструктор, который используется. Как в таком случае это сделать можно?
Да, C#, да, VS, да, Xamarin, не бейте ногами, синтаксис практически один в один с Джавой.
>>528021 Во-первых, я юзаю листенер со свичем и твой делегат насасывает. Во-вторых делегаты нечетабельны что критично для листенера. В-третьих иногда один листенер имеет несколько методов.
>Ну здорово, только на ведре 1.7. Я это так и не понял, юзаю себе 1.8 и спокойно все компилится. Подтверждениям жабы 8 считаю то что студия сама мне лямда выражения хуярит.
>>528035 Не совсем понял. Сделать в Таб1Фрагменте ФрагментКонтейнер некий, и в него Трансактить Таб1КартаФрагмент или Таб1СписокФрагмент в зависимости от нажатия кнопки?
Сделал приложение которое показывает погоду по забитым координатам по гайду с одного сайта. Все заебись, работает. Решил добавить определение местоположения и по нему показывать погоду. Залез на developer.android.com кое-как разобрался с гуглаписервисами, получил охапку ошибок(долго не мог понять почему градл не собирает проект, оказалось я преодолел порог в 65к+ методов), короче все поисправлял, получил долгожданные координаты своего местоположения. Дальше решил еще отображать строкой город в котором находится на данный момент пользователь, полез опять на developer.android.com, нашел гайд и охуел от кол-ва кода. Это реально для получения просто названия города по широте-долготе надо столько кода? http://developer.android.com/training/location/display-address.html
И еще такая проблема, у меня в приложении иконка погоды (тучки, солнце, дождь и т.п.) и кнопка refresh, так вот, я когда запуская приложение они одного размера, а при нажатии на кнопку рефреш, эти две иконки уменьшаются в размере и в таком и остаются, с чем это может быть связано? Вообще с этой папкой drawable ничего не понятно, гайды везде старые. Аноны вот посоветовали использовать векторы везде, но мне не очень хочется убивать кучу времени на перерисовку, учитывая, что это просто учебное приложение.
>>528131 > долго не мог понять почему градл не собирает проект, оказалось я преодолел порог в 65к+ методов Лол, как вы это делаете? Я за 4 года ни разу не преодолевал этот порог. Ради интереса делал подсчёт - больше 15к не набиралось никогда.
Ну достаточно просто подключить гуглапи библиотеку. In versions of Google Play services prior to 6.5, you had to compile the entire package of APIs into your app. In some cases, doing so made it more difficult to keep the number of methods in your app (including framework APIs, library methods, and your own code) under the 65,536 limit. Вот у меня + еще 2 библиотеки и уже вылез за лимит.
>>528167 Там наверняка появились новые инструкции и вся хуйня, из-за которой надо расширять возможности вм. То есть фичи 1.8 были бы доступны только на 5 и выше. А если ниже, то такой байткод просто бы не компилился => программа без совместимости с 4 андроидом. Классно придумано.
>>528219 Даймонды - синтаксическая фишка. С ними или без - байткод одинаковый. А вот например с лямбдами я не уверен. Там для них есть особые типы, которых нет в сдк - уже несовместимость. Плюс они там какой-то новый инвок добавили, а значит + операция, которая в принципе не будет поддерживаться старыми вмками.
>>528243 >А вот например с лямбдами я не уверен. Ты мне либо не доверяешь либо хз. У меня в коде студия сама в лямбды преобразовывает и все работает на ок. А штука компилятор 1.6 что он неебет как даймонды хавать. С байткодом поинтереснее, делегаты на физическом уровне вроде как тоже классы, но это уже слишком байтоебство.
>>528246 > У меня в коде студия сама в лямбды преобразовывает и все работает на ок. Я хуй знает, может какая-то фича в студии. У меня нет студии и 1.8 даже не стоит. Я видал плагин какой-то не помню для какой иде, который позволяет лямбды на 1.6 использовать - они просто сводились к интерфейсам.
>>528253 http://pastebin.com/QY14ZUp8 (Не ебу, так залил или нет, надеюсь увидите) Вобщем при вызове customAdapter.notifyDataSetChanged(); Выкидывает с nullpointer. Причем когда вызывается метод из onResume, всё окей. А когда я вызываю его ручками, то крашится. Собственно краш после того как я вызываю метод, а вызываю я его когда удаляю один элемент из списка. Поясните за notifyDataSetChanged, что я делаю не так? Андроши спасайте.
>>528254 По Брикпоинтам выяснил что после customAdapter.notifyDataSetChanged(); вообще ничего происходит. Тоесть краш ровно на вызове метода. http://pastebin.com/DSE2PWSx
>>528256 >>528254 Начал догадываться что я еблан. Инициализировал CustomAdapter в onCreate с ArrayListom, а когда он обновляется, естественно и nullPointer. А так как onResume вызывается после onCreate, вот он и не крашился, а если вызывал ручками то он обновлялся со старым Arraylist. Вобщем теперь новый краш, на этот раз на inflater = ( LayoutInflater )context. getSystemService(Context.LAYOUT_INFLATER_SERVICE); Вот вам лог java.lang.IllegalStateException: System services not available to Activities before onCreate()
>>528265 Ебучая макаба со своим спам листом. Раньше заливал код через MakabaCode и не выёбывался. Сорян братишка, перезаливать уже нет смысла, я на каждый свой пост, нахожу ответ, а на каждый ответ по новому Экспешену.
>>528287 Лол бля. Во-первых, не нужнов конструктор кидать и мейнАктивити и лейаутИнфлейтер из него. Кидай просто мейнАктивити и делай mInflater = LayoutInflater.from(context); Активити наследуется от контекста так что захавает. Если нужно из mInflater можно обратно контекс достать если нужно. mInflater.getContext(). Во-вторых, замени на это, может в рут ноль не хочет жрать row = mInflater.inflate(R.layout.item_list, parent, false);
>>528322 Антош, не помогло. Поменял на http://pastebin.com/7PVBLKd5 И опять пишет что вызвал систем сервис после онКриэйта. System services not available to Activities before onCreate()
>>528340 >>528335 >>528322 Анончики помогайте. Нихуя не пойму, всё пашет, всё работает. Работает даже если в списке только один элемент и ничего не крашится когда я удаляю его. А когда элементов больше чем один, всё летит впизду.
>>528355 Как я понял, инфлейтер живёт только от onCreate до onResume, всё остальное время null. Но мне блядь надо запускать обновку после удаления элемента из списка. Анооооныыыыыы
>>528377 Это пиздец чувак, тут просто блять глаза выкатываются. У тебя холдерпатерн нихуя не делает. Какого-то хуя адаптер сидит в активити. Так не делай. Советую переписать заново эти три класса ибо это вообще ни в какую.
При удалении ты пересоздаешь адаптер и сетишь его, я толком не понял что там за хуйня с инфлейтером, но суть в том что так делать это пиздец. Я даже хз нормально ли сама листвью это пережует.
Оставляешь свои uris в виде листа как уже сделано, хуяришь его в адаптер в онкрейте. Адаптер создаешь один раз и навсегда. Теперь при удалении из uris вызывай adapter.notifyDataSetChanged();
Если кинет ошибку пиши сюда, это хотя бы правильный подход.
>>528385 Я так и делал с самого начала, просто я перепробовал всё, и конечным вариантом было пересоздавать каждый раз адаптер, так он хотя бы не выкидывал при удалении одного элемента.
По поводу говнокода это да. Он построен на экзамплах со всех интернетов. Дико извиняюсь, напишу функцию удаления, начну переписывать эти классы.
>>528429 Блять, ты в кастомной вьюхе походу неоднозначно адаптер отдавал, потому и не видело метод. ((BaseAdapter) lvTest.getAdapter()).notifyDataSetChanged();
А подскажите пожалуйста, как можно запилить подобие фильтра для гуглокарт, чтобы при запуске активити на карте отображались все ближайшие макдональдсы или суды или церкви. Так вообще можно?
>>528514 Не за что. >>528513 Ну зарплата джуна да. Та хуй знает, я там буду один единственный на проекте опять. В рот ебал что-то. Хотя может еще и не возьмут.
Аноны, как лучше реализовать список с константными значениями элементов? В моём случае, каждый элемент списка - это день недели (наименование), и ещё несколько параметров? Можно конечно просто сделать адаптер с неизменяемым списком внутри - но м.б. есть способ сделать это красивее, либо вообще задать всё через XML?
>>528543 Пока еще нихуя не ясно потому говорить не хочу. А из опыта есть апликуха полумертвая на плеймаркете, бывшая работа на стартапе. Спрашивали просто чем занимался и тд, собеседовал явно не андроид разраб так как их там нету, потому все легко было.
>>528849 Да всё равно, листвью даёт возможность кликать, рисовать разделители и главное это выглядит как и все остальные элементы системы. Искаропки - не надо ничего настраивать: въебал листвью, вьебал arrayadapter и добавил туда 7 строк. > тебе вообще лучше подгружать их в процессе из бд. Хуйню какую-то несёшь, при чём тут процессы и бд вообще?
>>528856 >Хуйню какую-то несёшь >500 моделей Ты долбоеб если держишь их в оперативе. И поясню специально для тебя что значит в процессе для листвью, когда скролишь блять. 7 элементов можно выводить статик вьюхами и не ебаться с заумными кликлистенерами внутри адаптера, не инфлейтить 7 вьюх отдельно. Твое "из коробки" юзает овердохуя ресурсов и тд, усложняет написание ради нихуя. А 500 элементов как раз требует листвью. И вообще иди нахуй.
7 статик элементов, вероятно, должны выглядеть одинаково и если потребуются обработчики нажатий на них, то код будет один. Дак почему бы не использовать для этого listView? 1 строчка кода для инициализации массива, вторая для создания адаптера из этого массива, третья для листвью из адаптера. ListView в данном случае выполняет задачу "нарисовать всё одинаково, как список, чтобы потом не ебаться". А для 500 я бы использовал RecyclerView. Говно то ещё, но он как раз для таких случаев.
>>528899 >вторая для создания адаптера Там не один текствью, потому прийдеться кастомный класс писать.
>А для 500 я бы использовал RecyclerView. Это не ты доказывал что оно оптимальнее обычного листвью? Хуйня с задачами, но если ты не юзаешь анимацию то в пизду.
>>528902 Нет, не я. Я пробовал его, насосался хуёв, понял, что он по функционалу не дотягивает до ListView и вернулся к ListView. >если ты не юзаешь анимацию то в пизду. сосачую. Но разве recycler не бережёт ресурсы?
>>528904 Каким боком? Основная работа в адаптере же. Берешь листвью, наследуешься от бейсадаптера и хуяришь холдерпатерн. Все. Остальное - байтоебство. Сказал безработный джун.
>>528885 > Ты долбоеб если держишь их в оперативе. Сколько занимают в памяти простенькие молели? 50 кб? 100 кб? Или, о ужас, 150 кб? С хуяли их не хранить в оперативке? > 7 элементов можно выводить статик вьюхами и не ебаться с заумными кликлистенерами внутри адаптера, не инфлейтить 7 вьюх отдельно. А и не нужно. Адаптер вообще не надо переопределять. 9 строк: new ArrayAdapter add add ... add setAdapter Сложно пиздец. > Твое "из коробки" юзает овердохуя ресурсов и тд Листвью юзает овердохуя ресурсов?.. Просто пиздец, что за хуйню я читаю. >>528899 > А для 500 я бы использовал RecyclerView. Говно то ещё, но он как раз для таких случаев. Сорта на самом деле.
>>528962 >Сколько занимают в памяти простенькие молели? 50 кб? 100 кб? Или, о ужас, 150 кб? Ну если понадобится прокинуть их куда-то насосешься хуев и обоже! замедлишь работу. >А и не нужно. Адаптер вообще не надо переопределять. 9 строк: Жопочтец, там несколько вьюх в итеме. >Листвью юзает овердохуя ресурсов?.. Сравни с минимальными затратами на 7 отдельных итемов и отсоси. >>528965 Сугубо удобнее.
>>528972 > Ну если понадобится прокинуть их куда-то насосешься хуев и обоже! замедлишь работу. Куда прокинуть? Я, кажется, несколько абстрактный пример с 500 итемами придумал в качестве аргумента за листвью. Куда тебя понесло? > Жопочтец Значение знаешь? > там несколько вьюх в итеме. Зависит от модели. Может там 1 строка, мне хватит передать ид дефолтного simple_list_item_1 или хуй знает как он называется. > Сравни с минимальными затратами на 7 отдельных итемов и отсоси. Байтоёб незаметен. Затраты сравнимы и не стоят отказа от листвью. > Сугубо удобнее. Одно и то же с той поправкой, что FrameLayout гораздо проще в своей реализации. Всё равно что использовать LinkedHashMap вместо HashMap, когда тебе фичи линкеда не нужны.
>>528977 Ну 500 итемов в реальности нужно где-то хранить кроме оперативы. При опрокидывании в любое активити прийдеться тратить дохуя времени и тд. >Значение знаешь? Значит что ты жопой читаешь. >Зависит от модели. Может там 1 строка, мне хватит передать ид дефолтного simple_list_item_1 или хуй знает как он называется. Это к жопочтецу. >каждый элемент списка - это день недели (наименование), и ещё несколько параметров >Байтоёб незаметен. Затраты сравнимы и не стоят отказа от листвью. Больше лишнего кода, больше ресурсов, хуйня короче, это не пейджервью у которой и аналога то нету. >Одно и то же с той поправкой, что FrameLayout гораздо проще в своей реализации. Проще, но это не одно и тоже, с рейлетивом мне лично было удобнее, хотя весь основной юи делаю блочной с линеарами.
>>529000 > Ну 500 итемов в реальности нужно где-то хранить кроме оперативы. При опрокидывании в любое активити прийдеться тратить дохуя времени и тд. Если это те же 100 кб - нет, не долго. Если это 1мб и более - оно просто не передастся. > Это к жопочтецу. Я не читал его пост, да. Ну тогда придётся гетвью писать, что нихуя не сложно. > Больше лишнего кода, больше ресурсов, хуйня короче, это не пейджервью у которой и аналога то нету. Кода меньше, причём ощутимо. Ресурсов больше совсем ненамного. > Проще, но это не одно и тоже, с рейлетивом мне лично было удобнее, хотя весь основной юи делаю блочной с линеарами. Задача: сделать одну вьюху поверх другой. Реализация: Х-лейаут и 2 дочерних вьюхи, где Х-лейаут - Frame или Relative. Особых атрибутов нет, а значит разница в том, что ты напишешь в названии тега. Вот и получается, что Frame в данном случае логичнее, а Relative не может быть удобнее. Это всё равно что использовать LinkedHashMap и не пользоваться итераторами, но заявлять, что "с ним удобно".
>>529010 >Если это те же 100 кб - нет, не долго. Это для твоего глаза недолго, а так это не оптимизированное говно. >Кода меньше, причём ощутимо. Это с листом-то кода меньше? Даже спорить не буду. Уже написал про адаптер.
>Вот и получается, что Frame в данном случае логичнее, а Relative не может быть удобнее У рилейтива прямая связь к вьюхам. То что у тебя "не может быть удобнее" сугубо твое мнение. Хуярить блочный интерфейс на рилейтиве ошибка, а тут все ок. С линкедом можешь ступать нахуй, так как это такое же байтоебство на кое ты мне указал, когда я обосрал листвью.
>>529013 > Это для твоего глаза недолго, а так это не оптимизированное говно. Байтоёбы-байтоёбушки > Это с листом-то кода меньше? Даже спорить не буду. Уже написал про адаптер. 9 строк + еще getView. Вручную это: 7 раз инфлейтить вручную вьюхи, вешать на каждый клик листенер, резолвить ресурсы фона вьюх и разделителей, ставить фон для вьюх, ставить разделитель в лейаут. Можно через xml, но тогда опять получим весьма длинную разметку + скорее всего придётся вынести разметку одного итема. Ощутимо больше работы, тебе так не кажется? > У рилейтива прямая связь к вьюхам Чего? > То что у тебя "не может быть удобнее" сугубо твое мнение. Нет, я привёл сухой объективный факт в данном случае. > С линкедом можешь ступать нахуй, так как это такое же байтоебство на кое ты мне указал, когда я обосрал листвью. Пиздец ты тупой. Ты предлагаешь отказаться от удобств листвью в виду того, что он тяжёлый. А в этом вопросе я предлагаю перейти на фрейм потому что релайтив вообще никаких удобств не прибавит для решения конкретной задачи.
>>529017 >Ты предлагаешь отказаться от удобств листвью в виду того, что он тяжёлый. В данном случае удобств ноль, одни блядь затраты. Я про это и толкую. Тупой пиздец просто.
>>529017 > 7 раз инфлейтить вручную вьюхи Таки не удержался. Это просто пиздец. Там статик данные их в тупую в иксемель засунуть можно. Но нет блять, я буду делать модели, буду держать словари для них и хуярить кастомный адаптер. Иди нахуй.
>>529024 > В данном случае удобств ноль, одни блядь затраты. Я про это и толкую. Не делай вид, что не заметил разъяснений по поводу удобств в том же посте. > Нет это ты тупой и ты байтоёб! Кек.
>>529028 > Это просто пиздец. Там статик данные их в тупую в иксемель засунуть можно. Я и про это написал. > хуярить кастомный адаптер. Просто создать анонимный класс,7 дополнительных строчек - не много.
>>529031 > но тогда опять получим весьма длинную разметку + скорее всего придётся вынести разметку одного итема. Ощутимо больше работы, тебе так не кажется? Весьма длинная разметка версус куча исполняемого нахуй ненужного кода. Сказать победителя?
>>529033 > Сказать победителя? Очевидный код потому что его меньше и без феерического размножения одних и тех же элементов разметки. Я так и представляю этот xml длинною в 400 строк против 30 строк кода.
>>529040 > Дебил что-ли? Каких 400 бля? Несколько textview, каждый в своём лейтауте и так 7 раз. Вполне 400 выйдет, а то и больше. > Уже не 7 строк кода? С новыми условиями - уже не 7, я и не отрицал. > Да ты блять холдер только сделаешь уже больше будет. Холдер тоже примерно на 5 строк, лол. А можно вместо холдера ёбнуть массив textview, не самый плохой вариант.
Хочу запилить небольшую библиотеку для быстрой интеграции с GCM. Уже в принципе её запилил, но столкнулся с такой проблемой: при обновлении приложения с Play Market обновляется token девайса который надо передавать на сервер.
Чтобы сделать это, из библиотеки мне нужно запускать сервис приложения, в которое она интегрируется. Каким образом это можно сделать (minSdk = 14, Target = 22) ?
>>529161 Нет. Он будет зависеть от разрешения. Он не будет зависеть от плотности пикселей - т.е. физический размер элементов в dp будет везде одинаков. Используй библиотеку sdp.
>>529164 Используй её только там, где это необходимо. Например экран ознакомления должег смотреться на всех экранах одинаково. Экран со списком должен га больших экранах вмещать больше элементов.
Сразу вдогонку: http://pastebin.com/x4APpYvM Какого хуя два последних элемента, вложенных в один LinearLayot, и разделенные по весу, при выполнении выглядат рандомно? Причем этот рандом одинаковый, как я веса не менял. Или я что-то неправильно делаю? Должно получится, как на пике, дезайнер показывает, что всё вроде как так, начинаю выполнение программы, добавляю текст - и всё совсем не так.
>>529183 у тебя там всякие гравити и алигны, я бы попробовал их убрать. Для LinearLayot в этом мало смысла. И еще поставь layout_width = "0dp" для чайлдов. Их ширина определится по весу, нет нужды ее задавать.
>>529191 >И еще поставь layout_width = "0dp" для чайлдов. Их ширина определится по весу, нет нужды ее задавать. Боже, лол, заработало. Спасибо огромное.
>>529173 Веса влияют только на свободное пространство. Предположим, что существует несколько элементов с врэп_контэнт, но один из них в два раза больше других, а места, чтобы все выглядели пропорционально не хватает, тогда этот элемент и останется самым большим, а остальные разделят пропорционально свободное место между собой и будут одинаковыми.
Антоны, как уничтожить активити. Заебался уже. Есть стартовая активити, вызываю интентом следующую, там выполняются какие то действия, заполняются листвью и т.д. Как при нажатии баттона, мне вернуться на предидущую, а эту уничтожить, что бы при повторном её запуске, создалась уже новая активити, а не старая, заполненная.
>>529644 Что за вытягивающееся? Если речь про хуйню внизу на первом скрине, то попробуй SlidingUpPanel от umano. Ето может уже и в СДК появилась возможность такое делать.
Почему результат Debug.MemoryInfo().getTotalPss() отличается от adb shell dumpsys meminfo? Пихаю getTotalPss() где только можно в коде, ищу максимальное, а в итоге Total PPS в meminfo дает результат примерно на 10 мб больший. И это я meminfo просто случайно запускаю во время работы процесса. И в догонку - как найти у meminfo максимальное значение?
хочу запилисть клиент-серверный чатик, который на самом деле будет свободным РПГ. С ответам как на харкаче на андроид. То есть пользователь отвечает на пост другого пользователя тем самы продлевая сюжтную линию, как на пикрелейтед. И по ответам будет рисоваться картинка с линиями, где указаны посты ответов. Как это реализвать? может лучше использовать не андроид, а намутить сайт. Подскажите с чего начать?
Спасибо за холивар, посоны. Я тогда не учёл одно условие: в этих 7 элементах должен сохранятся пользовательский ввод при скроллинге. При этом, нельзя при каждом изменении сохранять что-то в БД. В БД идёт запись только при нажатии отдельной кнопки на тулбаре, при этом, просто перезаписываются все значения из списка. Там 100% нужен обычный набор вьюх. Хотя, тогда непонятно, как решать эту задачу, например, для 1к элементов
>>530120 Да, надо. Гугли различные EE технологии, они используются в андроиде постоянно. Почитай про EJB, JPA, JSF и пр. Потом, попробуй написать простенькое приложение-сервер на 1к запросов в секунду, и выложи его в гуглплей.
>>530425 бумп Получается мне нуно организовать клинет-серверное приложение. на клиенте пользотватель заходит в тред, видит ответы, может отвечать на них, при ответе наверху рисуется дерево сюжетов. При нажатии на точку в дереве переходишь к посту. Как это лучше реализовать?
>>530425 > может лучше использовать не андроид, а намутить сайт Может > И по ответам будет рисоваться картинка с линиями, где указаны посты ответов Горизонтальный скрол с линиями и текствьюхами >>530452 > Получается мне нуно организовать клинет-серверное приложение Да > При нажатии на точку в дереве переходишь к посту По текущему дизайну у тебя точки слишком мелкие, хуй попадешь пальцем. Да и посты хуево выглядят. К тому же хули они у тебя однострочные, если это целая РПГ?
Есть простенькое приложение, парочка скролвьюх и карты. 1. Сколько указывать Java Heap Size? Поставил 1G, при работе с картами говорят столько нужно, если это самая ресурсоёмкая часть приложения по сути, то можно не менять? На что это влияет в принципе? Внятного гугл ничего не говорит. 2. Нужно ли как-то описывать поведение приложения в фоновом режиме? Пока OnPause выключаю слежение GPS, и на OnResume включаю, вроде если свернуть, другие приложения понажимать недолго и вернуться, всё будет в виде, при котором юзер выходил из приложения, т.е. какое-то автоматическое сохранение состояния есть. Нужно ли вручную еще что-то допиливать?
>>530505 Твое приложение могут убить если вдруг память заканчивается. Включи в дебаге Don't keep activities и посмотри. Если тебя устраивает, то копай в сторону onSaveInstanceState()
>>530472 Большое спасибо за ответ! Однострочные - высмысле в одну троку, нужно текстовое поле добавить? С чего лучше начинать, я понимаю, что вообще нужно с книжки, но это долго, в общем - как искать то, что мне нужно для решения задачи? Вообще дизайн не главное, основное что мне нужно - реализовать чат с ответами и прорисовку дерева с возможностью переходить на пост и подсвечивать выбранную ветку.
>>530529 Оно именно так отлаживается, по крайней мере, когда в приложении несколько Активити. К примеру, при перехода с первого во второе, первое уничтожается.
Аноны, есть одно активити c некоторым количеством полей. Данные должны сохраняться только при клике на определённую кнопку. Есть два стула:
1) Открывать транзакцию в OnCreate, закрывать в OnStop, обрабатывать каждое изменение поля.
2) При клике на кнопку сохранения, читать значения всех полей, и сейвить всё. Минус в том, что некоторые строки при этом, будут добавляться, некоторые - удаляться.
>>530633 >getText().length() != 0 Ну я вот так сделал: EditText editText1 = (EditText) findViewById(R.id.editText); editText1 = editText1.getText().toString(); А мне пишет, мол ошибка. Не подскажешь?
>>530639 Я не знаю, какую ошибку пишет. Но, скорее всего, ты пытаешься в переменную типа EditText записать строку. Мне кажется, тебе надо программированию получиться сначала.
Нужны хорошие материалы по тому, как делать fancy UI, от которых любой дизайнер будет ТЕЧ. Остальное, что относится к программированию на жаве и программированию вообще не интересует.
>>530673 "Вначале научитесь рисовать как старые итальянские мастера, потом начнёте рисовать как я" (Сальвадор Дали). >хорошие материалы по тому, как делать fancy UI Apple Macintosh Human Interface Guidelines, 1995. Повторяю, 1995... 1995.
Андрончики, если я хуевенько знаю джава кор, на троечку, то будет ли это блокировать меня в андроиде? Можно забить на эккелей-шмекелей и сразу курить http://developer.android.com/training/index.html ? Или все же нужно задрочить пару фундаментальных книжек по яве?
>>530930 Нет, не "куда более". Сложность реализации обоих методов эквивалентна. А ООП не жалует выноса абсолютно всех простых операций в отдельный метод. Иначе говоря, в данном случае нет никакой разницы.
При работе с классами иногда вообще есть смысл работать с более сложной реализацией просто для наглядности.
Я поправил принципиально не работающий код. Меня поправили на эквивалентную реализацию во всех смыслах. Так что нет, не зря.
>>530124 >>530424 >>530439 Ну не ругайтесь антончики, я тут новичок, я думал для приложений использующих интернет может понадобиться что то из ЕЕ, например при написании клиента на базе андроида, ну или к примеру для получения нужных данных из сети(сервера), обработки и отправки.
>>530934 На мой взгляд, лучше было бы применить .isEmpty(), т.к. это вызов лишь одного метода, а не вызов метода и сравнение полученного значения с нулём.
Edittext. К нему нужно возвращаться n раз. После первого использования edittext'a в нём остаётся заполненное слово, когда уже второй раз возвращаешься. Как "обнулить" едиттекст? С помощью сеттекст?
>>531057 помогло! Спасибо огромное. Слушай, может кинуть статью какую-нибудь или сам написать, как сделать, чтобы был массив стринг слов, и рандомно оттуда бралось слово и присваивалось чему-то?
А на чем вообще кроме явы можно пилить под ведроид? Есть какие-то другие годные варианты? Я хочу попробовать себя в кодинге под андроид, но боюсь этой жавы, блять.
Почему в Андроид примерах от Гугла используются имена переменных, начинающиеся с "m", разве это не плохой стиль? Существует ли гайдлайн, или это автору просто так приятнее писать?
// Instantiates a new DownloadStateReceiver DownloadStateReceiver mDownloadStateReceiver = new DownloadStateReceiver(); // Registers the DownloadStateReceiver and its intent filters LocalBroadcastManager.getInstance(this).registerReceiver( mDownloadStateReceiver, mStatusIntentFilter);
Полный ноль в Android Studio, нихуя не выходит ПОМОГИТЕ. Значит задача такая, что при первом нажатии кнопки меняется цвет, при повторном возвращается. Главное ошибок не выдает APK лежит в папке, но при открытие краш, что в эмуляторе, что на телефоне.
Аноны, поясните за ButterKnife, чем он лучше нативных вызовов, чуть короче запись?? : @Bind(R.id.tvState) TextView textView; чем TextView textview= (TextView ) findViewById(R.id.tv); По производительности на пару ms уступает, а вызов того же onClick ничем не отличается, кроме указания ссылки на кнопку прямо в коде а не в xml
public void onClick(View v){}
@OnClick(R.id.submit) public void submit(View view) {}
Дайте годный гайд как имплементировать плеймаркетоподобный интерфейс. Т.е. в меню дохуя пунктов каждый из которых меняет главное окно но само меню остается старым, а тулбар либо просто меняет элементы либо просто перерисовывается с анимацией. Я понимаю что это жонглирование фрагментами, но хотел бы почитать прямую реализацию.
>>531697 Ну сиха в ассемблер компилируется. А байткод = ассемблер. Алсо, там ебатня с компиляторами разными под разные платформы, а у жабы всегда один.
Почаны, почаны, кому сегодня легион отправил сообщение об оффлайн школе, отпишитесь. Интересно, сколько нас тут. Охуею если еще на оптиков потом пересечемся, лол.
>>531580 > чуть короче запись Да. >>531694 > не хочу писать велосипеды Свои велосипеды - это здорово. Всегда пишу велосипед, а только потом начинаю использовать либу.
>>531708 >Всегда пишу велосипед, а только потом начинаю использовать либу. Я прошу не любу а реализацию, которую я смогу скопировать и редактировать так как мне нужно. Пишу не для себя, потому хочу ровно все сделать.
>>531720 Возможно, у меня как раз 1%. Ну и делать с нуля не хочу, просто спросил, вдруг что-то готовое есть, либа какая-то, еще чтот, почему бы и не сделать в таком случае.
>>531580 Из плюсов - удобнее, с @OnClick можно не беспокоится о том что название в onClick не будет совпадать с название функции. Из минусов - он генерит код, в эклипсе с ним иногда приключается беда, так же если его использовать в наследовании классов то приходится каждый раз клинить проект.
Не думаю что есть смысл пилить одельный тред. Кто сколько зарабатывает? После месяцев практики стоит взять свое первое фрилансерское задание? После скольки лет можно будеи хардовые задания? Или тут все работают на себя? Просто боюсь что не взлетит то что буду придумывать я. Пишу тут - иьо ведроид мне интересен, хотел бы в его сторону работать. Не спал всю ночь, простите за неровный почерк.
2 часа уже мучаюсь. новичок. Все знаю, как взять текст из edittext и вставить его себе куда надо. Но как быть, если edittext находиться на предыдущем layoute?
>>532214 Видимо я не правильно тебя понял. Или ты меня. У меня 2 layout'a. На одном- едитекст и кнопка. На другом - текствью. Хочу, чтобы когда пользователь в edittext вводил "моча" и нажимал на кнопку, появлялся следующий вью, где у текстview заменен сам текст. Переключить-то легко, а вот с текстом беда
Есть кнопка и textview. Когда нажимаешь на кнопку в текствююшки кое-что меняется. Но когда перезапускаешь приложение оно пропадает. Представляете? Как сделать, чтобы постоянно сохранялось значение с последнего нажатия кнопки?
Здравствуйте, программисты. Есть один реквест. Суть - есть вот это приложение https://play.google.com/store/apps/details?id=com.music.star.startag (apk могу дать если нужно), и нужно отучить его показывать рекламу (причем убрать как сам баннер, так и белый кирпич-плейсхолдер). Насколько я понимаю - это делается с помощью удаления пары строчек в AndroidManifest.xml и папки ad, это я сделал, но скомпилировать apk потом не могу - apktool в командной строке выдает исключение с какими-то файлами Java. Анон, очень прошу, помоги, если это так просто - то для тебя это пять минут работы. Я бы и заплатил, но живу в Беларуси так что на телефон положить не могу, и ни вебмани ни яндекс.деньгами не пользуюсь. Дайте знать если кто возьмется это сделать. Если хотите - вот фейкомыло: [email protected]
>>532453 Двачую, тоже сейчас ищу работу и встретил уже несколько подобных вакансий. Словно если пишешь под мобильную платформу, то должен знать сразу всё, и не важно, что там разные языки и фрэймворки.
>>532453 Двачую, тоже сейчас ищу работу и встретил уже несколько подобных вакансий. Словно если пишешь под мобильную платформу, то должен знать сразу всё, и не важно, что там разные языки и фрэймворки.
>>532515 > Чому так все текут от MVVM Меньше шелупони свзяананной с однообразным действивем уровня нескольких setText'ов в ряд. >>532670 Нихуя не понятно, каким временем еще? >>532724 Элементы на экране - процент от экрана. 10% от 2К (максимальный сейчас экран) - 256x256 или 204xчто-то, если пихаешь в атлас. Дальше даунсемпилишь до 720п графики (нищенки с 480п мобилками не будут платить тебе за игру).
>>532839 >временем 1) Включается первый layout 2) В 0 секунду расстояние между буквами - a, в 5 секунду - б. Измение от а до б должно идти плавно. Это возможно реализовать? говно (0 секунда) г о. в. н. о(5 секунда. Надеюсь пробелы между буквами видны)
для начала сгодились статьи которые в топике, однако есть проблема которую трудно загуглить и нет в теории. может кто поможет? в общем пишу мессенджер, внешний вид чата такой: заголовок контейнер для сообщений поле ввода + кнопка отправить Также как у VK и Viber. Но когда я нажимаю на поле ввода, все элементы, включая заголовок смещаются вверх, а мне надо чтобы заголовок оставался в шапке. VK/Viber сохраняют заголовок как надо, как пример. Значит как-то можно это сделать. Но как? Спасибо
Анон тред не читал помоги с вопросами Что будет если в манифесте не указать "главную" Activity? 1) Возникает ошибка сборки приложения 2) Возникает ошибка при установки приложения 3) Возникает ошибка при установки приложения при API >= 11 4) Приложение соберется и установиться, но не появиться в списке приложении на устройстве
Какой метод класса ViewGroup (или его потомков) при первой отрисовке вызовется первым? 1) onDraw 2) onSizeChanged 3) onMeasure 4) onLayout
Каким способом нельзя сохранить ссылку на AsyncTask при пересоздании activity 1) С помощью методов onRetainNonConfigurationInstance() / getLastNonConfigurationInstance() 2) С помощью методов onSaveInstanceState() / onRestoreInstanceState() 3) Сохранить ссылку в объекте Application 4) Сохранить ссылку в объекте Fragment
Какие из методом (onPause, onStop, onDestroy) будут вызваны у activity, если в результате нажатия пользователем кнопки внутри этой activity будет показан диалог (наследник DialogFragment) 1) onPause -> onStop -> onDestroy 2) Только onPause -> onStop 3) Только onPause 4) Ни один из методов
Какой тип данных можно положить в Bundle? 1) Любой Object можно передать в bundle (и все варианты что ниже) 2) Можно передавать Map - связка ключ, значение 3) Можно передавать Bundle в Bundle 4) Bundle не предназначен для передачи данных
Какой из ниже перечисленных механизмов или компонентов, привязывается к жизненному циклу Activity или Fragment? 1) Поток, созданный в активити 2) Компонент Services 3) LoaderManager + Loaders 4) AsynkTask с методами onPostExecute и onPreExecute
Что произойдёт, если вернуть null из Fragment.onCreateView? 1) Возникнет исключительная ситуация NullPointerException в конструкторе фрагмента 2) Возникнет исключительная ситуация NullPointerException во время транзакции если не указан тег 3) Возникнет исключительная ситуация NullPointerException во время транзакции 4) Допустимо возвращать null
Чем могут быть вызваны утечки памяти? 1) Сохранение ссылки на Activity или View в статической переменной 2) Вызов FragmentManager.replace() не на GUI-потоке 3) Циклические ссылки 4) Отсутствие вызова setContentView(null) в методе Activity.onDestroy()
>>533014 Откуда такие вопросы? Я только один ответ знаю. 3) Только onPause. Так что либо вопросы требуют знаний, не нужных девелоперу, либо у меня сейчас начнёт гореть.
>>533014 > Что будет если в манифесте не указать "главную" Activity? 4) Приложение соберется и установиться, но не появиться в списке приложении на устройстве > Какой метод класса ViewGroup (или его потомков) при первой отрисовке вызовется первым? 3) onMeasure > Каким способом нельзя сохранить ссылку на AsyncTask при пересоздании activity 2) С помощью методов onSaveInstanceState() / onRestoreInstanceState() > Какие из методом (onPause, onStop, onDestroy) будут вызваны у activity, если в результате нажатия пользователем кнопки внутри этой activity будет показан диалог (наследник DialogFragment) 4) Ни один из методов > Какой тип данных можно положить в Bundle? 3) Можно передавать Bundle в Bundle 2 тоже верно при некоторых условиях. > Какой из ниже перечисленных механизмов или компонентов, привязывается к жизненному циклу Activity или Fragment? 3) LoaderManager + Loaders > Что произойдёт, если вернуть null из Fragment.onCreateView? 4) Допустимо возвращать null > Чем могут быть вызваны утечки памяти? 1) Сохранение ссылки на Activity или View в статической переменной
Не на все вопросы уверен, но скорее всего всё так.
Спасайте, насосался уже таких хуев что сил нет. Нужно сделать верхнюю панель Аля статустрей. Все бы норм но ебучий ресайклервью со своим кривым лейаутменеджером не может в врапконтент, но хуй с ним, взял кастомный. Теперь при удалении итема оно враеит контакт без анимации и тд, получается равное говно. Спасайте, заебали эти костыли.
Спасайте, насосался уже таких хуев что сил нет. Нужно сделать верхнюю панель Аля статустрей. Все бы норм но ебучий ресайклервью со своим кривым лейаутменеджером не может в врапконтент, но хуй с ним, взял кастомный. Теперь при удалении итема оно враеит контакт без анимации и тд, получается равное говно. Спасайте, заебали эти костыли.
>>533091 Чего доебался-то, вопрос нихуя не очевидный, мне нужно чтоб при изменении размера ресаклвьюва все вьюхи ниже него двигались плавно, все что нашёл еба реализацию с скроллейблом и ручной генерацией итемов
Бля, в пизду это ведро, этот гугл и их ресайклер говновью с еще говнянее менеджером. Чтоб сделать элементарный лист с высотой врапконтент и свайпом для дисмиса я блять ебусь уже целый день и нихуя. То там баг то там. Да ебал я в рот.
>>533224 >некомпетентный Значение знаешь? Талантливый ты наш, может посоветуешь чего дельного или хуй простой? Как вообще можно было выпустить линеарлейаутменеджер с таким-то багом. Тем более зуб даю что в треде никому ума не хватит ровно решить проблему.
>>533240 Ну вот и приехали, ты сам ответа не знаешь. Про это и говорю, ресайклервью говно, а старый добрый свайплиствью депрекейтед. Какую кнопку нахуй, если у меня тут дизайн. Но видимо возьмусь таки за старые либы ибо пиздец.
Что-то гайды в оп-посте хуйня какая-то в стиле "изучим как повесить обработчик нажатия на баттон и блять целый урок о хуйне какой-то". Может кто-нибудь знает нормальные гайды вида "обзорная лекция + задание на самостоятельное выполнение", чтоб без даунического говна.
Помогайте, Джаваны. Есть приложение, детали не хочу пилить, суть такова: есть приложуха, все работает. Но очень желательно, чтобы присутствие приложения не было видно через таск менеджер. Следовательно приложение нужно переделывать в Сервис? В связи с этим несколько вопросов: 1. Правда ли что на 4-м ведроиде и выше сервис не стартует до первого запуска руками пользователя? Не стартует после остановки через настройки. 2. Возможно ли вообще повесить в сервис BroadcastReceiver таким образом, чтобы он перезапускался в случае внезапного краша?
>>534035 > Возможно ли вообще повесить в сервис BroadcastReceiver таким образом, чтобы он перезапускался в случае внезапного краша? Вешается пендинг интент на перезапуск на thread.onunhandledexception в application'е
>>534195 Насколько я понял Андроид выше 4-ки? Тогда отлично вообще. Спасибо. >>534234 Про интент на перезапуск не очень понял. >>534325 1. Как тогда у >>534195 работает? 2. Логично, спасибо
Мне нужно сделать список из постов, как на скриншоте (приложение Вконтакте), каждый пост - cardview. В ней список песен. Вопрос в том - как правильно обрабатывать клики по песням в списке? Как я понимаю, делать список песен придется при помощи linear layout. Каждый элемент списка постов будет содержать: 1. Информацию об авторе, дату и т.д. 2. Список песен Как мне определить - какому посту соответствует песня по которой пользователь кликнул?
>>534397 В тег лейаута добавить номер поста, например. Ещё я такие костыли использую: беру вьюху и дёргаю getParent циклом, пока не дойду до ListView. Предыдущая вьюха - корневая.
Вопрос вроде по теме. Я могу собрать android и ядро под cygwin? Линукс ставить тупо некуда, а побыть васяном и портировать на свой телефон цианоген хочется.
>>534569 >для toolbar/actionbar 24 dp Мне нужно в качестве кнопок использовать стрелочки и сердечко не в ActionBar. Выбирать тот dp, который лучше всего смотрится?
Анон, хочу сделать следующую анимацию фрагментов, при том условии, что таких фрагментов будет очень много (50-500, к примеру). Как это можно реализовать?
>>534897 Ну не траллькай плиз. Я про, например, сайты, на которые, если заходишь с ведра, то тебе настойчиво предлагает установить их БУСТЕР АНДРОИД, и прочие способы как навязать свое говно кому-то, кому оно даром не упало
ОП ебанный аутист дегенерат. Написал говношапку и накидал говноссылок, все есть на русском языке, нет блдяь - хочу стакхуерфлоу и домашнюю страничку какого-то долбоеба с котиками. Тупой биомусор.
Прошёл тест на e-legion, поздравьте меня. А теперь вопрос к работающим: значит ли этот сертификат на работу хоть что-то, или же это простая бумажка, по типу диплома за "1-е место на соревновании "Весёлые Старты" ученику 3-го класса А" при поступлении в МГУ?
>>535480 У меня даже на готовые проекты не смотрят, главное чтоб что-то было. Правда я своим поиском работы устроил дикий демпинг среди джунов ведроидов. Теперь сижу думаю с хуяли так мало просил.
>>535674 Так и думают. Вообще для меня и 500 норм, я просто неособо выкупаю какая сейчас на рынке цена. Да и подучиться бы еще у скиловых ребят а потом можно и на мида.
Коданы, а что есть по ВБ под андроид? Именно ПОД андроид, а не под винды. И да, как там сейчас обстоят дела с "андроид-девелопер" (йцукен-слайдер от гугла)?
>>535678 Размести резюме прямой сейчас на 4pda.ru. Кучу всяких заказов предложат. Далее выбери среди них самый простой на твой взгляд и спроси здесь про подводные камни. Далее выполняй и получай деньги. Несложный заказа для новичка на ~5-6 дней стоит от 15 000 р.
>>535685 Если можешь кодить - сможешь сделать почти любое приложение из предложенных. Игнорируй следующие типы заказов: 1. Приложение завязано на железо (модифицировать прошивку, написать приложение под конкретный телефон). Здесь очень много геммороя, а денег мало предлагают. 2. Приложение для соц. сетей. Рискуешь быть забаненным на маркете, если будешь публиковать из под своего аккаунта. Не используй названия брендов в описании приложения или публикуй с аккаунта заказчика.
Не передавай исходники. Если человек хочется взять для себя - бери дополнительную плату, т.к. он потом заебет тебя вопросами по коду.
>>535689 .apk не спеши передавать - засними видео, чтобы продемонстрировать работоспособность программы. Если заказчик - частник, то можешь дать ему .apk с закладкой/урезанным функционалом. Дизайн в 99% случаях делается без привлечения дизайнеров.
>>535689 >Приложение для соц. сетей. Рискуешь быть забаненным на маркете, если будешь публиковать из под своего аккаунта. Лол? Поподробнее, плиз, это о каких соцсетях идёт реч? А то собираюсь дописывать приложение для параши
Реквестирую гайдов по поиску удалённой работы. Сейчас допиливаю первое приложение сложнее HelloWorld'а. 1) Обязательно ли размещать его в маркете или покатит просто кинуть ссылку на апк в резюме? 2) Реально ли найти фулл-тайм удалёнку в Москве или Питере если ты метишь на Android Junior+? Если да, то на какую ЗП можно расчитывать? 3) Фриланс. Сколько можно просить за свои услуги, если изучал андроид по гуглодокам и ни копейки не заработал ещё?
Поясните мне кое-что , вот к примеру я хочу использовать либу Volley для того чтобы получить json с какого-нибудь ресурса. Я решил написать класс для общения с этим ресурсом - например пусть будет FakeService. В нем я описал метод getSomething(Callback callback) , который собственно выполнит запрос и внутри вызовет callback.onSuccess. Callback мой интерфейс с двумя методами onSucess,onError. Так вот что допустим произойдет если я во время выполнения onCreate у activity вызову getSomething , передам туда класс реализующий Callback , и после этого сменю конфигурацию (ориентацию) , предположим что выполнение запроса еще не закончилось на момент уничтожения старой активити.
>>536081 >предположим Хуй его знает, похожая штука с ретрофитом. Но у меня в реальном юзании ниразу не получилось вызвать креш. Но эти либы созданы для ведра, потому думаю там все ок с лайфсайклами.
>>536009 4pda 3) Именно с фриланса и начинай. Рассчитывай цену исходя из времени и твоей зарплаты размером в 45 т.р. Как присмотришь заказ - проконсультируйся здесь насчет сложности и сроков. Бери в 2 раза больше времени, делай быстрее, но сильно тоже не спеши. Тестируй на реальных устройствах (android 5; 4.4; 4.0)
43 вопроса из теста E-legion. Крестиками отмеченные мои ответы. Из учета того, что я провалил тест то там масса ошибок. Кто храбрый и сможет ответить на вопросы налетай ...
1. Какое основное отличие между apply() и commit() у SharedPreferences.Editor при добавлении данных в Preferences? - apply() вносит изменения только в память, но для сохранения их на диск нужно вызывать commit() - commit() вносит изменения только в память, но для сохранения их на диск нужно вызывать apply - commit() вызывается синхронно, а apply() асинхронно при сохранении данных на диск. Но при этом данные в памяти обновляются моментально. + apply() и commit() отличаются только тем, что commit() возвращает boolean значение об успехе операции изменения данных. 2. Какое основное предназначение метода onLayout() у View? - Метод вызывается для определения местоположения текущего View в его Parent - Метод предназначен для вычисления размеров текущего View + Метод вызывается для определения местоположения детей относительно текущего View - Метод предназначен для вычисления размеров детей текущего View 3. Какой тип данных можно положить в Bundle? - Любой Object можно передать в bundle (и все варианты что ниже) - Можно передавать Map - связка ключ, значение - Bundle не предназначен для передачи данны + Можно передавать Bundle в Bundle 4. Можно ли отправлять и читать SMS сообщения? - Можно читать, если есть нужный permission, но отправлять нельзя + Можно читать и отправлять, если на это есть специальные permissions. - Можно отправлять если есть нужный permission, но читать нельзя - Нельзя ни отправлять, ни читать. Никаких похожих Permissions нет. 5. О каких событиях нельзя получить уведомление через BroadcastReceiver в приложении? - Телефон загрузился - Состояние сети изменилось + Текущее приложение было удалено - Входящий звонок 6. Что произойдет, если несколько раз вызывать startService? - Создастся столько инстансов сервисов, сколько раз вызывался startService - Произойдет ошибка при повторном вызове. Приожение автоматически остановится. Необходимо делать проверку перед запуском сервиса, что сервис не запущен - При каждом запуске startService будет создан новый инстанс, но запуск сервиса произойдет только после завершения предыдущего сервиса + Будет создан один истанс, все последующие startService() уведомляют ранее созданный экземпляр через специальный метод 7. Что характерно для IntentService? - IntentService выполняется в отдельном потоке. При нескольких вызовах будет создано столько IntentService, сколько раз сколько вызывался запрос. Все выполняется параллельно + IntentService выполняется в отдельном потоке. При нескольких вызовах будет создан один IntentService, все запросы выполняются последовательно - IntentService выполняется в UI потоке. При нескольких вызовах будет создано столько IntentService, сколько раз сколько вызывался запрос. Все выполняется параллельно - IntentService выполняется в UI потоке. При нескольких вызовах будет создан один IntentService, все запросы выполняются последовательно 8. Какой метод не доступен для рисования на Canvas? - drawLine - drawPaint - drawRect + Все методы доступны 9. От какого класса наследуются все UI элементы, способные содержать другие UI элементы? - View + ViewGroup - LayoutView - RootView 10. Какого из Layout не существует в стандартном SDK? - LinearLayout - FragmentLayout - RelativeLayout + TableLayout 11. Сколько раз вызывается Service.onStartCommand? - Один раз, при запуске сервиса + Каждый раз, когда вызывается Context.startService с соответствующим Intent-ом - Каждый раз, когда приложение «уходит» в фоновый режим работы - Каждый раз, когда происходит binding к сервису 12. В каком потоке выполняется вызов метода OnClickListener.onClick у View? - В потоке, который указан программистом при создании View - В отдельном потоке, который создает Android при регистрации события + В потоке, в котором было создано View - В главном потоке приложения 13. Если вернуть false из View.onTouchEvent, в ответ на MotionEvent с действием ACTION_DOWN, то: + Ни один MotionEvent текущего жеста больше не попадет в onTouchEvent данного View - Если данное View не является ViewGroup, то Android никак не интерпретирует возвращаемое значение - Все MotionEvent-ы текущего жеста будут попадать в это View - Если данное View является ViewGroup, то Android никак не интерпретирует возвращаемое значение 14. Если печатать логи в каждом из перечисленных методов activity: onCreate, onStart, onResume, onPause, onRestart, onDestroy, какие цепочки логов невозможны? + onPause - onDestroy - onCreate — onStart - onPause - onCreate — onStart - onPause - onRestart - onResume — onPause - onPause - onResume - onPause — onRestart 15. Какие ограничения имеют экземпляры класса Service? + Выполняться в том же процессе, что и само приложение - Выполняться в отдельном от основного приложения процессе - Запускать activity - Все варианты неправильные 16. При каких значениях параметра “android:launchMode” activity будет существовать в системе максимум в одном экземпляре? - standard и singleTop - singleTop и singleTask + singleTask и singleInstance - singleInstance и standard 17. Как внутри метода activity onCreate() определить, что activity была пересоздана, а не запущена в первый раз? - Только так: getIntent() == null; - Только так: savedInstanceState != null; - Только так: isChangingConfigurations(); + Можно использовать любой из вышеперечисленных способов 18. Чем могут быть вызваны утечки памяти? + Сохранение ссылки на Activity или View в статической переменной - Вызов FragmentManager.replace() не на GUI-потоке - Циклические ссылки - Отсутствие вызова setContentView(null) в методе Activity.onDestroy() 19. Что из нижеперечисленного появилось в Android Lollipop? + Material design - Поддержка нескольких пользователей - Поддержка NFC - Всё перечисленное 20. Как приложение может получить доступ к внутренним файлам другого приложения? - У обоих приложений в AndroidManifest.xml должен быть указан одинаковый sharedUserId - Приложения должны иметь одну подпись + Варианты 1 и 2 вместе - Никак 21. Возможно ли изменять компоненты пользовательского интерфейса из background thread? - Невозможно. UI может быть изменен только из UI thread. При попытке изменения системой будет выброшен Exception - Невозможно. UI может быть изменен только из UI thread. При попытке изменения ничего не произойдет - Возможно с использованием Handler или runOnUIThread() - Возможно из любого потока - Правильные вариант 1 и 2 + Правильные вариант 1 и 3 22. Какие из методов (onPause, onStop, onDestroy) будут вызваны у activity, если в результате нажатия пользователем кнопки внутри этой activity будет показан диалог (наследник DialogFragment)? - onPause -> onStop -> onDestroy - Только onPause -> onStop - Только onPause + Ни один из методов 23. В каких случаях пересоздается activity, созданная с параметрами по умолчанию? + После перезагрузки устройства - При выходе приложения из background - При повороте экрана 24. ContentProvider-ы можно использовать, как слой абстракции для следующих источников данных: - только база данных SQLite - только текстовые файлы - только Shared Preferences + Для любых источников данных, включая описанные выше 25. Верно ли, что ContenProvider, реализованный в одном приложении, доступен другим приложениям? - Верно - Верно, но при первом использовании пользователю будет задан вопрос о разрешении доступа + Верно, если есть соответствующая настройка в манифесте - Не верно 26. Что будет если в манифесте не указать "главную" Activity? - Возникает ошибка сборки приложения - Возникает ошибка при установки приложения - Возникает ошибка при установки приложения при API >= 11 + Приложение соберется и установиться, но не появиться в списке приложении на устройстве 27. Какой метод класса ViewGroup (или его потомков) при первой отрисовке вызовется первым? - onDraw - onSizeChanged + onMeasure - onLayout 28. Каким способом нельзя сохранить ссылку на AsyncTask при пересоздании activity - С помощью методов onRetainNonConfigurationInstance() / getLastNonConfigurationInstance() + С помощью методов onSaveInstanceState() / onRestoreInstanceState() - Сохранить ссылку в объекте Application - Сохранить ссылку в объекте Fragment 29. Какой из ниже перечисленных механизмов или компонентов, привязывается к жизненному циклу Activity или Fragment? - Поток, созданный в активити - Компонент Services + LoaderManager + Loaders - AsynkTask с методами onPostExecute и onPreExecute 30. Что произойдёт, если вернуть null из Fragment.onCreateView? - Возникнет исключительная ситуация NullPointerException в конструкторе фрагмента - Возникнет исключительная ситуация NullPointerException во время транзакции если не указан тег - Возникнет исключительная ситуация NullPointerException во время транзакции + Допустимо возвращать null 31. Что произойдет при попытке выполнить сетевой запрос с помощью URLConnection из основных методов компонента Services на Android OS 4+? - Выполнится запрос, UI тормозить не будет - Выполнится запрос, но UI системы будет тормозить, пока выполняется запрос + Запрос не выполнится, так как Services не предназначены для этого - Запрос не выполнится, так как Services запускается в UI потоке и приложение упадет с ошибкой
32. Какой максимальный размер APK файла можно загрузить в Google Play? + 50мб - 64мб - 128мб - Нет ограничений на размер APK файла 33. Какой порядок жизненного цикла правильный во Fragment?* + onAttach(), onCreate(), onCreateView(), onAcitivtyCreated(), onDetach() - onAttach(), onAcitivtyCreated(), onCreateView(), onDetach() - onAcitivtyCreated(), onAttach(), onCreateView(), onDetach() - onCreateView(), onAttach(), onAcitivtyCreated(), onDetach() 34. Как называется набор утилит для подключения нативных библиотек? - ADB - SDK + NDK - ADT 35. В каком порядке закончит свою работу два AsyncTask-а, запущенные последовательно? + Зависит от того, как долго они выполняются, так как AsyncTask-и работают параллельно - Если API >= 11, то закончат в порядке запуска - Если API < 11, то закончат в порядке запуска - Если API < 11, то зависит от того, как долго они выполняются, так как AsyncTask-и работают параллельно 36. Какие компоненты никогда не прописываются в манифесте? - Activity - Service - Receiver + Loader 37. Что нельзя сделать с помощью Intent? - Запустить Activity - Запустить Service - Отправить широковещательное сообщение + Прочитать данные из ContentProvider 38. Какой способ сохранения ссылки на runtime-объект (например AsyncTask) при пересоздании activity рекомендуется в официальной документации android? - С помощью методов onRetainNonConfigurationInstance() / getLastNonConfigurationInstance() + С помощью методов onSaveInstanceState() / onRestoreInstanceState() - Сохранить ссылку в объекте Application - Сохранить ссылку в объекте Fragment 39. При запуске Activity из Service нужно: - Вызывать startActivity() на главном потоке Service - Добавить в Intent флаг FLAG_ACTIVITY_NEW_TASK - Добавить в Intent флаг FLAG_ACTIVITY_NEW_INSTANCE + Использовать метод Context.startActivityFromBackground() 40. В каких случаях в приложении может быть несколько файлов AndroidManifest.xml? - В случае поддержки разных локализаций и конфигураций - В случае, если в Google Play устанавливается разная цена в зависимости от региона + В случае наличия нескольких стартовых Activity - Ни в каких, AndroidManifest.xml всегда один 41. Какой компонент не может быть запущен при помощи Intent? + Content provider - Broadcast receiver - Activity - Service 42. Чему равен 1 dp., если плотность пикселей экрана устройства соответсвует hdpi? - 1 px + 1,5 px - 2 px - 3 px 43. При нехватке ресурсов в системе какой из перечисленных процессов android убьет в последнюю очередь, при условии, что ни один из процессов в данный момент не отображает видимого пользователю UI-интерфеса? - Процесс, в котором запущены три activity + Процесс, в котором запущен сервис и одна activity - Процесс, который не содержит ни одного запущенного компонента - Процесс, который занимает меньше всего памяти
>>536156 Я не буду на все отвечать, только поправлю то, что думаю неправильно.
> 1. Какое основное отличие между apply() и commit() у SharedPreferences.Editor при добавлении данных в Preferences? - commit() вызывается синхронно, а apply() асинхронно при сохранении данных на диск. Но при этом данные в памяти обновляются моментально.
> 2. Какое основное предназначение метода onLayout() у View? - Метод вызывается для определения местоположения текущего View в его Parent
> 4. Можно ли отправлять и читать SMS сообщения? - Можно читать, если есть нужный permission, но отправлять нельзя
> 10. Какого из Layout не существует в стандартном SDK? - FragmentLayout
> 15. Какие ограничения имеют экземпляры класса Service? - Все варианты неправильные
> 17. Как внутри метода activity onCreate() определить, что activity была пересоздана, а не запущена в первый раз? - Только так: savedInstanceState != null;
> 23. В каких случаях пересоздается activity, созданная с параметрами по умолчанию? - При повороте экрана > + Приложение соберется и установиться, но не появиться в списке приложении на устройстве > появиться > появиться suuuqa
> 31. Что произойдет при попытке выполнить сетевой запрос с помощью URLConnection из основных методов компонента Services на Android OS 4+? - Запрос не выполнится, так как Services запускается в UI потоке и приложение упадет с ошибкой
>>536158 > 35. В каком порядке закончит свою работу два AsyncTask-а, запущенные последовательно? За такие вопросы надо выебать. Не сказано даже, в каком экзекуторе запущены таски. Для дефолтного экзекутора оба этих варианте верны: - Если API >= 11, то закончат в порядке запуска - Если API < 11, то зависит от того, как долго они выполняются, так как AsyncTask-и работают параллельно Хуйня вопрос, короче.
> 38. Какой способ сохранения ссылки на runtime-объект (например AsyncTask) при пересоздании activity рекомендуется в официальной документации android? - Сохранить ссылку в объекте Fragment
> 39. При запуске Activity из Service нужно: - Добавить в Intent флаг FLAG_ACTIVITY_NEW_TASK
> 40. В каких случаях в приложении может быть несколько файлов AndroidManifest.xml? - Ни в каких, AndroidManifest.xml всегда один
> 42. Чему равен 1 dp., если плотность пикселей экрана устройства соответсвует hdpi? Вопрос не правильно сформулирован. Если имеется в виду отношение px:dp, то ты правильно выбрал. А если нужно узнать, во что сконвертируется 1dp - то правильный вариант 2 px.
Поясните за boolean в SQLite. Везде пишут, что нужно использовать integer с значениями 0 или 1. Однако я создал таблицу с boolean'ским полем, и даже заполнил значениями и он вроде как не выёбывается. Кароч, как правильно вытянуть данные курсором? Или всё-таки лучше Integer?
Куда податься молодому juniorуzifreid30/08/15 Вск 10:56:12#481№536753
Гайз. Я кун 24 лвл. Работаю инженером - после ВУЗа работу сразу нашел. В студенчестве был опыт с PHP, SQL - и дико нравилось это. Спустя два месяца ковыряния в резисторах решил уйти в программирования. Очень хочу. Учу/изучаю/что-то пишу свое под Android вот уже 1-1,5 года, хочу устроиться в нормальную компанию, но в городе (Томске) судя по всему с этим голяк. Делал 4 тестовых задания - 2 успешно, 2 не очень. В двух компаниях просто базу набивали, две другие - вот-вот потонут (не стал идти к ним).
Экономическая обстановка в стране сейчас плачевна - и я понимаю, что компании вряд ли будут брать новых сотрудников.
Скажите, куда податься молодому Junior Android Developer?
P.S.: сейчас подумываю C++ изучить - думаю, лишним для Android не будет.
Есть база данных SQLite, есть столбец id(integer primary key autoincrement) и name(text). Запрос на вывод заносится в лог с первого до последнего. Как мне эту херомантию из лога перетащит в textView? Анон, помоги.
Почаны, есть у нас Spinner, и есть к нему адаптер. ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, someArrayList); Этому спиннеру присвоен адаптер: someSpinner.setAdapter(spinnerArrayAdapter); Так вот, когда листаешь этот спиннер, он какого-то хера прыгает постоянно на начальные элементы. То есть скроллишь, скроллишь, хуяк, опять вверху, скроллишь заново, а оно хуяк, и опять тебя наверх. ХАЛП!
Гайз, надо, чтобы вьюха (не меню) справа выкатывалась драгом. Мне надо во фреймлайауте объявить пустую вьюху и на ондраг вьюхи лайаут транзишн написать, так?
Ребят , а как у вас дела обстоят с фрилансом и прочими подработками? Сейчас на работе говнокодю на серверсайд жабе , и хочу что-нибудь выучить для фриланса (выбираю между богомерзким джаваскриптом с ангуляром и андроидом) . Посмотрел на upwork так там в основном хотят чтобы приложение было сразу и под iOS и андроид.
Здравствуйте. Через месяц буду искать работу джуниором. Заметил, что во многих вакансиях в качестве требований стоит знание многопоточного программирования. А что именно это подразумевает в контексте Android-разработчика? Обычные Java Thread-Runnable? AsyncTask? java.util.concurrent? Какие-то сторонние Android API, реализующие многопоточность?
Возможно нубский вопрос, т.к. особо пока не занимался темой треда - как приложение узнаёт, что оно на рутованном телефоне и можно ли как-нибудь ввести приложение в заблуждение?
>>537364 Спасибо, но что "да"? Всё перечисленное нужно? А тогда какие есть популярные сторонние API для многопоточности? Знаю и пользовался только loopj.com/android-async-http/, кстати, охуенная вещь по сравнению с AsyncTask.
>>537370 Runtime runtime = Runtime.getRuntime(); runtime.exec("su") обычно вот так узнаёт. Про первую строчку не уверен, может, получение экземпляра как-то по другому, пишу, по памяти.
>>537371 Ну фиг знает работаю android девом четвертый год, в основном используем просто AsyncTask/AsyncLoader/IntentService/java..Thread/java..Executors Ну еще пытались Volley и RxJava - но они как-то не зашли.
А так джунов в основном гоняют по java.lang.Thread + java.util.concurrent.* - понятно же что вы андроиде нулевые
>>537474 И во фронтенде тоже... Вот вчера всю ночь не спал, читал про Rxjs. Потоки, события, хендлеры, промисы... Вот это всё у меня сейчас в голове. Сейчас куда не посмотрю, вижу Observable и сразу же всякие функции в голову лезут, жить невозможно. Так что да, видимо реактивное программирование это будущее.
Является ли тест от elegion чем-то показательным? Я на него не успел зарегаться, но я видел вопросы и могу ответить на все. С такими знаниями можно уже устраиваться джуном работать?
>>537563 И да, и нет. Вопросы там интересные, знать - крайне желательно, но для джуна, как по мне (а я wannabe junior dev) не сильно важно. В процессе работы столкнешься с каждым вопросом лично. Лучше поизучать библиотеки и новые веяния - реактивное программирование, например)). Это при тестовых заданиях и пару очков даст, и проще тебе будет. Самому на одном задании компания ткнула носом, типа, "написал велосипеды, а лучше бы все на либах сделал".
Тестовое задание: ================================================================ Реализовать простое приложение с базовыми функциями:
Общее: 1. Приложение должно иметь свою, отличную от стандартной, иконку. 2. При загрузке приложение должно отображать сплэш-экран (произвольную картинку). 3. В приложении показывать верхнюю панель со вкладками (TabHost): - List - Scaling - Service - Map Вкладки должны содержать название и иконку (можете подобрать любые из интернета). 4. Сделать локализацию приложения на двух языках: русский и английский с возможностью переключения языка из приложения (без привязки к языку устройства). (Для элементов интерфейса и упрваления приложения, то есть элменты списка из пункта 1 переводить не нужно). После перезагрузки приложения выбранный язык должен сохраняться.
Экраны: 1) List: - Вывести список (ListView) редактируемых пунктов: каждый пункт выводить как иконка-картинка (двух типов для всех пунктов) + имя пункта + чекбокс (если выбран, отображается иконка 1го типа, иначе - 2го типа). - В меню, отображаемое по нажатию на конпку Menu добавить пункт "Add", который открывает подэкран с формой добавления нового пункта (форма с одним полем - Item Name): Внизу две кнопки Done (добавить пункт) и Revert (отменить добавление) - по нажатию происходит возврат к списку, по нажатию на кнопку Back (на устройстве) выводить AlertDialog с предложением сохранить пункт, если поле Item Name было отредактированно, если нет, возврат к списку без AlertDialog'a. - При клике на пункт в списке открывать форму редактирования (индентичную форме добавления нового пункта). - При долгом нажатии на пункт выводить диалог с двумя пунктами Edit (открывать форму редактирования, как в предыдущем пункте) и Delete (удалить строчку из списка).
Примечание: приложение должно запоминать все вносимые в список изменения (добавление новых пунктов и редактирование существующих) - т.е. после перезапуска приложения всё должно быть так, как было до закрытия приложения.
2) Scaling: - На экране должны отображться две кнопки-картинки(используйте любые картинки для нормального и нажатого состояния): 1) выбрать изображение из галереи (нативного приложения Gallery); 2) снять изображение на камеру. После этого показать эту картинку на новом экране с возможностью увеличения и уменьшения через multitouch и через кнопки зума.
3) Service: - Получить от данного URL-а XML-данные: http://storage.space-o.ru/testXmlFeed.xml - Вывести полученные данные как статичный скроллируемый список, в произвольном виде (на свой выбор - главное чтобы было читаемо). - Во время загрузки показывать троббер (крутилку загрузки). - Сделать так, чтобы во время вращения троббера, можно было повернуть устройство горизонтально, и при этом запрос продолжал идти, а приложение не падало.
4) Map: - Отобразить MapView с указанием текущего местоположения. - Вывести географические координаты в виде текста на этом же экране. ================================================================
>>537934 В каком-то смысле да, этим заданием ты по сути сделаешь каркас, которым в дальнейшем же и будешь пользоваться, создавая приложения. А дальше зачказчик хочет список - копипастишь кусок кода, реализующий List, вставляешь нужные данные - профит, хочет отображение карты - копируешь кусок кода Map, ну ты понял короче. При этом ты доказываешь, что вот эту часть, которая везде одинаковая, ты уже знаешь, и будешь работать с ней не напрягаясь. Хорошее задание, короче. Емкое, но поучительное. Я что-то подобное делал на стажировке.
Коротко о главном:
1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - то добро пожаловать в андроид разработку.
2) Android Studio & Java - единственный легитимный набор.
3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах.
4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js.
Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development
Пред. тонет тут: http://2ch.hk/pr/res/514927.html