Это копия, сохраненная 28 января 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Коротко о главном:
1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - добро пожаловать в андроид разработку.
2) Android Studio & Java - единственный легитимный набор, теперь стал еще легитимнее.
3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах.
4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js. На самом деле изменил свое мнение, всякие поделки на 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. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.
Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development
Пред. тонет тут: https://2ch.hk/pr/res/569138.html (М)
https://dribbble.com/shots/2385292-Menu
( скрин слева )
2.bitmapList.add(BitmapFactory.decodeResource(getResources(), R.drawable.%ИМЯ_ПИКЧИ%, null));
Как думаете или знаете наверняка, можно ли вытащить потом после декодирование в битмэп картинки из ресурсов, это %ИМЯ_ПИКЧИ%?
Курю официальный сайт для девелоперов, но не вижу такого геттера.
Так как мне по тз, конечно же блядь, нужно было ебашить прямо в сраную библиотеку и частично переделывать ее под себя, у меня вышло много больше кода.
Ну понятно что это обычный дрвоерлейаут с флагом и костылями в виде всяких транспарент бекграундов у фрагмента. Но нахуя?
Нельзя
Вроде fragmentpageradapter не должен уничтожать, это fragmentstatepageradapter уничтожает.
Ему поебать, он запускает онСейвИнстанс и потом его ресторит. Я другой анон, тоже прихуел от такого поворота.
http://stackoverflow.com/questions/9727173/support-fragmentpageradapter-holds-reference-to-old-fragments
Тут хорошо пояснили, они все же уничтожаются, но потом сами восстанавливаются.
У меня таблейаут, который с вьюпеджером связанный. И когда я на какой-то вкладке, не соседние с ней доходят до ondestroyview, но не до ondestroy. Что я делаю не так?
Отбой
1. HashMap<имя пичкчи, пикча> вместо array list'a
2. Я смотрю у тебя оперативки дохуя делать массив битмапов.
> Радуемся анонсу второй версии андроид студии, пускаем слюни на новый градл. Сборка в несколько секунд теперь реальность.
Ого, это правда?
Есть мнение, что если использовать FragmentPagerAdapter, то локальные переменные фрагмента сохранятся при перелистывании. Вот из них и восстанавливай в onCreateView всё, что надо.
Норм, бывший одногруппник походил так в своё время, потом сразу же на работу устроился, вроде бы даже в ту же фирму, что и курсы проводила, если я правильно понял.
Почему данная конструкция принимает одно и то же сообщение по 2 раза? Pic1
Отправляю этим методом из BroadCastReceiver. Pic2
Хочу свое на диплом сделать.
Алсо, в тред призывается анон с той же идеей который был в прошлом треде.
Видел вчера одного козаха, говорить по 200$ в день получает за игрушку и уже успел купить квартиру и знаете что? Я ему верю.
На какой стул сесть?
1. Рисовать окружности как circle overlay.
Возможно ли потом добавить popup окошко с сообщением, которое открывается как при клике по маркеру на карте к объекту overlay?
2. Или сразу забить болт и поменять иконку маркера на сгенерированный bitmap в виде залитой окружности?
getX и getRawX чем отличаются? В каких ситуациях они применительны?
Наведи на него курсором и нажми Ctrl+B (если в студии): откроется соурс код и ты сможешь посмотреть, из какого класса он вызывается. Вроде бы, это метод для View.
Верно. Спасибо.
По поводу getRawX и getX:
getRawX пишут, что вернёт коордианты касания на экране.
getX на вьюхе.
getRawX ведь никогда не вернёт отрицательное значение коордианты в отличие от getX?
Каким образом получить первые координаты касания пальцев(1), так чтобы потом во время их скольжения(2) не переопределить самым последним значением их положения на экране(3)?
Бляяя, так канва тоже всегда положительные лишь координаты имеет?! Ну йопта!
http://developer.android.com/intl/ru/reference/android/Manifest.permission_group.html
Вот смотрите, там есть группа CAMERA и группа SENSORS с аналогичным описанием. Кто-нить может объяснить, чем одна группа отличается от другой?
http://developer.android.com/intl/ru/guide/topics/security/permissions.html#perm-groups
Ну, это ты и сам мог нагуглить.
Спасибо!
Они там в гугле описАлись, что ль, что там одинаковые описания?
Алсо, получается, все разрешения, которые есть (а их там больше 100) можно раскидать по этим категориям? Или не все?
http://developer.android.com/intl/ru/reference/android/Manifest.permission.html
Просто, если зайти в гуглоплей и посмотреть Пермишшны у приложений там, то будут и пункты, вообще не описанные в документации
Зависит от конторы же
Как скалировать канву, чтобы точка между пальцев так и оставалась между ними? Ебучий андруид смещает её каждый раз в угол как я понял.
В интернетах примеры с использование готовых методов каких-нибудь битмэпов, всё не то.
Это же, блин, такая нужная и часто используемая вещь почему нету какого-нибудь элегантного решения? 4й час ебусь уже.
public final void scale (float sx, float sy, float px, float py)
Если собираешь не первый раз и изменил только xml, то у меня на и5 4-7 секунд.
Первый раз так и остался ультрадолгим, а если внес изменения в код, то 20-30 сек.
1. Делаешь запрос в яндекс или гугл с координатами или адресами начала и конца
2. Получаешь жсон со списком координат
3. Парсишь координаты, раскладываешь их в массив
4. Строишь по этим точкам PolyLine на своей карте.
Там джава и ни одного курса. Только доки и ссылки не понятно куда. Как будто кто-то не знает про стэковерлоу и хабр.
>3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
не покупал, конечно, но мне кажется камней нету. А так же можно инфу, которая там содержится найти в свободном доступе в инете
Хочется, чтоб все было в одном месте и максимально продуктивно, как бы это не было смешно.
О, спасибо анон, начну делать. Я ньюфаг, но мне кажется это больше подходит для стажера, особо сложного ничего нет. Или это таки достойное задание для джуна?
Это три треда назад вкидывал анон, как задачу на джуна.
Кстати, если интересно, то я сейчас трудоустраиваюсь на андроидоджуна, самые популярные вопросы про конкретно андроид: лайфцикл активити, основные компоненты приложения и подобное говно энтрилевела. По чисто джаве любят спросить коллекции и конкарренси ещё. С другой стороны, эту муть я знал ещё год назад, но до сих пор так и не трудоустроился. На одном из собеседований мне сказали, что следует иметь задачи в гуглплее.
А почему до сих пор не устроился?
И не совсем понял, что значит "иметь задачи в гуглплее"? В смысле иметь гуглплей аккаунт и там выложенные свои приложения? И что туда новичку выкладывать, ну я допустим могу заплатить за аккаунт и выложить туда какой-нибудь погодный апп или змейку, но их же тысячи таких. Не лучше ли на гитхаб это выложить и показать? Там хоть код можно посмотреть.
>А почему до сих пор не устроился?
Хз, я в принципе, не совсем гладко все собеседования проходил. То на конкаренси запорюсь (я его и не знаю, сейчас прохожу на курсере курс по андроид конкарренси), то забуду, в чём выражается полиморфизм (ну это вообще сукпздц, я его, конечно, знаю и применяю, но вот суть тогда за ненадобностью забыл). Гитхаб есть, но смотрели его только на одном собеседовании из 4, похоже, лол. На остальных: "а у вас есть приложения в гуглплей? нет? ну блин". Вот последний месяц потихоньку делаю приложение для гуглплей, шоб поддержка с 9 версии, да с материал дизайном, да и ORM ещё запилить вместо ванильного провайдера, и ещё чтоб по MVP (кстати, по паттернам тоже часто спрашивают, в рот ебалъ, это, как по мне, просто пиздаболия сплошная вместо реальных знаний, откуда я могу иметь нормальные представления об MVP, если я на нём полтора проекта сделал и даже от MVC не отличу?).
Кстати, ещё спрашивают иногда про твой опыт в системах багтрекинга, типа редмайн или jira. Я всегда на таких вопросах делал грустное лицо и отвечал: "не знаком, не состоял, нет, нет, прочерк".
А откуда у тебя инфа про то, что за аккаунт гуглплей надо платить вообще?
ну охуеть теперь, платить деньги за то, чтобы тупо выложить апшку без надежды, что её хоть кто-то скачает. Вот ведь пидоры, однако, выбора нет.
Google Play Developer account will cost you $25 (one time).
>кстати, по паттернам тоже часто спрашивают
Вот от этого припекает, вроде и понимаю, что такое MVC и даже приложение разбирал по нему написанное. Но как садишься что-то свое написать, так мысли только "Боже, какое MVC, тут бы хоть просто заработало с моим кривым кодом", а надо следовать еще и паттернам.
>сейчас прохожу на курсере курс по андроид конкарренси
https://www.coursera.org/course/posaconcurrency
Это оно? Тоже интересно пройти.
Кстати, а можешь свой гитхаб дать, посмотрю насколько я еще готов/не готов, да и просто интересно.
Ага, он самый. Я сейчас три лекции посмотрел, в первой просто общая инфа по джавапотокам, во второй про джавасемафоры и андроидопроект небольшой, в котором нужно немного кода дописать, чтобы он многопоточно заработал, в третьей уже рассказывается про андроид-параллелизм.
>Кстати, а можешь свой гитхаб дать, посмотрю насколько я еще готов/не готов, да и просто интересно.
Извини, но во-первых дианон, а во-вторых всё равно ты не можешь по нему судить о своей готовности, ведь всё-таки я даже не джун.
Недавно предложило обновить до 1.5 — вообще ничего не правил, правда теперь public в интерфейсах ("public void methodName()", пишу по привычке) подчёркивает как ненужные, но на это похуй.
А setRetainInstance(true) проблему не решает?
Так что в в разработке ведро-игр такого ужасного?
1) Геймдев практически всегда - это сплошные овертаймы за смешную зарплату.
2) Если в серьезном геймдеве хотя бы есть интересные задачи, то клепание мобильного треша - это дно уровня веб-параши на ЦМС.
А где ещё в программировании есть интересные задачи? Интересует что-то хорошо оплачиваемое и востребованное. Я вот думаю, сейчас мобильные технологии быстро развиваются, и если ты хорош в андроида или иосе, то найдёшь себе интересную наукоемкую задачу например, написать байтоебский фреймворк, чтобы по блютузу с мобильника управлять кофеваркой
Это только за iOS платят, потому что не хватает специалистов. На Андроиде денег нет.
>не хватает специалистов
С чего бы? Так сложно переключиться на другую технологию? Или это в связи с тем, что нужно покупать лицензию?
Ой как же заебало это слышать. На айосе зарплаты больше и тд. Да не пиздите блять, алсо, всегда можно перекатится, принципы мобильных платформ схожи.
Лайфцикл активити это ладно, меня начали ебать по лайфциклу фрагмента, и я внезапно обосрался на всяких онкриейтвью, онактивитикриейтед, так как не помню очередность. Собеседущий сказал что онактивитикриейтед редко используется, но я задвинул что от задачи зависит, иногда же нужно активити дергать и тд.
Еще по сервисам прошлись, спрашивали про стикисервисы, я с ними не работал, и признаться вообще забыл что такие есть, но с горем пополам вытянули из меня ответ.
Ну а еще немного по флагам интента, по бекстеку еще немного знал, а там вообще пиздец.
Это то на чем обосрался.
И тем не менее прошел, правда не пошел туда, да и зп просил чисто на джуна.
Можно конечно, пописай
спасибо буду пробовать
Что должно делать приложение:
- проложить маршрут с текущего местоположения до определенной точки, говорить не буду, что не палить
- отобразить текущие координаты
- отобразить текущий ближайший адрес
- отобразить текущий внешний IP-адрес устройства
- автоматически заполнить форму в Google Forms
https://docs.google.com/forms/d/1JUUBRK3m9R8rFA3Nu7MpbM0zKR2lG1-TtTVyEnpmvys/viewform?usp=send_form
Выглядит не сложно, правда в с адресом ересь походу. Ну а с автоматическим заполнением походу никто без гугла не справится.
1. Каким образом первый пункт делать? Тут есть 2 варианта: через directions api полуяиьь точки и наебошить polyline на карте. Или вызвать гуглокарты с правильными параметрами и получть тоже самое.
Хотя судя по второму пункту, то делать надо через directions api.
Да там нехватало спецов в 2012. Айос выгоднее будет для инди разработки. А спецов не хватает на винфон. Но там спрос сам по себе существенно меньше, за пределами дсов можно оказаться ненужным
>лайфсайкл активити
ну в общем-то на самом деле правильная штука — оно может быть всего одно в приложении (потому что создавать активити — это одна из самых дорогих задач в андроиде), но там в этом активити может быть дохуя кода — сам долго сидел, когда надо было сделать так, чтобы если андроид убил приложение из-за нехватки памяти, то оно открывалось не на том экране, где его убили, а на начальном
>основные компоненты приложения
это про вьюшки что ли? ну 95% приложений на ресайклервью/листвью, если старые, построены.
Проблема тестов в том, что там спрашивается иногда всякое дерьмо типа "final class", которое просто не используется.
>то оно открывалось не на том экране, где его убили, а на начальном
это таски что ли? а я про онкриэйт-онстарт-онрезьюм-онпауз-онстоп-ондестрой
>это про вьюшки что ли?
активити-сервис-провайдер-ресивер
нет, это именно про онкриейт и так далее.
Сценарий: есть девайс на четвертом андроиде с 512 мегабайтами оперативки. Сначала открываешь своё приложение (делал по схеме "одно активити - несколько фрагментов"), залезаешь на экран подальше, потом сворачиваешься в браузер и там открываешь пару-тройку жирных вкладок. По возвращении андроид попытается вернуть тот экран, который был, а мне нужно было сделать так, чтобы вернул изначальный (то есть ещё очистить бэкстэк). onDestroy и onTrimMemory в этом случае не отрабатывали, там вообще ничего не сигнализировало о том, что приложение выгружено из памяти, довольно интересная задача.
> Проблема тестов в том, что там спрашивается иногда всякое дерьмо типа "final class", которое просто не используется.
Как это не используется? Или я не очень тебя понимаю.
Нормас, если с гуглом.
Я вот ни разу не сталкивался с ситуацией, когда был бы нужен запрет наследоваться от класса.
final object ещё хотя бы для синхронизации нужен, а вот final class — ни разу не пригождался.
Если бы оно правда выгружалось из памяти, то оно бы и возвращало изначальный, не7 Если процесс форсированно убивается, то как андроид сохранит инфу о состоянии активити? Не понял затупа, короче.
Я не разбирал глубже как это работает, но приложение действительно даже спустя миллион запущенных будет пытаться открываться с того экрана, на котором ты его свернул.
Ну я хз, вообще никогда не видел, чтобы приложение убивалось системой из-за нехватки места, но ведь тут по логике надо смотреть. Если приложение стартует не со стартового экрана -> у системы осталось состояние о нём -> процесс приложения не был убит -> поведение приложения не будет отличаться от того, как если бы ты его свернул или развернул (и похуй на жирные вкладки), а тебе, по сути, всего лишь в onStop второй активити нужно finish() вызвать и ещё таскаффинити в манифесте правильный поставить, чтобы первая активити тоже пересоздавалась.
Стринг именно так сделан, то что ты это не юзал, не значит что оно не используется, азазазаза
>вообще никогда не видел
С кем я тут сижу, вы наркоманы блять? Скачай апликуху для чистки памяти, и почисти юи память, она выгрузит все апликухи, вот тебе и эмуляция неххватки.
И Bitmap андроидовский тоже. Я могу привести примеры, где оно используется, но я не об этом говорил изначально.
Ну скачал, очистил, и хуле? Запустилась прога заново, а не с какого-то сохранённого места, как я и писал. Наркотики не употребляю, кстати.
А зачем он так сделал? Я читал, что это связано с его иммутабельностью, но так и не понял этой тонкой нити рассуждений.
Так что нам сделать? Удалить файнал класс нахуй потому что ты его не используешь? Ты про варарги слышал например? Тоже ненужны?
Хватит оправдываться. Вопрос с файнал классом - збс и нужно его знать.
Говно задачи когда у тебя задротская херь типа какими символами можно называть а какими нет. Подобный вздроч вообще не имеет право на жизнь.
Она должна запускаться с активити на которой была скрыта, не пизди.
ОнСейвАктивитиСтате нужно для сохранения состояния теперешнего. Если ты там вывел статик текст, то само собой ненужно, а если хуярил какую-то логику с выбором из листа например, то нужно.
>что это связано с его иммутабельностью
Собственно файнал класс - делает класс иммутабельным.
А так я читал что для защиты что-то там. На это уже вроде как всем похуй
Не пизжу, чувак. Запустил прогу, перешёл на другую активити, свернул, рубанул очисткой. Открываю заново - с нового листа. Проверил без очистки - остаётся на том же месте, где и было. У нас разные андроиды, похоже.
>ну в общем-то на самом деле правильная штука — оно может быть всего одно в приложении (потому что создавать активити — это одна из самых дорогих задач в андроиде)
Хуйня кстати, на фрагментах работать такое говно что страшно, постоянно делать проверки на онатач, постоянно хуярить эти чайлд фрагменты и тд.
В основном вижу как делают одно активити для основного функционала, т.е. с дроверлеяутом и тд. А всякие сайд переходы на других активити. С фрагментами везде можно дико обосраться. С архитектурой.
Может там одно и тоже активити с разными фрагментами?
В другом случае выкидывай своего китайца.
Две активити, есть свой сурс код. Lenovo P70, 4.4 киткат, китаец, но благородный и с усами. Алсо, есть инфа о том, где сохраняется инфа о состоянии приложения в момент убийства процесса, как ты пытаешься доказать?
Хотел тут описать простыню что ты долбоеб и не полез в документацию, вставить ссылки и тд.
Но поверил тебе на слово и полез гулить.
В результате наткнулся на интересную штуку, если я правильно понял то что нашел, то андроид не умеет убивать активити сам, он убивает весь процесс. И, следовательно, все активити в нем. Если же взять во внимание твои слова, то становится логичным что андроид не запоминает на каком активити остановилась прога. Но если посмотреть на моем телефоне как у меня очищается бекстек апликухи при пересоздании активити, т.е. только последнюю активити он и запоминает и показывает ее при входе в апликуху.
Короче говоря вопрос не такой легкий как казалось, буду копать глубже но уже завтра.
По идее, надо стремиться к уровню телеграма, ящитаю — там чуть ли не все вьюшки — кастомные, со своим onDraw и onMeasure + своя реализация фрагментов (и тоже "одно активити — несколько фрагментов", по сути)
Телеграм довольно простая реализация на самом деле. Не везде можно обойтись одним активити мне кажется.
>там чуть ли не все вьюшки — кастомные, со своим onDraw и onMeasure + своя реализация фрагментов
Пруф. Особенно про фрагменты.
Блять, я не понимаю, если оно действительно не запоминает активити на котором было при чистке процесса, то что сука происходит когда у меня иногда бекстек на старых апликухах чистится?
Я участвовал в их конкурсах и читал исходники официального клиента (плюс работы с самого первого конкурса), так что знаю что говорю.
Вот, например, экран настроек и его базовый класс:
https://github.com/DrKLO/Telegram/blob/496c336d5f80947ebce64087cc9740b3d28ee99d/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java
https://github.com/DrKLO/Telegram/blob/512e404db7b917aaf8084541843f641938f3b12c/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java
Приглядишься — увидишь, что и экшн бар тоже свой.
Внимательно глянь на папку /telegram/ui и увидишь ещё больше пруфов.
Та я верю, хотел посмотреть на реализации и тд. Но телеграм рабоатет ультра быстро конечно.
Но в чем профит юзать свои фрагменты?
Очень просто: больше контроля (пример: закрытие целого ЭКРАНА свайпом влево — я вот хз, можно ли это простыми фрагментами сделать, но представляю, как это сделать, если накладывать вьюшки одну за другой) + возможно, так приложение меньше весит
возможно, ещё какие-то причины, можно ещё лекцию Степана Коршакова про оптимизацию Telegram S погуглить — про вьюшки там тоже говорится.
Да, это исходник гуглоплейной версии и с неё же форкаются клиенты типа ZapZap, Plus Messenger и т.д.
Спасибо посмотрю, можно сделать кстати, но нужно вешать вьюху с листенером этого свапа, но они видимо засунули это в основу.
Он не работает в телеграме уже давно (пилит свой Slack с шифрованием и локально устанавливаемыми серверами), официальный клиент - от победителя первого конкурса Николая Кудашова.
Я понял, спасибо.
Вообще чувствуешь себя туповатым когда пытаешься вникнуть в такие тонкости.
Поддвачну. Фрагменты стоит юзать онли там, где без них не обойтись. Другое дело, что гугель зачем-то подталкивает разрабов к повсеместному юзингу фрагментов, вводя материалдесигн с его новнмодными навигейшн дроверами.
По сути, у него фрагмент - это некий фасад для удобного управления кучкой вьюх на экране и замещения лэйаутов.
Профиты очевидны: нет анальных привязок к циклу стандартного фрагмента, нет лишней ебли с бэкстеком и ретейном.
Вот интересно, сколько сейчас этот пан кошаков получает зп? Учитывая, что от впараши он на "старте карьеры" получил лям
Поясни, что не так в массиве битмэпов? Разве размер его не устанавливается при создании в соответствии с размерами пикчи в него конвертирующейся?
Битмапы это картинки по сути, перекодированные.
А теперь представь сколько занимает памяти такой массив с 10 картинками например. Если тебе покажется что мало, то вспомни сколько будет занимать массив с 10 объектами обычными.
>>600495
Я не думаю что у него там стабильная зп в такую суму прилетала. Алсо, была мелкая конкуренция, вот и результат, та и чувак видно старался как черт.
Думал брать оптимизацию работы и рендеринга в ведроиде, но нинаучно.
Вы хотите сказать, что картинка размером 60 на 60 это много для современных устройств?
У тебя помимо битмапов куча говна в оперативке висит на процессе, дают тебе кажется 60 метров, но тут хуй знает конечно.
Да я подумал и решил, что в правду это ДНО так делать как сделал я. В общем спасибо, перепиливаю.
Лол, что это за анальные ограничения у вас? Нахрена тогда во все эти лопаты пихают 4 ядра 4 гига? Чтобы ОС не лагала.
Не могли бы вы пояснить за отличия CardView от ListView, а конкретнее - за преимущества первого перед вторым
Факт того что можно пихать имагу в дефолтный cv за преимущество не считать ибо всегда в любом проекте приходилось кастомить и только имагой с одним textview дело не обходилось
Недели четыре - пять неустанной дрочки тестовых проектов. Найди где-нибудь нормальные тз и попытайся выполнить один в один первый попавшийся ( что бы там ни было ). Через 3-4 выполненных идеально проекта будешь знать достаточно.
Желательно конечно чтобы они были разноплановыми
если я правильно понял, то решение - поставить в манифесте позволение grow_heap large
(или что-то в этом роде )
вейвлет анализ и распознавание речи на основание базы, состоящей из большого количества спектров под каждый звук
если это три блядских полоски в тулбаре - то да. Мне iosники как-то раз скинули имаги блять, ни одна не сжата, каждая мегов по 10. Grow heap полетел блять... Так к чему я это, эти суки еще и три полоски сраные эти скинули чет порядка того что ты сказал, они блять как два тулбара размером были на планшете
Я думал у них там растровое всё, мде
Да хоть на кикстартере среди приложений, детальное тз можешь сам накатать, а идею спиздить.
Вариант второй - по описанию проекта на гите, по скринам в дриббле, да блять, дохуя ресурсов то. Тот же хабр ( находишь реализацию на другом языке и прикинув, что требуется ебашишь )
Собственно код:
public class MainActivity extends Activity {
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public class myFragment extends Fragment {
(ImageButton) getActivity().findViewById(R.id.imageButtonMove)).setAlpha(0.5f);
}
fix:
public class myFragment extends Fragment {
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
(ImageButton) getActivity().findViewById(R.id.imageButtonMove)).setAlpha(0.5f);
}}
http://gluonhq.com/open-source/javafxports/
Ты фрагмент-то инициализировал? В чём проблема, NPE на getActivity()? А ты уверен, что на него, а не, например, на findViewById?
%кстати, скобку при копипасте возле каста в ImageButton всё равно проебал%
Ну я просто не вижу строчки типа getFragmentManager().beginTransaction().add(...).commit() в копипасте
Хочу вкатиться в ондроед-разработку с нуля, кодить не умею. Какие языки учить?
Java, C
1) Захуярить все в адаптере, но тогда адаптер будет лезть в сервис, и вьюхолдер тоже должен будет лезть в сервис (нужно обновлять свой ползунок при воспроизведении)
2) Сделать адаптер онли для отображения элементов, а логику, связанную с плеером, вынести в onscroll.
Какой из велосипедов лучше, с точки зрения архитектуры?
Алсо, склоняюсь таки ко второму, но многие хуярят в адаптер кучу логики, связанной с обновлением
Я предпочитаю создавать отдельный класс-контроллер, и тебе советую.
Сервис шлет Broadcast. Через LocalBroadcastManager.
Ловим его в активити/фрагменте со списком.
Вызываем соответствующий метод адаптера для обновления ползунка.
> Щито? Это где такое? В 2016-то году?
Берешь любой телефон / планшет с 256мб оперативки и получаешь.
Я таких уже два юзал, нокиавский андроидофон и какой то ебанный эксплей планшет за 3к. На обоих 12 мб и больше не выдавало.
Дык это всё понятно. Суть в том, что
>Вызываем соответствующий метод адаптера для обновления ползунка.
Ползунок фактически, есть у каждой вьюхи, а обновлять его можно хэндлером, таймером и пр. Соответственно, там тоже будет велосипед со скроллами, ибо нужно будет отслеживать момент, когда вьюха уходит с экрана, и отключать хэндлер. По идее, выход - держать хэндлер во вьюхолдере, и отключать/включать его при прорисовке. Но тогда и адаптер, и холдер будут иметь ссылки на сервис, который может быть внезапно уничтожен системой, и пересоздан
> Берешь любой телефон / планшет с 256мб оперативки и получаешь.
В 2016 году? Ты как, с нашей планеты?
> На обоих 12 мб и больше не выдавало.
И сейчас они ни одно приложение просто не потянут в таком случае. Сомневаюсь даже, что на них есть что-то старше 2.3.7.
Это просто не серьёзно.
Что? 2016 опрделённо много.
Понятия не имею как это в ошибках посмотреть, но поставив условие для проверки, понял, что возвращает ЧТО-ТО, но не null;
> Понятия не имею как это в ошибках посмотреть
В описании исключения пишется, что невозможно вызвать метод или считать/записать поле у null-объекта (название метода/поля прилагается), чего тут не уметь?
В общем что-то, но не нулл
Я свои приложения тестирую на сониэрикссонах 2011 года и стараюсь додрочить до такого состояния, чтобы как минимум скроллинг не тормозил, а ещё лучше — различные анимации.
Там, конечно, не 256 мегабайт, но 512 в 2016 году — это тоже пиздец в плане юзабилити.
Обратиться к ним по айди?
Нужно каждый проверять, можно ли как-то обращаться к ним по id не через имя, а например checkbox+1, как бы обращаясь к следующему по порядку? Где-нибудь int'овское значение ID можно самому установить или хотя бы посмотреть?
> джва десятка
Ресуклервью делай. Там будешь модель через вьюхолдер обновлять в чек листенере.
В чем твоя проблема была загуглить android find resource id by name?
Попробуй getResourseId("checkBox1", "id", getPackageName());
Не привязывайся к реальным значениям. Сделай массив из айдишников.
int[] checkboxes = {R.id.checkboxOne, R.id.checkboxTwo, ...}
Отбой.
У тебя чекбоксы по порядку внутри viewGroup идут, так? Так и обращайся к ним через v.getChildAt(), это быстрее, чем findViewById и никаких идентификаторов не надо.
Я же их не программно создавал, как мне знать идут ли они при построении по порядку?
> идут ли они при построении по порядку?
Это так. Их порядковые номера задаются построением. Иначе бы ты левую хуиту видел на экране.
У меня кроме них ещё ведь и другие элементы, между ними в xml по порядку image, например.
Алсо, в Bundle я кидал массив примитивов и удивился, что через него ссылка передалась на этот массив, я-то думал в нём(в Bundle) новый экземпляр создаётся. А что тогда с обычными НЕ массивами примитивов, они по значению передаются или тоже по ссылке? Мне важно знать, чтобы ошибок сейчас не наделать.
Бамп вопросу, какой фреймворк для анимации в андроид сдк сейчас самый мощный и может сделать закос под типаматериал (чтоб вьюхи с акселлерацией из-за угла экрана выезжали, чтоб кнопки по нажатию прогинались и т.д)?
Не знаю, где там Абу спам увидел, смотри пикрилейтед.
Также тебе, скорее всего, не будет лишним изучить ObjectAnimator, который изменяет конкретный параметр (например, прозрачность)
Спасибо. Я понял, что я нихуя не понял. Но ты мне дал направление, куда копать, туда я и полезу.
поехавшая хуйня, разбирался по гайдам фэйсбука
Мне нужно увидеть процесс установки на 5-м Андройде и на 6-м, но в распоряжении только смартфон на 5-м.
Можно как-нить запустить на пекарне эмулятор какой-нибудь с 6-м ведройдом?
Искал в гугле, но толком ничего не нагуглил (только туллза 2010-го года с эмуляцией андройда 2.3)
Встроен, но докачать надо.
Tools->SDK Manager, вроде так, для эмулятора на платформе x86 ещё ставишь HAXM Accelerator.
У него начиная с М есть setPlaybackParams: http://developer.android.com/intl/es/reference/android/media/MediaPlayer.html#setPlaybackParams(android.media.PlaybackParams)
У PlaybackParams есть setSpeed. Так вот, какой диапазон значений для него валиден? Экспериментально - [0, 8) вроде. Но это какая-то хуита, 8 у всех нормальных плееров есть, а 0 - это блять 0. По сути делает паузу, но не ту пауза которая пауза, а просто не играет. Если комбинировать нормальную паузу и скорость 0 видео со звуком начинают рассинхронизироваться.
http://spb.hh.ru/resume/422c2c880002c0e2e20039ed1f42614d31326d?query=Android
http://spb.hh.ru/resume/9984246500025c6fd00039ed1f4b7664353779?query=Android
(тут ещё и айосник
http://spb.hh.ru/resume/0570d52700029c81960039ed1f436d4e49384e?query=Android
Или это скорее исключение, и ведроидеров с опытом, как и тырпрайзеров, обычно ищут сами?
Он поставилмаленькую ЗП, чтобы его нашло бОльшеечисло людей.
В ДС андроид от 60 т.р., меньше не предлагай даже.
Да хуйня, я с 9 месяцами уже зарабатываю как тот чувак с 2мя годами.
Чтобы ты привыкал к использованию фрагментов. Потому как в серьёзных проектах без них ну никак! Да и в чем тога смысл иметь многозадачную ось и вообще в многопотоковом программировании?
Захуячь бля их в linear layout. Потом пройдись по всем child'ам.
Зарегайся, оплати курсы.
Непосредственно под андроид он почти не писал. Тимлидерствовал. А сейчас вот решил перекатиться в разработку.
Так, но советую пользоваться для загрузки сторонними библиотеками, как указал >>604860-анон. У меня был такой случай, когда асинктаск не мог загрузить картинку по url стандартным потоковым способом (это была пнгшка, а там, как я понял, нужно сначала метаданные картинки получить, а затем уже загружать и надо пердолиться). Пикассо тоже не помог, а вот UniversalImageLoader отлично справился. Запускай загрузку с помощью либы в onPostExecute или после парсинга json'а и будет тебе счастье.
Там действительно не всё так просто. Хочешь разобраться сам — читай вот эту статью и правь под свои нужды:
http://developer.android.com/intl/ru/training/displaying-bitmaps/cache-bitmap.html
Или юзай готовые библиотеки, ссылки тебе выше дали.
Ещё такой хинт: в RecyclerView загружать лучше не из onBindViewHolder, а из onItemAttachedToWindow — так пикчи не будут задваиваться.
Нагуглил что это ViewGroup, но он не прожевывается в моём recyclerview : android.view.InflateException: Binary XML file line #18: Error inflating class android.view.ViewGroup .
Потому что это абстрактный класс. Он не умеет располагать потомков.
Аноны, эмулятор SDK входит в вечный бут при запуске, пробовал Андроид 6 и 5 - все равно. Просто анимированная надпись Android и все, как запустить? Помогите.
Столько бед за одну неделю?
Нет, просто установил android studio, и пробовал потом разные версии в SDK мену. Ставил по инструкции с сайта с котами, путь прописывал в Patch.
FrameLayout.
блять, да качал с того сайта, завтра попробую другой скачать, почему пиздобол то?
Если бесконечная загрузка, значит неудачно перепрошился.
Теперь тебе даже новую от гугла не дадут скачать
Попробую сегодня разные версии.
>перепрошился.
А при чём тут прошивка какая-то вообще? Речь же об эмуляторе на компьютере идёт, если я правильно его понял.
>>605207
У меня тоже такая проблема была на маке. Решилось, как и всё от гугла, как-то само либо ожиданием, либо перезапуском, либо переустановкой (целиком студии или эмулятора, не помню уже).
Нет, если ты не получаешь от бэкенда удовольствия.
Если бы ты и его мог написать, и приложение, то, скорее всего, работал бы над своим проектом.
Тем более тебе явно не платят и за работу бэк-энд разработчика, и за приложения "под ключ", это овердохуя.
Так и светится лого, решение пока не нашел, компьютер средний - ай пять, 4 гига озу.
>4 гига озу
>хз, мой ноут с 6гб забивается под завязку, когда шиндовс 7 + студия + файрфокс + эмулятор. Эмулятор студии около 1.5 Гб оперативы сжирает. Ящитаю, что он просто не может у тебя памяти выделить под себя.
Сорри, с гринтекстом перебрал.
На СтакОверфло гуглил?
И че сама студия пишет в консоли?
Двачую версию про нехватку ОЗУ, пробовал запускать Студию на ноуте с 3гб, вырубив при этом все, что можно, но все равно не запустилась.
Алсо, если тебе прям край, то можешь попробовать поставить Линух на флешку или другой жесткий диск и работать из под него. Там все шустрее будет
>Any permission can belong to a permission group, including normal permissions and permissions defined by your app. However, a permission's group only affects the user experience if the perimission is dangerous. You can ignore the permission group for normal permissions.
Не могли бы мне помочь вникнуть. Как я понял, все опасные разрешения делят на группы, а на остальные (нормальные и те, что от приложений) как бы по хуям, но все равно делят(?).
По личным наблюдениям скажу: более-менее комфортно работать со связкой студия/эмуль можно на минимум 8 гигах
>defined by your app
http://developer.android.com/intl/ru/guide/topics/manifest/permission-element.html
Вот это ещё дочитай и поймёшь.
Честно говоря, не очень понял все равно.
Меня больше вот эти строки интересуют:
>However, a permission's group only affects the user experience if the perimission is dangerous.
В той статье, что ты кинул тоже до конца не могу разобраться:
>A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval.
Это как вообще?
Я уже и гугл облазил весь, но с моими знаниями инглиша, я в эти строки никак въехать не могу.
Я не хочу особо капать на мозги анонам, но если не сложно, не объясните, пожалуйста?
Еслия я совсем джаву не знаю? Что стоит почитать, что поделать? Единственный маленький опыт- фак php.
бампецкий
Да, есть - на квалкоммах это, например, Adreno (переставишь буквы - и поймешь, у кого купили). Да, здесь OpenGL ES, обращаться к которому можно как из явы, так и из сишного кода (NDK).
Правильно понял. У всех пермишенов может быть группа, но только для dangerous она имеет значение. Ибо если однажды в процессе работы приложения, dangerous пермишен запрашивает у юзера разрешение - оно будет запрашиваться для всей его группы, и подтверждаться тоже.
И если в будущем, приложению понадобится другой пермишен из той-же группы - оно уже не будет запрашивать разрешения, т.к. к группе доступ есть.
Всё это актуально для версий 6+. Для остальных, пермишены запрашиваются при инсталляции, и если у пермишена есть группа - запрашивается вся группа.
>A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval.
Ну типа, если приложение, запросившее пермишен подписано тем-же сертификатом, что и то, которое его объявило (т.е., пермишен прописан в его манифесте) - доступ даётся без всяких запросов юзеру.
Ставишь листенера на иземенение текста в edittext, правишь соответствующим образом текствью. Что ты как маленький?
Пиздец. У меня с тем-же набором забивается под завязку, но у меня 3 гига.
так как чаще всего бд на сервере, то храни url имаг и грузи в кэш по надобности
Спасибо.
Ссылка: https://play.google.com/store/apps/details?id=com.destiner.pocket_reminder
Кстати, приложение в сторе висит уже два дня, но не ищется ни по названию, ни по ключевым словам. Кто-нибудь знает, в чём может быть дело?
Какие то иконки больно крупные на скринах. Ты же увеличивал стандартные 24dp иконки? Шрифт больно жирный какой то, сделай лучше точь в точь как в гуглокалендаре.
>Предпочтение универсальному кандидату, пишущему и под Android, и под iOS (Ojective C)
Анчоусы, о чём это они? Плюсы видел, но чисто на Си, как Моцорд хуярить. Не понимать.
Objective C - это вообще другой язык.
А если нельзя жаву?
А у меня всего одна симка, поэтому я либо зарегаюсь с нормальным ником, либо с ником уровня зк.
полтора года? Ты до этого вообще не сталкивался с программированием и решил сразу делать приложения или че?
Регайся с ником уровня зк, ирл-люди все равн будут видеть тебя так, как ты записан у них в книге контактов. Славик Сычев (Лох)
а что ты там демонстрировал то ? Умение расставлять view-элементы ? Аццкий вызов кастомного диалогового окна ?
Как бэ, тут работы на часа три ( ну, 4-5 если разметку под разные девайсы ваять нужно )
Как определить ID рандомного приложения в гугл плей?
> Умение расставлять view-элементы ? Аццкий вызов кастомного диалогового окна ?
Можно подумать в мобайл разработке есть что-то другое.
Ебля с различными api, обработка различных свопов, красивые слайд-скрины, катомные элементы навигации, продолжать ?
Ну если у тебя получаеться самого себя убедить то продолжай конечно, почему нет?
Как искать работу андроид девелопером без опыта, если я живу не в ДСах, а в моей мухосрани даже слов таких не знают?
> Как бэ, тут работы на часа три
Удивительная переоценка своих возможностей. Чего не полчаса сразу?
начинаю скачивать Android Studio, он останавливается на 0,9/1,1, а потом просто пишет "Неизвестная сетевая ошибка".
Что делать?
Попробуй вкатиться в iOS-разработку. Возможно, что Android - просто не твоё.
inb4: шутка про мамку
А в просто джаве нет перенасыщения? Может ты сейчас просто пытаешься нас наебать, а сам конкурируешь с нами? Пруфы есть?
Поддвачну этого. Сейчас ценится опыт сетевого взаимодействия, да ещё и с апихой какого-нибудь известного сервиса.
Ну а так, скорее-всего, у него там есть БД, какой-нибудь сервис висит.
>>609382
Вот вполне реально, кстати. Даже я, имевший небольшой опыт с тырпрайзной джавой (пару месяцев), очень долго тупил, как же сделать её с минимумом велосипедов, ШОБ КРАСИВО. Архитектуру надо придумывать до мелочей, учитывая множество подводных камней - этого нету Другую апликуху запилил за ночь очень давно - но тогда получается архипиздец в плане организации кода.
Везде есть перенасыщение. Суть в том, что в мобайле в 100% вакансий требуется опыт, но "опыт" в мобайле - это ссылки на маркеты/аккаунт апворка.
лол, а сколько времени по-твоему это займет ? неделю ? Или месяц, как у бога кодинга-ТСа ?
Дизайн - работа дизайнера, с точностью до 1dp. У кодера есть дела поважнее
В play маркете набейте "чугунное яйцо"
Немного халтурно, но время жало
Уже переходы на личности делаешь? Ладно: если ты пишешь такое за 3 часа, то ты пиздабол каких поискать, иных вариантов не существует.
Я не смотрел приложение, сейчас глянул — там используются некоторые возможности, всё проще, чем я представлял. Неделя тут и правда много, но 3 часа — невозможно, это цифра с потолка и пустой выебон.
А ты предоставил что-то, что отменяет твой слив?
Я посмотрел твою приложуху, её за 5 дней реально сделать, но речь не о твоей проге, а о проге того анона. Более того, я не вижу в твоей проге чего-то такого, из-за чего её создание займёт в 10 раз больше времени по твоим представлениям.
А почему там что-то должно быть сложное? Что сложного в твоей проге, например?
Это дело техники, я не учитываю время на изучение. Ты садишься и проектируешь, пишешь, делаешь разметку, тестируешь, отлаживаешь. И за 3 часа ты это не сделаешь.
как минимум неплохая для подобной аппликухи производительность и огромное количество разметки. Большое количество кастомных элементов. Поддержка различных экранов, фильтр свопов вправо и влево
разметку сфарганить это и есть сложное, если она не по гугловскому материалу. Если же по нему, то все делается за несколько часов и минут 15 на тест на паре устройств
И это не потребует в 10 раз больше времени, няша. По крайней мере, в данном конкретном случе, т.к. в том приложении, помимо также не-дефолтного интерфейса, есть ещё некая логика работы и использование множества компонентов.
>>610198
> разметку сфарганить это и есть сложное, если она не по гугловскому материалу.
Нет, не сложное. Я бы ещё поспорил о целесообразности такого метода т.к. это пиздец вованство, но даже если по материалу делать, приходится делать что-то кастомное и ебаться из-за разной хуйни.
> Если же по нему, то все делается за несколько часов и минут 15 на тест на паре устройств
Зависит от приложения, конечно, но то приложение нельзя оценить в 3 часа, это выебон и пердёж в лужу.
Я не он, но ты еблан, сори уж. Это первое приложение человека.
Ему для начала нужно почитать, что такое материал десигн, прежде чем его лепить. Тоже самое касается всего остального.
Опыт у всех разный, и если ты клепанул десяток приложений и сходу представляешь, как такое реализовать до мелочей - все зависит от скорости набора кода.
Из активити в дочерний фрагмент через вызов метода
Из фрагмента в родительскую активити через коллбэк
>разметку сфарганить это и есть сложное, если она не по гугловскому материалу.
Я ньюфаг, обьясните, чем гугловский материал выгодно отличается в сторону простоты от старых версий? Ну, там кардвью вместо фреймлэйаутов, ресайклер вместо лист, фаб, тулбар, пэпербатн вместо обычной, эвалуэйшн, но в чём конкретно упрощение? Или вы имеете в виду, что раньше вы тени пердолили вручную?
смотри выделенное жирным например
http://stackoverflow.com/questions/28525112/android-recyclerview-vs-listview-with-viewholder
А как в ресайклервью реализовать контекстное меню без особого пердолинга, например? У меня получилось только с передачей коллбэка для фрагмента, но там MenuItem всё равно нулевой и нужно сделать было дополнительную еблю с определением, какой именно элемент нажимается.
Да onClick реализовывать в самом холдере приходится, что есть говно. У меня по клику навигэйшн дравер закрывается, если ListView использовать, то там уже в ListFragment есть onItemLickListener, можно работать с дравером прямо из фрагмента. А в ресайклере нужно снова или коллбэки, или делать адаптер нестатическим классом. Плохо зделали, тупо, листвью в плане удобства программирования пока что гораздо лучше.
есть же эмулятор с SDK идет, тормозит, но работает. А вообще нужен девайс. Рекомендую Galaxy S3 из старых, недорогих, но до сих пор актуальных.
Про стулья опыт есть, хоть и не большой. А табуретки 1 раз вижу.
Стоит ли выкатываться со стульев? Или сесть уж на один из них?
Мы не знаем.
Решил взять курс на startandroid.сру
Тут-то мне знатно пригорело. В старом-старом C++ Builder 6 хочешь вкладки - просто поставь элемент на форме и всё заебись. Хочешь сделать список? Вот тебе список, заполняй, как хочешь. Хочешь таблицу? Нет проблем, у каждой клетки есть свой идентификатор, занести данные занимает пару строк.
В андроид студио нужно ебаться по 5 часов, чтобы хотя бы заставить какой-нибудь виджет работать. Перелопатить дохуищу примеров, ебаться с какими-то адаптерами, причем во всех примерах в гугле гайд по вставке изображений. Нахуй мне изображения, дайте БД.
Очень, очень больно работать в этой среде. Простоты какой-то не хватает, что ли, или я дебил.
Как будто на этом работать не будет.
Есть билдер под андроид. Хз как он.
Без явы не куда. Хотябы основы и ООП нужно знать.
>startandroid.сру
Уроки там очень хорошие. Прочитай первые 40-50 уроков, потом пили свой эпп вместе с гуглом.
Сильно ли я буду страдать или для таких несложных штук глубокого знания языка не требуется?
Сейчас открыл приложения Сбера, Деливери клаб, никаких выебонов нету, стандартные инпуты, менюхи, у всяких Яндексов вообще белое на белом, хули вы мне пиздите что его нельзя использовать?
> хули вы мне пиздите что его нельзя использовать?
Кто это говорит? Такое говорят только дизайнеры с БРЕНДБУКАМИ.
Вот этот хер что-то говорит:
>>610204
>> разметку сфарганить это и есть сложное, если она не по гугловскому материалу.
>Нет, не сложное. Я бы ещё поспорил о целесообразности такого метода т.к. это пиздец вованство, но даже если по материалу делать, приходится делать что-то кастомное и ебаться из-за разной хуйни.
О каком он вованстве?
> Вот этот хер что-то говорит:
Я наоборот сказал, что использование полностью кастомных элементов дизайна — вованство. Система даёт материал — надо использовать материал.
мой только верхний пост
Есть ли возможность держать включенным led индикатор во время включенного экрана?
Используй тот дизайн, который подходит к твоему приложению.
Не используй материал, если хочешь, чтлбы твоё приложение выделилось среди остальных.
В закомменченом испробованы различные варианты, уже и ссылку использую базовую, а всё равно FileNotFoundException при попытке чтения входного стрима и ResponseCode=400. При этом через браузер компа всё нормально: отдаётся XML. Что ещё можно придумать?
Т.е. чтобы поведение у него было как у ViewPager, но без скролла, у меня в одной фрагменте карта и скролл будет только мешать.
Поставь User Agent от любого современного браузера.
Во вьпейджере фрагменты тоже унижтожаются до OnDestoyView включительно. И там, где будет карта, если нажимать на неё, скролла страницы самой не будет, только скролл карты.
пфф, не используй материал, если у тебя есть хороший дезигнер. Только когда он есть
Ясное дело, что уничтожится.
Или я может быть неправильно использую? Т.е не по назначению.
Сразу пропадает что-то
ДА КАК ПРОЧИТАТЬ ЭТО СООБЩЕНИЕ?! ОНО ТУТ ЖЕ ПРОПАДАЕТ СТОИТ МНЕ ПЕРЕМЕСТИТЬ МЫШКУ ССССУКА КАК БЕСИТ!
И даже если устаревший, но работать то он должен?
сорян, в этот раз прогуглилась проблема)
как мне жидеевский проект добавить депенденси? (там нет градловского файла)
menu.add( "Menu1" );
menu.add( "Menu2" );
return true;
}
Создаю меню, а оно почему-то имеет прозрачный бэкграунд. ЧЯДН? Тоже самое если и через хмл, а не программно создавать меню
минимально прожиточную, чтобы завидовать альфачам с потока менеджмента и экономики
Ну же, анон! Я уверен ты с этим сталкивался.
И что это за меню тогда вызывается в версиях 2.3 андроида если попап? Все приемы применительные к последнему никак не действуют на мою меню, я даже цвет текста установить не могу через стили(программно можно).
Это просто пиздец какой-то! Ни с чем ещё так не приходилось ебаться!
Change the theme to android:Theme.NoTitleBar. It looks similar enough to Theme.AppCompat.Light.DarkActionBar
А можно ли как-то посмотреть что прописано в этих темах? Так чтобы я сравнив содержимое ВОЗМОЖНО нашёл бы тот параметр который отвечает за задник элементов меню.
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name ="android:panelBackground">@color/back</item>
</style>
<color name = "back">#a1a1a1</color>
</resources>
Решения я так понял больше нет.
Не могу нагуглить, либо деприкейтед, либо ещё какая шляпа со стороннними либами.
Кто такое говорит? Или не стандартный это материал с примесями?
Все у материала норм, правда не всегда дизайн делают люди которые выкупают как ведроид работает. В результате куча говнокода жопа в архитектуре.
А вообще пиздовать по гайдбукам и не выебываться это лучшее решение. Не все из коробки доступно, но найти на стековерфлоу решение ты точно сможешь.
Нужно загружать список музыки.
Как наиболее красиво сделать загрузку данных из ВК?
При помощи VK API я получаю ответ в JSON формате, мне нужно преобразовать это в объекты.
Ок. Беру Gson и получаю объекты.
Но весь этот код с коллбеками и т.п. очень хочется вынести куда-нибудь за пределы фрагмента, тем более в нескольких фрагментах запрашиваются одни и те же данные.
Создать свой класс типа: VkProvider и реализовать в нем методы getMusic(String userid, Callback callback)?
Тогда получится коллбек в коллбеке.
Или это нормальный подход?
По хорошему - через контент провайдер, гугли презентации с I/O про архитектуру приложения. Но я на него забил и обмазываюсь realm'ом уже полгода.
Зачем контент провайдер, все эти странные ссылки, когда мне только анутри приложения эти данные нужны?
Вот видео которое я не смотрел, но все умные дяди тычут им в нос
https://www.youtube.com/watch?v=xHXn3Kg2IQE
Он может генерить всякие события, типа: переключили следующую песню, обновилось время и т.д.
Это сделано при помощи LocalBroadcast сообщений.
Но, мне же еще надо как-то управлять этим сервисом, всего около 20 методов с разными аргументами.
Использовать binding, везде где нужен сервис, получать на него ссыль и вперед?
Мне например надо восстановить searchView который в ActionBar. Можно сохранить в onSaveInstance(), можно просто завести переменную в которую сохранить текст из SearchView.
Не смешивай. Начал бродкасты, делай бродкастами.
Использую Android Studio 2.0 preview 3 rb на HDD, i5 4690, 8 gb ram. Работает как надо, Gradle как всегда неспешный.
Мне нужно сохранить информацию о страницах в примерно таком формате:
[
{
id : "main",
text : "Главная",
icon : "home.png"
},
{
id : "favorits",
text : "Избранное",
icon : "star.png"
},
{
id : "settings",
text : "Настройки",
icon : "coug.png"
}
]
Не хочется что-то подключать ради пары объектов.
>>616961
Не понял, ты в коде задаёшь все переменные? Я хочу хранить вью данные отдельно от кода.
А вообще, насколько хреново будет хранить приятную внешне JSON строку в ресурсах?
Типа
<string name="pagesJSON">
[
{
id : "main",
text : "Главная",
icon : "home.png"
},
...
]
</string>
А потом парсить её?
Лучше хранить конкретно json-файл в assets. Алсо, я бы тупо сделал три независимых string-array, наверное. Но у тебя, вроде, покрасивее решение. Вообще, если это сорт оф меню, то можно сделать в меню файле.
http://pastie.org/10665316
Нормальное это решение?
Вопрос в том, зачем она тебе, какого она размера и что ты с ней делать будешь?
> Применяться будет для отображения меню, полей списка и т.д.
Ну и в чем проблема задавать это в тех кусках кода, где это используется? Велосипеды вещь интересная, но нахуя?
Как я уже писал выше, drawer я задаю программно через recyclerview + статический лист объектов id - id текста - id картинки.
У меня навигация в drawer сделана более оптимально:
В разметке MinActivity внутри DrawerLayout находится фрагмент - собственно содержимое дровера.
Разметка дровера: linear layout внутри scroll view.
А если нужно динамически формировать меню, то ты можешь подключить к этой linear layout обыкновенный адаптер, который наследуется от BaseAdapter. Чуть чуть подумав.
В MainActivity реализован интерфейс Navigation и коллбек, в котором входной параметр: id пункта меню. Id пунктов меню заданы в R.id.
И таким образом переключаются фрагменты.
Заебись сделано?
другой анон
Да, наверное, проблемы нету, просто я не привык генерить вид напрямую кодом, включая данные в код, всё хотел их вообще все вытащить в ресурсы, чтобы все эти списки были там.
Лучше бы кинул тогда дизайн либрари тогда, довольно классно выглядит. Только вот однотипное меню все реже и реже встречается. Да и уебанство дизайнеров и заказчиков никто не отменял, которые хотят как на айфоне и срать хотели на материал.
>>617190
> В разметке MinActivity внутри DrawerLayout находится фрагмент - собственно содержимое дровера.
Стандарт же.
> Чуть чуть подумав.
В onCreateView проходишь циклом по адаптеру и инфлайтишь в линеар лейаут. Не могу сказать, чем это лучше способа через ресуклер/листвью, который делает это автоматом. Адаптер ты пишешь в любом случае уже.
> В MainActivity реализован интерфейс Navigation и коллбек, в котором входной параметр: id пункта меню. Id пунктов меню заданы в R.id.
Тоже стандартно же.
android device monitor
Сохраняю с помощью getSharedPreferences некоторые данные, а внутри него они почему-то не по порядку записываются. ЧЯДН?!
Но ведь я последовательно заполняю и коммит вызываю. Странно как-то. Ну да ладно.
В эдиторе хэшмап используется для хранения, с ним порядок теряется.
Если у тебя сервис, проигрывающий музыку - лучше сначала запускать его старт сервисом, потом биндиться.
И то, и другое можно делать практически в любой момент. Если вызывать сервис онли биндом - он помрет, когда уничтожатся все привязаннные к нему контексты.
Ресивер создавай и регай где-нибудь в активити - тогда при её дестрое, у тебя одновременно отвалится приём событий.
onSaveInstance у тебя вообще не вызовется, т.к. фрагмент не пересоздается. Так что единственный вариант - через переменную.
Гугли mvp, например. Слой по работе с апишкой лучше выноси отдельно, со всеми его коллбэками. Полностью избавиться от коллбэчного ада не получится - ибо на каждый запрос всеравно чаще всего нужен свой листенер.
Если у тебя дохуя преобразований - юзай rxjava
У меня в основном наполнение списков.
Сделал так: класс PublicsAPI, методы: reload(), loadMore(), cancellAll().
При помощи Handler.Callback получаю 3 вида сообщений: LOAD COMPLETE, LOAD MORE, ERROR.
Если не ошибаюсь, то он вызывается. Сегодня проверю.
Мне надо понять в чем разница и какой подход лучше.
При setRetainInstance состояние сохраняется само, если есть айдишники у элементов, вроде. Если не сохраняется, то проверь, не обнуляются ли у тебя поля где-нибудь в onCreateView/onActivityCreated
Ага! Правильно я понимаю, что если использую коллбеки, чтобы передавать информацию от сервиса в активити, то в еденицу времени сервис должен быть забинден только в одной активити или фрагменте, где используется этот фрагмент?
*этот коллбек
Я думаю биндить можно из нескольких мест же одновременно. А вот чтобы колбэк вызывался в разные места, нужно делать лист колбэков.
проиграл сам с себя, на обжективе, ок. Собственно, поэтому и не хочу писать с нуля.
Можно сделать хорошо, только переписав его с нуля на objective-C.
https://code.google.com/p/java2objc/
Гугл для тебя старались, по заверениям из описания и классы конвертирует.
Использовать пул объектов?
А нахуй тебе вообще юзать коллбэки для взаимодействия с активити? Этож геморрой, постоянно надо проверять активити на null, и состояние жизненного цикла.
Лучше юзай
сервис -> активити - броадкасты
активити -> сервис - биндинг, и ссылка на сервис
Ага. Логично.
Насколько я потеряю в производительности, если будут отправлять от сервиса к активити через LocalBroadcast serializable объекты?
утречка, Андроид-анон!
Понимаю, вопрос несколько поднадоевший, но сейчас тороплюсь, нет времени скроллить тред: что посоветуете почитать для изучения легитимного набора? Английский ли язык, русский - неважно
Джаву учил когда-то, но забросил, общие принципы ООП знаю.
Конфа общая как для обычной джава, так и для ЕЕ
https://telegram.me/joinchat/Bbfo5gUiYnQn8tWtl0OlrA
Android-господам тоже будут все рады
> для обычной джава
> для ЕЕ
А андроид то каким боком? Читать про ваши AbstarctSingletonProxyFactoryBean'ы не очень интересно.
C помощью onRetainNonConfigurationInstance не получается совершенно:
//1 .Сохраняю созданный ранее объект
public Object onRetainNonConfigurationInstance() {
return frag;
}
// 2. При восстановлении получаю ссылку на него
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.main_activity );
frag = ( WorkshopFragment ) getLastNonConfigurationInstance();
if( frag == null )
frag = ( WorkshopFragment ) getFragmentManager().findFragmentById( R.id.workshop_main );
}
Всё правильно?
Поболтать, что-то спросить, посоветоваться, там поменьше всякого потешного сброда которое только унизить то и хочет кого нибудь.
Вы тут-то никому не помогаете, а ещё конфу им подавай.
Ну йопта! Тут кто-нибудь вообще бывает? Или не стоит ждать помощи?
setRetainInstance(true) в onCreate фрагмента. Всё, больше ничего не надо. Фрагмент не будет пересоздаваться при повороте, будут вызываться только onCreateView - onActivityCreated - onAttach. Переменные внутри фрагмента сохраняют значение.
После этого поправь свой код в активити, оставь только
frag = ( WorkshopFragment ) getFragmentManager().findFragmentById( R.id.workshop_main );
А что такое onRetainNonConfigurationInstance(), я вообще не знаю, никогда не видел, чтоб использовалась, и судя по тому, что деприкейтед, никогда и не увижу.
Увы, но всё не так просто. Наткнулся на страничку где человек нечто подобное расписывал. Говорит, что фрагмент-то не пересоздаётся, а вот его представление создаётся. А Я УЖЕ НЕ ПОНИМАЮ ЧТО У МЕНЯ В ОНКРИЕНТВЬЮ ПРОИСХОДИТ, что забил(не стал разбираться в чем проблема) и просто забабахал через тот же onRetainNonConfigurationInstance.
Забудьте, нет вопроса.
Быдлокод as it is. Меня в стажёрстве за такое по рукам бамбуковой палкой хуярили. Переделай по-нормальному лучше, если это, конечно, не твой последний проект на андроид.
Почему же быдлокод?
onRetainNonConfigurationInstance
Сохраняет указанные объект, после восстановления активити я его спокойно могу использовать.
Или устаревшие методы определяют?
Если метод deprecated, то его не следует использовать. Единственное исключение, если замещающий метод не поддерживается на текущей версии (например, camera2 api с 21, по-моему, версии, а сейчас обычно разрабатывают приложения для 11+ или в крайнем случае для 14+), в таком случае можно оставить, хотя лично я тогда делаю две реализации (camera api для 11-21 версии, а если версия 21+, то camera2 api, выбор простой проверкой, через if (Build.VERSION)).
Ничего не могу пока поделать, почему-то не рисуются после поворота созданные объекты в нём(во фрагменте).
Так что пусть пока побудет быдлокод у меня, в дальнейшем буду иметь ввиду.
Первый проект.
Вот нашёл
http://4ybakut2004.blogspot.ru/2015/01/android-save-fragment-after-screen.html
Он пишет:
>Теперь фрагмент не пересоздается после поворота экрана, однако его представление все равно создается заново, так как вызывается метод onCreateView.
И предлагает:
>((ViewGroup) view.getParent()).removeView(view);
Но, блин, это ошибку как раз и вызывает(что-то не может из xml-разметки прочитать).
Тебе стек вызовов выдаётся, ищи по нему, где у тебя это произошло.
1. Принимала идентификатор формы (родительского лейаута для эдиттекстов) и искала внутри все эдиттексты.
2. Собирала из эдиттекстов значения и отсылала на сервер.
3. Принимала ответ от сервера и запускала некий коллбэк.
Как подобное можно реализовать? Особенно интересует п.1, т.к. сейчас есть подозрение, что придётся перечислять все поля вручную, а их порой очень много.
Спасибо.
Спасибо!
Не припомню таких проблем. Кажется, ты ньюфаг.
1. Мысли верные. Как перебрать все дочерние элементы, я думаю ты разберешься. Обязательно проверь тип, чтобы это был именно EditText.
2. Для каждого EditText можешь задать в XML тег:
android:tag="@string/item_tag", далее когда будешь строить POST или GET запрос, используй эти теги в качестве названий параметров в запросе.
3. Одна из многих библиотек для асинхронных запросов, простая в использовании: http://loopj.com/android-async-http/
Если ответ от сервера в формате JSON, то можешь при помощи одной строчки кода преобразовать его в объект при помощи Gson https://github.com/google/gson
В onCreate вызываю setRetainInstance(true) и создаю адаптер.
Мне нужно 1 раз загрузить данные из сети и занести в список.
Т.е. мне не нужно, чтобы при возврате из backstack данные снова загружались из сети.
Но как это сделать?
setRetainInstance(true) - чтобы не перезагружать здоровенный список при повороте экрана.
Вообщем, котаны, завел static переменную, которую инициализирую в onCreate.
Интересно было бы поучаствовать исключительно для прокачки навыков.
Как поймать момент, когда View полностью загружен? Приложение валится с nullPointer иногда, когда после загрузки с камеры основная Activity помирает и затем пересоздаётся, и я пытаюсь реинициализировать какую-нибдуь кнопку/ползунок или ещё какой-нибудь элмент интерфейса и обратиться к его полям/методам.
ПЕРЕКОТ: http://2ch.hk/pr/res/619370.html (М)
ПЕРЕКОТ: http://2ch.hk/pr/res/619370.html (М)
ПЕРЕКОТ: http://2ch.hk/pr/res/619370.html (М)
Фрагменты не задействовал, думаю переписать основную активити чтобы весь интерфейс таки да был во фрагменте, поскольку у фрагментов есть событе, когда View загружен полностью.
Жизненный цикл активити более-менее понимаю. Но проблема не в том что я из Bundle состояние activity не восстанавливаю. После выгрузки activity из памяти и возврату к этой activity заново вызывается onCreate, вызывается onCreate, в нём зовётся setContentView заново, после чего начинаю реинициализировать View например баннера рекламного :
AdView mAdView = (AdView) findViewById(R.id.adViewMain); // setContentView ещё не закончил работу, и из-за этого mAdView нулевой
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest); // вот тут будет NullPointer из-за того что mAdView не была нормально инициализирована
Хотел посмотреть в Wireshark-e как проходит аутентификация одного андроид приложения (интересуют реквесты к закрытому API и ключи, которые оно отправляет).
Девайсов на андроиде нет, поставил Bluestacks, Wireshark видит его трафик, но пользы от этого мало - реквесты все идут через HTTPS.
Люди как-то получают нужные реквесты и ключи. В какую сторону смотреть? Реверс инжинирить приложение? Если да, то как? Если нет, то что посоветуете?
Пиши в живой тред.
По делу - передай в конструктор Resources или Context, если боишься утечек возьми у контекста контекст приложения - тогда не протечет, когда надо берешь стринг арэй.
Привет пацаны! Как и многие решил угореть по андроиду, написал приложуху (афишу для местных кинотеатров) и заметил, что скролл не такой плавный как в приложении ВК.
Ради такого дела полез смотреть трассировку - если мотнуть экран вниз, то первое время все нормально (пик 1), но в какой-то момент все становится плохо (пик 2) и дальше лучше не становится. Во фрэйме, после которого все ломается, происходит "Expensive Bitmap uploads" Pixels uploaded "0.31 million", Time spent 11.750 ms, Upload 1038x300 Texture took 11.75ms. О каких текстурах идет речь я не понимаю, у меня даже при всех закомменченных ImageView такая же фигня.
Может я накосячил в программе или еще что. Поэтому я собрал пример полностью по руководству гугла http://developer.android.com/training/material/lists-cards.html#Dependencies и, естественно, ничего не изменилось. Скролл такой же рваный. В моей пустой программе тормозят даже пустые карточки (пик 3).
Что можно сделать, пацаны? Мой телефон говно? Или это я не понимаю сути андроида?
Downloader сохраняет эту переданную ссылку в поле mCallback. Внутри Downloader объявляется AsyncTask, который в onPostExecute вызывает mCallback.onResult(yoba).
Вопрос: если в момент выполнения AsyncTask Activity будет убита, что произойдёт? Будет ли собран сборщиком объект Downloader? По идее объект AsyncTask будет иметь ссылку на родительский объект, значит ли это что он будет жить? Значит ли это что ссылка mCallback вмесие с Activity также останется жить?
Если всё да, то какой нормальный выход? Сделать WeakReference mCallback? Сделать AsyncTask static?
ActionBar скрыл, в как это сделать Toolbar`е тоже не догоняю.
Надежда на тебя, анон!
Аноны, пилю клавиатуру без активити. Нужно, чтобы при клике на Key он менял изображение. Нихуя не пойму в http://developer.android.com/intl/ru/reference/android/inputmethodservice/Keyboard.Key.html Помогите разобраться.
Сходил я на https://commonsware.com/warescription, годовая подписька (включает все обновления) стоит СОРОК ПЯТЬ БАКИНСКИХ, что в новых реалиях слишком дохуя. В связи с чем предлагаю скинуться. Заявки принимаются неделю (до 27.01) по адресу: tbc)7{gtadANUSya'w'ndexPUNCTUMr>X%u. Указывайте потолок, который готовы выложить (лично я готов потратить $5-7 из своих $19 стипухи). Если есть знакомые ведродевелопы -- зовите.
Все принявшие участие будут получать обновления как только они будут выходить (или пока какой-нибудь крысакун не скинет книжку в сеть и нашу подпиську аннулируют -- лицензии у книжки именные.)
To install:
- Google APIs Intel x86 Atom_64 System Image (system-images;android-21;google_apis;x86_64)
- Android SDK Tools (tools)
Installing Google APIs Intel x86 Atom_64 System Image
Downloading https://dl.google.com/android/repository/sys-img/google_apis/sysimg_x86_64-21_r10.zip
An error occurred during installation: Cannot download 'https://dl.google.com/android/repository/sys-img/google_apis/sysimg_x86_64-21_r10.zip': На устройстве не осталось свободного места
, response: 200 OK.
Failed to install Google APIs Intel x86 Atom_64 System Image!
Installing Android SDK Tools
Downloading https://dl.google.com/android/repository/tools_r25.0.2-linux.zip
Canary bild конечно
лучше параллельно всё это делать.
Это копия, сохраненная 28 января 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.