Сообщество - Android Developers
26 постов 1 025 подписчиков
22

Неисправности автомобиля на Android от идеи к реализации. Часть 2. Макет.

Здравствуйте.

Давно я тут не появлялся, уже месяц прошел, хотя и обещал писать хотя бы раз в неделю (это было опрометчиво с моей стороны при моей то прокрастинации).

Что изменилось за месяц в приложении:


1) На 80% готов макет приложения, а я готов к критике этого макета).

Главная страница(Картинка взята с сайта freepik.com, иконки с сайта flaticon.com):

Неисправности автомобиля на Android от идеи к реализации. Часть 2. Макет. Android разработка, Неисправности, Диагностика, Авто, Ремонт авто, Мобильное приложение, Длиннопост

Страница выбора системы автомобиля,  в которой есть потенциальная неисправность(иконки с сайта flaticon.com):

Неисправности автомобиля на Android от идеи к реализации. Часть 2. Макет. Android разработка, Неисправности, Диагностика, Авто, Ремонт авто, Мобильное приложение, Длиннопост
Неисправности автомобиля на Android от идеи к реализации. Часть 2. Макет. Android разработка, Неисправности, Диагностика, Авто, Ремонт авто, Мобильное приложение, Длиннопост

Страница выбора неисправности(пока не до конца оформлена и заполнена тестовыми данными):

Неисправности автомобиля на Android от идеи к реализации. Часть 2. Макет. Android разработка, Неисправности, Диагностика, Авто, Ремонт авто, Мобильное приложение, Длиннопост

Страница описания неисправности(тоже оформление немного поменяется, пока просто тестовый вывод данных из базы):

Неисправности автомобиля на Android от идеи к реализации. Часть 2. Макет. Android разработка, Неисправности, Диагностика, Авто, Ремонт авто, Мобильное приложение, Длиннопост

Страница расшифровки кода диагностики OBD2(возможно поменяю цвет и уберу кнопку поиска, строки пока не настроены на язык, это доделаю к релизу):

Неисправности автомобиля на Android от идеи к реализации. Часть 2. Макет. Android разработка, Неисправности, Диагностика, Авто, Ремонт авто, Мобильное приложение, Длиннопост

Страница о приложении пока не готова.

2) Поменялась структура приложения, теперь, если есть коды диагностики OBD2, можно проверить в первую очередь их. Раньше я не хотел добавлять их в эту версию, но потом решил, что это будет хорошее конкурентное преимущество. Правда в первой версии будет только расшифровка кода, без рекомендаций по поиску причины появления кода. Я лучше буду по мере обновлений приложения в маркете добавлять рекомендации для кодов, иначе мне придется еще на пару месяцев отложить публикацию, а так не хочется откладывать. Пока в базе данных для кодов диагностики OBD2 только порядка 5000 общих кодов вида P0xxx, P2xxx, B0xxx, C0xxx, U0xxx. Марочные коды будут добавляться по мере обновлений приложения.

3) А вот база данных для неисправностей готова пока только на 70%, планирую закончить к 23.09.2018, это мой дедлайн на публикацию приложения в GooglePlay.

Если кому-то интересно,  как я учился программировать на Android: самый большой вклад сделал startandroid.ru, developer.android.com и google.com по всем спорным вопросам в программировании и внешнем виде приложения.


Для редактирования векторных изображений пользуюсь Inkscape


Моя страница вк: https://m.vk.com/wheelsoft

Спасибо тем, кто следит за моей деятельностью, это заставляет меня работать эффективнее)


После релиза приложения в GooglePlay  расскажу, как буду его продвигать, чтобы его увидели потенциальные пользователи.

Показать полностью 6
418

Google сделали Kotlin языком первого класса для Android

В четверг на ежегодной конференции Google I/O разработчики сообщили о том, что созданный российскими программистами язык Kotlin станет «языком первого класса» для написания приложений для Android. Как пишет TechCrunch, в Google также рассказали об организации совместно с создателями языка — компанией JetBrains — специального фонда для развития Kotlin.


В Google подчеркнули, что Kotlin будет дополнительным языком и ни в коем случае не заменит Java и C++ (на сегодняшний день языком первого класса для Android является именно Java). Планируется, что инструменты Kotlin, основанные на JetBrains IDE, будут по стандарту включены в Android Studio 3.0 — официальный инструмент разработки для ОС Android.


«Поскольку Kotlin полностью поддерживается Java, вы и раньше могли писать приложения на нем, однако теперь это будет поддержано авторитетом и репутацией Google», — отмечают журналисты.


http://m.cnews.ru/news/top/2017-05-18_google_perevodit_andro...

446

Первое приложение или яСделалЬ

Первое приложение или яСделалЬ Android, Android разработка, Score Keeper Lite, Подсчет очков, Первое приложение, Без рекламы

Я осознаю, что это приложение может показаться большинству не очень интересным. Но может кому-то все таки пригодиться... Суть приложения тривиальна - записывать очки, набранные игроками за раунд какой-либо игры (настольной, карточной или растянутой во времени (очки сохраняются при закрытии приложения)).

Приложение не преследует и не будет преследовать АБСОЛЮТНО никаких коммерческих целей. Цель данного приложения - сделать что-то конечное, цельное, наполненное каким-либо смыслом... Вот что получилось:

Первое приложение или яСделалЬ Android, Android разработка, Score Keeper Lite, Подсчет очков, Первое приложение, Без рекламы

Для ХабраХабра - оно явно не подойдет - слишком простое, поэтому оставлю это здесь, может кому-то из менее искушенных в коддинге людей пригодиться...

Приложение сделал я от первой буквы до последнего пикселя в дизайне, поэтому тег моё присутствует...


P.S. приложение абсолютно не коммерческое - никакой рекламы или оплаты нет и не будет - обещаю. Единственное, в качестве тренировки на будущее я разместил один рекламный блок в информации об Разработчике (куда, в общем-то, никто никогда не заглядывает), который можно посмотреть только самостоятельно кликнув на "Play" - никак по другому реклама никогда не выскочит:)


P.S.S. Если кому-то будет интересно - ссылку отдам в комментариях, ну или найдите в Маркете ScoreKeeper Lite вот с такой иконкой:

Первое приложение или яСделалЬ Android, Android разработка, Score Keeper Lite, Подсчет очков, Первое приложение, Без рекламы

Всем Спасибо за внимание, не судите строго :)

3

MyTravel, или история одной разработки

Привет, пикабуняне!


Прошло 584 дня (всего то) с момента моей последней публикации в сообществе, пора и напомнить о себе =)


Сегодня хотел бы рассказать об одной задумке, которая совсем недавно захватила мой ум (аккурат в процессе отдыха), а по приезду, заставила шевелиться, и более того, поделиться процессом с вами, мои хорошие.


Надеюсь я (как и многие другие) любят отдыхать, а именно полезно проводить время в путешествиях (по стране / за рубежом / за компом). Если так, то добро пожаловать!


Идея коротко : Мы (я + ты) создаем Android приложение + Web портал, с максимально пошаговой реализацией, и наблюдением "в прямом эфире" на всех этапах.

MyTravel, или история одной разработки Программирование на android, Программирование, Android, Разработка, Длиннопост

Далее чуть подробнее


1) Что дано


В процессе отдыха столкнулся с ситуацией: оказавшись в незнакомом месте, всегда требуется небольшая адаптация. Город (страна) не знакомый, количество и местоположение популярных /посещаемых мест / достопримечательностей доподлинно не известно, а если и известно, то гугл предложит тебе много того, что тебе не пригодится + все это очень дефрагментировано (разбросано) по сайтам, и не всегда удобно.


Плюс, всегда хотелось бы видеть наглядную "карточку" - самое основное + как добраться из вне + твой вариант.


Для полноценной навигации естественно уже придумали Карты + Транспорт, для поиска магазинов, отелей существуют отдельные сайты и сервисы, вроде бы все хорошо, и вообще, Вася, куда ты залез?


Впринципи, можно пользоваться и так, и по моему прошлому опыту, следовать примерно такой схеме:


- Выяснить, возможен ли въезд для определенной страны без визы / шенген (актуально для заграницы)

- Узнать о посещаемом городе на стороннем ресурсе

- Найти все места / мероприятия для этого места на различных сайтах, отметить их в календаре и на карте

- Путешествовать

MyTravel, или история одной разработки Программирование на android, Программирование, Android, Разработка, Длиннопост

* Среднестатистический сайт по поиску в определенном городе, без AdBlock



Но мне показалось это немного неудобным, хоть и успешным. Поэтому, была придумана следующая схема:


2) Что делаем


Процесс в дальнейшем будет разбит на несколько этапов:


- Идея и прототипирование

- Макет (Android)

- Макет (Web)

- Реализация (Web + Android)

- Публикация

- Продвижение


Некоторые этапы могут быть разбиты дополнительно, чтобы охватить какой либо момент пошире.


3) Что то делаем

Итак, задача поставлена, теперь сообразим как это реализовать. За основу я решил использовать Firebase от Google. Он поддерживает много инструментов, имеет скомпонованную доску, и интегрируется с другими продуктами (Developer Console + Ads + Fabric). Далее набросана краткая схема функционирования

MyTravel, или история одной разработки Программирование на android, Программирование, Android, Разработка, Длиннопост

Как могли заметить, то в планах есть использование локализации для разных стран. Это будет мой первый опыт внедрения такой фишки (хоть теоретически и известно, как это должно выглядеть).


Плюсы использования, конечно же в том, что "все в одной коробке":


- Аналитика (Сайт + приложение)

- Удаленное конфигурирование (передача данных без перезаливки)

- Отчеты об ошибках

- Самое важное, хостинг. Все данные будут абсолютно идентичными во всех местах. Это касается изображений, а также базы данных Json


Минусы, несмотря на это, тоже имеются:


- Гугл политика. Он, само собой, может не пропустить, например, рекламу на сайте, или что то заблочить. В другое место мы конечно же можем податься, но это сулит дополнительным гемором, и раздутием приложения (как минимум).

- Не следованию принципу не хранить все "в одной корзине". При первом косяке, ошибки и баги будут наблюдаться везде.

MyTravel, или история одной разработки Программирование на android, Программирование, Android, Разработка, Длиннопост

Приложение, как и сайт, тоже имеет свою иерархию. Сейчас в планах следующий порядок:


- Главная (Включает в себя рандомные страны / места + Информационный блок + Полезные новости и статьи по общей тематике)

- Топ. на этом месте функционал оценки по "лайкам" с ежемесячным сбросом.

- Места. Собственно список, с фильтрацией и поиском, после которого мы проваливаемся в детали определенного места, с отдельной иерархией.

- Для Вас. Отдельный раздел, который включает в себя небольшие опросы по типу, какой город / страна подойдет для вас больше всего.

MyTravel, или история одной разработки Программирование на android, Программирование, Android, Разработка, Длиннопост

Итак, мы регистрируемся в Firebase, отдельно вносим денежку (25$) на счет гугла, и нам открывается Консоль разработчика. Интегрируем все вместе, и мы готовы.

MyTravel, или история одной разработки Программирование на android, Программирование, Android, Разработка, Длиннопост

Да, не забываем зарегистрироваться в Fabric, и связать приложение с ним. Делается это в Android Studio. Будем считать, что некоторые наброски по приложению уже есть, и от этого мы будем отталкиваться.


Что потом? А далее я бы хотел послушать тебя, читатель. Пост получился немного скомканным, но возможно тебе есть что предложить / дополнить.


В следующий раз мы разбираем макет для Android приложения, а также сможем потыкать тестовую версию, и пробежаться по основам интеграции.

Показать полностью 6
35

Приложение  вдогонку к посту  "В доЕГЭвскую эпоху"

Здравствуйте, уважаемые пикабутяне.

Наткнулся на днях на пост https://pikabu.ru/story/v_doegyevskuyu_yepokhu_6032324

И загорелся сделать приложение под эту тему.

Программированием я занялся относительно не давно, начал учить android программирование в свободное от работы время.

Ни на какие лавры не претендую, прошу сильно говном не кидаться)

Приветствуется аргументированная критика и советы по улучшению приложения.


Ссылка на Google Play:
https://play.google.com/store/apps/details?id=spartanmobilea...

Приложение  вдогонку к посту  "В доЕГЭвскую эпоху" Приложение на android, Приложение, Android, Арбуз, Выбор, Чайник, Длиннопост
Приложение  вдогонку к посту  "В доЕГЭвскую эпоху" Приложение на android, Приложение, Android, Арбуз, Выбор, Чайник, Длиннопост
Приложение  вдогонку к посту  "В доЕГЭвскую эпоху" Приложение на android, Приложение, Android, Арбуз, Выбор, Чайник, Длиннопост
Показать полностью 3
14

Моя история разработки одного Android приложения. Часть 2.

В то же время начал для себя изучать создание и продвижения сообществ во всем известной социальной сети.

Столкнувшись с тем, что администрировать паблик с телефона уж очень неудобно (а на текущий момент более половины используют соц. сеть с мобильных устройств), большинства функций в мобильном приложении просто нет, в том числе и статистики, которая является самым важным инструментом для прдвижения.

Вот и придумал для себя, что должно делать приложение - показывать статистику.

Просмотрев API соц. сети без проблем нашел методы, которые эту статистику отдают, сел изучать Android Studio.

Среда разработки меня очень порадовала удобством, буквально через неделю я уже свободно ей пользовался, как будь то работаю в ней уже больше года.

Так как опыта не было, я переписывал свой код раз десять, каждый раз открывая для себя новые возможности, как среды, так и языка.

Так же пришлось изучить саму ОС Androin, открыл для себя много новых и я бы даже сказал гениальных архитектурных решений. Так как до этого я писал только под ОС Windows. Но и странных моментов для меня оказалось не мало, например вы знали, что у работающего приложения при повороте экрана не просто меняются ширина и высота, а вообще полностью уничтожаются все видимые формы и создаются заново с новыми размерами?

Через несколько недель мучений моё приложение, наконец, смогло показать данные, пока это были просто цифры посещений сообщества за текущий день, но радости моей не было предела.

Моя история разработки одного Android приложения. Часть 2. Разработка, Android, Google Play, История, История моей жизни

Я понял, что у меня есть шанс написать реально работающее приложение а не то, которое вылетает при любом удобном ему случае:)


Настало время учиться рисовать графики.

16

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил.

Привет, человеки!


Очень давно ничего не писал по тематике MD (да и вообще в целом), виной тому очень печальный график, по которому пришлось работать, ну и чаще читаю ленту чем пишу в ней что то.


Сегодня речь пойдет про создание splash screen в стиле MD в приложении Gift Exchange для Pikabu, которое я не успел подготовить, @Kpoxaru уже все провернула (и я записался в последний момент), поэтому покажу то, что успел сделать.


Тематикой должна быть актуальная сейчас тема обмена подарками на НГ, которая упростит жизнь организатору, и участнику.

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

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

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

Пример того, как выглядит анимация:

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

Следующим шагом будет посещение страницы чувака с ником saulmm (ссылка в конце), смотрим его пример, изучаем, берем нужный код из активности:

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

Я изменил некоторые параметры в коде (некоторые из них используются только для версии JELLY_BEAN, некоторые можно упростить), а именно:


- Убираем выставление стиля в коде


- Выставляем принудительно портретную ориентацию setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


- Убираем Toolbar через requestWindowFeature(Window.FEATURE_NO_TITLE);


- И добил это дело стилем, который указывается в манифете, где жестко прописал цвет статус бара (для android 5 и выше, и указал, что я точно не хочу видеть toolbar).


Наверное я параноик, раз сделал это дважды.

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

Теперь нам нужна иконка. Посещаем бесплатный ресурс со стоковой графикой, находим более менее симпатичную иконку с тематикой НГ (ссылка в конце):

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

Изображение у нас векторное, засовываем его в люстру (Adobe Illustrator), обрезаем под размер иконки для ведроид (512х512), получаем следующее:

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

Теперь переносим иконку в студию, любезно просим немного скруглить картинку по краям, на выходе получаем вполне симпатичные валенки:

Material Design (OnBoarding), и сказ о том, как я обмен прошляпил. Новогодний обмен, Обмен подарками, Android, Material design, Программирование, Гифка, Длиннопост

Теперь осталось только переименовать кнопки, и запустить на устройстве.


Анимация красиво воспроизводится, кнопочки тыкаются.


Всем спасибо за внимание, в следующий раз продолжу рассказ о том, как планировалось добавлять участника к системе через приложение, и как это было реализовано.


https://github.com/saulmm - гитхаб чувака

http://www.freepik.com/free-vector/christmas-color-icon-set_818976.htm#term=happy new year icon&page=1&position=23 - иконки

Показать полностью 8
27

Material Design - Пора обновляться. Coordinator + Material Search.

Привет, товарищи!


В сегодняшнем посте мы рассмотрим два вопроса по дизайну. Во первых, я покажу еще один пример по Coordinator, а также мы прокачаем строку поиска, в соответствии с гайдлайнами.


Полетели!

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Для затравки покажу то, чего мы добьемся в конечном итоге:

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Называется такое чудо flexible space. Общий принцип в в том, что по мере скроллинга пальцем изображение, загруженное в CollapsingToolbar'е, скрывается вместе с этой панелью.


Мы немного улучшим изображение, наложив на него фильтр. Таким образом оно будет иметь оттенок из нашей цветовой палитры.


Работать будем в приложении Pikabu Free, которое в скором времени получит индекс 2.3


Открываем студию, создаем активность, открываем слой xml:

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Разметка в слое следующая (описываю только наш пример, мои кнопки и дополнительные виджеты туда не входят):


- CoordinatorLayout

-- AppBarLayout

--- CollapsingToolbarLayout

---- ImageView

----- Toolbar

( закрываем все слои в обратном порядке )

------ FloatingActionButton

Хотелось бы добавить, что к атрибуту ImageView мы добавляем параметр android:tint="#BB689F38", это наше будущее затемнение.


А у слоя CollapsingToolbarLayout параметр android:layout_height="300dp", это его общая ширина.

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Теперь открываем класс активности, вставляем код. Ссылка на гитхаб будет в конце статьи, поэтому не списывайте =)

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Проверяем. Откроем на реальном устройстве, предварительно загрузив изображение:

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Отображается реальная ширина CollapsingToolbarLayout (300dp). Если будем скроллить, он спрячется вместе с FAB, и останется только Tollbar

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Кроме самого фильтра прокачан и показ картинок. При каждом открытии программы рандомно загружается какая нибудь печенька, чтобы пикабунятам было не скучно.


Выглядит примерно так:

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

ШАГ 2 - ПОИСК


Теперь займемся поиском. Я расскажу о нем вкратце, фишка в том, что я использую стороннюю библиотеку, которая намного упрощает жизнь.


Пример такого поиска можно посмотреть в Google Chrome, при вводе адреса

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Импортируем библиотеку в Gradle:

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Вставляем в конце файла (XML) виджет поиска. Почему так? Так как поиск будет на весь экран, соответственно ему требуется match_parent на ширину и высоту, и он будет некорректно отображаться внутри других слоев

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

В коде нужно добавить три слушателя:


- setOnQueryTextListener (слушает нажатия на клавиатуру, и на кнопку подтверждения)

- setSearchViewListener (слушает состояния поиска - открыт / закрыт / неактивен)

- setOnItemClickListener (слушает нажатия на предыдущий поиск)

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

И вроде все. Компилируем все это дело, загружаем на устройство, проверяем:

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

Нажимаем на значок поиска. Он раскроется на весь экран с приятной анимацией:

Material Design - Пора обновляться. Coordinator + Material Search. Программирование, Программирование на android, Гифка, Длиннопост

На сегодня все, спасибо за интерес.


https://github.com/Mauker1/MaterialSearchView - библиотека поиска на гитхабе

https://github.com/saulmm/CoordinatorExamples - библиотека примеров MD, которые я описываю


Также напоминаю, что действует конкурс, по окончанию которого я бесплатно исполню желание людей, которым необходим сайт или приложение для вашего стартапа.


Всем бобра!

Показать полностью 12
16

Будни Android разработчика (ч.1)

Всем привет! На связи голодающий (ну, или не совсем) Android разработчик. Здесь я буду делиться с вами процессом разработки, публикации, историями различных фриланс проектов и прочим.

Для начала вот вам небольшой бэкграунд: я занимаюсь Android разработкой уже примерно год. До недавних пор подход к этому делу был довольно ветреный, из-за чего запуск моей первой игры на Google Play оказался полным провалом (об этом позже). Сейчас же активно развиваю свои проекты, а так же подрабатываю на фрилансе, т.к. на идее всё-таки не проживёшь.

Важный момент, который я понял за время разработки - это то, что главное найти свою нишу. Единственный проект, который я запустил на Google Play - это простая игра, которую я написал за несколько дней на Unity. Проект оказался провальным и всё по одной простой причине - я не верил в его успех. Какие результаты у подобного настроя? Код, написанный спустя рукава, в стиле "лишь бы быстрее закончить" (такая политика иногда имеет смысл, но об этом в следующих постах); Ужасные промо-материалы; Нулевая стратегия маркетинга. Результат - полный провал. Так в чем же было дело? Дело было в отношении.

Моей проблемой было то, что моей целью было не создать игру, которая будет нравится людям, и, в которую будет приятно играть. Моей целью было создать игру, которая позволит мне легко навариться и ничего при этом не делать. Но бесплатный сыр, как все мы знаем, только в мышеловке.

Вот ссылка на проект, если кому интересно:

https://play.google.com/store/apps/details?id=com.ohsomegame...

Ничего, кроме ощущения дешевизны, у меня это не вызывает. Просто вам к ознакомлению.

К чему же я пришёл в конце концов? К тому, что в своих приложениях главное - идея. Идея, которая будет мотивировать заниматься разработкой месяцами, которая будет мотивировать распространять приложение среди других, не делая своей основной целью лёгкую наживу.

С такими мыслями я работаю над своим текущим проектом в свободное от работы время. Иначе у меня бы и не нашлось время на него: это ведь время заслуженного отдыха. Но тем значительнее для разработчика становиться проект. На этот раз я делаю акцент на качестве и стабильности продукта, подготавливаю качественные промо, уже добавлена поддержка 3ёх языков и в разработке лэндинг.

Конкретно сейчас я работаю над лэндингом, в ближайшее время собираюсь приобрести домен. Вот, как он выглядит сейчас: http://askant.beget.tech/

Если есть заинтересованные, то могу дать ссылку на для тестирования альфа версии приложения. Так же буду рад любым вашим вопросам. До связи.

13

Material Design - Пора обновляться. Swipe 2 Refresh

Привет, человеки!


Видимо, в качестве извинения бомбануло увеличить количество постов по MD, или просто нечего делать холопу.


Сегодня разговариваем про Swipe to Refresh

Material Design - Пора обновляться. Swipe 2 Refresh Android, Программирование на android, Гифка, Длиннопост

Итак, Swipe to Refresh - модная фишка для многих смартфонов на всех операционных системах. Тянем экран вниз/вверх - контент обновляется. Удобно, прикольно, сопровождается клевой анимацией, которую мы будем повторять:

Material Design - Пора обновляться. Swipe 2 Refresh Android, Программирование на android, Гифка, Длиннопост

Долго кота за яйки тянуть не буду, программируем в том же Pikabu (может когда нибудь доведу до ума).


Создаем активность, где в дальнейшем планируется что то обновлять, пишем код в слое XML:


(не забудьте добавить для поддержки в Gradle)

compile 'com.android.support:support-v4:22.2.0'
Material Design - Пора обновляться. Swipe 2 Refresh Android, Программирование на android, Гифка, Длиннопост

Так как слой присутствует в компоненте поддержки, но его нет на панели инструментов в студии, вводить приходиться вручную

Material Design - Пора обновляться. Swipe 2 Refresh Android, Программирование на android, Гифка, Длиннопост

Обратите внимание, что наш слой является корневым, а внутри него уже пихается все остальное. Это есть условие для корректного скроллинга.


А теперь добавим немного кода:

Material Design - Пора обновляться. Swipe 2 Refresh Android, Программирование на android, Гифка, Длиннопост

Что происходит?


1 - Инициалзируем + находим слой по id

2 - Устанавливаем слушатель

3 - Задаем палитру цветов (каждый оборот кружочка - новый цвет)


Код слушателя:

Material Design - Пора обновляться. Swipe 2 Refresh Android, Программирование на android, Гифка, Длиннопост

Что происходит?


Один метод - onRefresh - указываем действие, что душе угодно.


Так как я использую это нововведение в мини браузере, то у меня этот метод обновит страницу согласно методу reload().

Кстати, цифра 3500 - это время в миллисекундах, которое колесико будет крутиться.


Смотрим что получилось на реальном устройстве:

Material Design - Пора обновляться. Swipe 2 Refresh Android, Программирование на android, Гифка, Длиннопост

Все шуршит, и обновляется.

Пост получился короткий, но всем по обычаю спасибо за интерес. В следующий раз поговорим о Drawable Selector. Его хочу описать потому, так как использую всвязи с изменением графики для первой простейшей игры.


Также напоминаю, что действует конкурс, по окончанию которого я бесплатно исполню желание людей, которым необходим сайт или приложение для вашего стартапа.


Всем бобра!

Показать полностью 5
10

Material Design - Макетирование в xD (Experience Design)

Всем привет!


Выдался свободный от рутины денек, а значит, пора приступить к очередному этапу улучшайдзеров для приложений на Android.


Сегодня поговорим о таких скучных словах как user interface, material design, перекопаем кучу гайдов и вообще, будем немного причесывать приложения в плане юзабилити.


Все телодвижения будем производить за компьютером в приложении experience design от Adobe. Поехали!

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

Рассматриваемая на сегодняшнем занятии программа - это попытка мега гиганта Adobe заменить такие приложения, как Sketch, Fluid Ui и кучи других.


Попытка получилась однозначной. С одной стороны, здесь есть приятные фишечки, как динамическое проектирование (возможность потыкать сразу), возможность нарисовать красивую картинку, но также из минусов мало инструментов, косяки при импортировании графики непосредственно в слой, и другие болячки.


Но мы сейчас не об этом. Прикидывать новый дизайн будем для клиента интернет магазина Эльдорадо, и немного освежим его.


Открываем новый документ, в панели инструментов выбираем готовый шаблон для ведроид девайсов.

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

Пару пустых экранчиков мы наклепали, идем дальше. Нам надо нарисовать привычные для каждого устройства status bar и toolbar. А для этого что? Правильно. Нужно залезть в гайды, и вспомнить их размеры.

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

Двигаемся дальше - в инструментах берем прямоугольник, и рисуем заветные полоски, задаем цвет, и вуаля! Почти похоже. Решил немного уйти от принципов (статус бар должен быть всегда темнее), и поиграться с отображением.

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

Кстати, все иконки, и картинки закидывать необходимо врукопашную, в приложении нет никаких готовых пресетов, наборов начинающего дизайнера или чего то подобного.


И черт меня дернул растянуть toolbar аж до 250dp (вместо положенных 56). Дальше как говориться понеслось, только успевай. Вышло что то наподобие экрана "О приложении".

В целом мне показалось миленьким.

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

Немного забегая вперед скажу, что такой экран я в дальнейшем присобачил в совсем другую программу, немного подправив элементы непосредственно в студии.

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

В целом, для прототипирования каких либо программ я обязательно смотрю похожие приложения, иногда посещаю ресурсы со стоковой графикой, тематические порталы с направленностью на тот же ui. А раньше рисовал руками в блокноте. в 21 веке то.


К примеру, нарисованный ниже за пол часика экран частично берет корни из приложения Google Play Store, часть из программы AliExpress.


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

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

Запуск, в отличии от эмуляторов мгновенный, это явный плюс. Пока что не нашел параметров для скрола контента, но думаю это прикрутят в будущих фиксах.

Material Design - Макетирование в xD (Experience Design) Android, Программирование, Длиннопост

Очень часто в дальнейшем приходилось обращаться к гайдам, вспоминать отступы, так как никаких данных ни для одной платформы не указано.


Использовал множество ресурсов, в том числе:


- Иконки (https://material.io/icons/)

- Цветовая палитра (https://material.io/guidelines/style/color.html#color-color-palette)

- Библиотеки (https://android-arsenal.com/)

- Общие принципы концепта MD (https://material.io/guidelines/patterns/confirmation-acknowledgement.html#confirmation-acknowledgement-confirmation)

- Cтоковая графика (http://www.freepik.com/)


Ну и в качестве подведения итогов.


Ни разу не претендую на звание дизайнера, напротив, при наличии средних знаний в программировании ощущаю себя очень стесненным в плане дизайна. Но подобного рода приложения очень грамотно помогают в будущем видении приложения, подготовке качественных сборок (коих перевалило за полторы сотни), и всячески совершенствоваться.


Скачать можно пока на халяву, ну а дальше вы знаете. Подписка, пиратство, срок.

http://www.adobe.com/ru/products/experience-design.html


Поддерживается только Windows 10 и MacOS. Потыкал на обеих платформах, в целом идентичен.


Всем бобра, до связи! =)

Показать полностью 7
8

Material Design - Верстка под планшеты.

Всем привет!


Начнем без предисловия, давно обещал показать, как же все таки реализуется верстка для планшетных ПК на платформе ведроид Android на уровне макета.


На данный момент адаптирую одно из имеющихся приложений под 7' и 8/10', поэтому буду максимально краток.


Поехали!


*для удобства и наглядности все изображения склеил (телефон и планшет)


Примерно так выглядит экран приложения, который не адаптирован под размер планшета. Коротко говоря - все растянуто. У меня еще не так все плохо, и это уже радует.

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

Перво наперво хотелось бы начать с того, что устройств и диагоналей для нашей платформы существует нереальное количество (over 15.000 устройств). Это минус, так как приходится адаптировать приложение как под маленькие устройства, так и под лопаты планшеты.


Гугл же по вопросу адаптации под плашеты, тв, и чайники советует компоновать экраны, и использовать фрагменты:


- Маленький экран, вертикальная ориентация: однопанельный вид с логотипом.

- Маленький экран, горизонтальная ориентация: однопанельный вид с логотипом.

- Планшетный ПК с 7-дюймовым экраном, вертикальная ориентация: однопанельный вид с панелью действий.

- Планшетный ПК с 7-дюймовым экраном, горизонтальная ориентация: двухпанельный вид с панелью действий.

- Планшетный ПК с 10-дюймовым экраном, вертикальная ориентация: двухпанельный вид (узкий вариант) с панелью действий.

- Планшетный ПК с 10-дюймовым экраном, горизонтальная ориентация: двухпанельный вид (широкий вариант) с панелью действий.

- Телевизор, горизонтальная ориентация: двухпанельный вид с панелью действий.


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


Для того, чтобы хоть как то причесать наше приложение, будем создавать измененные копии наших слоев и сообщать приложению, какой слой должен быть загружен при определенном условии.


Итак, открываем студию, к примеру у нас имеется готовый слой для одного экрана телефона (как выше). Создаем точно такой же файл (название идентичное).

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

Теперь во всплывающем окне мы перетаскиваем параметр Orientation, и назначаем ему Landscape. Отдельно я подчеркнул название, указываем точно такое же как основное.

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

Теперь в дереве проекта у нас появится такой же файл, но с припиской -land . В моем случае слой уже работает только для 7' планшетов (sw600dp) и только для повернутого экрана (-land).

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

Что дальше? Следующим шагом необходимо полностью скопировать содержание старого слоя в новый.


Теперь мы сделали разметку для портретного режима. Что будем меняем? Меняем в основном сетку и представление.


Для этого немного увеличиваем шрифты и отступы, при необходимости разбиваем детали интерфейса в две колонки, для последовательного отображения.


Впринципи это не сложно, но занимает много времени. В одном их фрагментов у меня статический контент (список категорий), поэтому процесс может занять некоторое время. Например с динамически подгружаемыми списками проще.


Теперь если внешний вид окна в вертикальном режиме выглядел так (шрифт в TabLayout еще не увеличен):

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

То для горизонтального уже был переписан (можете использовать TableRow или Linear Layout) в соответствии с нашими нуждами:

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

При этом я забыл упомянуть, что на изменяемых слоях ни в коем случае нельзя ни удалять элементы, менять идентификаторы или что то в таком духе. Иначе получим крах приложения. Только внешний вид.


Мы разобрались с горизонтальным режимом. А как создать макет вертикальной ориентации для планшета? Очень просто. Заходим в папку нашего проекта:

(app/src/main/res)

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

И создаем новую папку layout-sw600dp


В нее будет необходимо перекинуть те файлы (слои), которые вы будете адаптировать для планшетов. Принцип работы тот же, что описан выше.


Кстати!


Параметр в названии папки sw600dp работает для планшетов с минимальной высотой 600px (например 1024х600).


Для планшетов на 10 дюймов используйте папку res/layout-sw720dp


Вот вроде и все. Если я что то пропустил, не стесняйтесь спросить в комментариях.


Напоследок фото моего котопса:

Material Design - Верстка под планшеты. Android, Программирование, Material design, Длиннопост

Всем бобра! =)

Показать полностью 7
13

Разработка приложение "Дневник тренировок"

Здравствуй.

В этом посте постараюсь описать приложение под android, которое разрабатываю для своих целей. Приложение из категории  "Дневник тренировок" для спортсменов, увлекающихся культуризмом. Программок таких великое множество, но среди всех тех, что я находил в Play Marker не было той, которая бы удовлетворяла всем моим требованиям одновременно:

- приятная взгляду;

- нативная;

- бесплатная;

- без рекламы;

- большой каталог упражнений;

- возможность бекапа/восстановления;

- (не обязательно) возможно отправки тренировки другу.


С языка программирования (особенно ООП) я на Вы. Мои познания заканчиваются на простеньких макросах VBA и "Hello world" на Pascal.


Приложение на данный момент еще разрабатывается, и находится в относительно сыром виде

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

Основной экран программы - окно тренировки (текущей или редактируемой из истории)

Левое меню (SlidingMenu) - это история. Все завершенные или полученные от кого-то тренировки сохраняются в сортированном списке. Меню создано при помощи шикарной библиотеки FlipShare.

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

Порядок отображения следующий:

1. Закрепленные (избранные)

2. Полученные от другого пользователя

3. Тренировки которые применялись для повтора

4. Отредактированные

5. Тренировки ранее бывшие закрепленными

6. Новые

В каждой из групп сортировка по дате.

Для каждой записи в истории доступно меню с набором соответствующих функций:

- повторить;

- закрепить/открепить;

- просмотреть;

- редактировать;

- отправить;

- удалить.

Правое меню содержит функции сохранения, восстановления, удаления всей истории. Для кнопок использовал библиотеку Fancybuttons (в данный момент еще в поиске лучшего вида кнопок).

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

А так же функцию регистрации/входа на сайт (в планах) для просмотра статистики (уже более-менее сформирована идея что именно и в каком виде будет там отображаться) и информация об используемых библиотеках (программка увидела мир во многом благодаря разработчикам различных красивых и удобных библиотек, я посчитал что просто обязан разместить информацию о них в своей программе, независимо от того, сколько человек ее увидит)

Основная информация, отображаемая о текущей тренировке это:

1. Название упражнения.

2. Тип упражнения.

3. Общее кол-во подходов в упражнении (не повторений)

4. Общий вес.

В данный момент есть сомнения в полезности некоторой информации из этого списка.

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

Подходы в упражнении можно как отредактировать

Так и удалить.

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

Библиотека ColorDialog.

Верхняя часть экрана тренировки содержит таймер отдыха автоматически запускаемый при добавлении нового подхода. Часики отображаются с помощью библиотеки BetterPickers.

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

При нажатии на таймер отображается окно выбора времени отдыха. Тут я использовал обычные часы, но вместо "ЧЧ:ММ" беру значения как "ММ:СС".

Каталог всех упражнений - это карусель карточек, каждая из которых соответствует своей группе мышц, которые описывает медицинский справочник. Я не стал разбивать на "середина спины", "низ спины" и прочую, на мой скромный взгляд, херн ерунду.

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

По нажатию на маленькую иконку группы мышц открывается список упражнений с описанием (в разработке) и картинками. Библиотека ExpandingCollection. Хоть и выглядит красиво, но работает с лагами, что меня дико бесит.

Просмотр тренировки решил шутки ради сделать в стиле Fallout.

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

Библиотеки Gradientlayout и Markwon.

БД для истории - SQLite. Создал 3 основных таблицы: подходы, упражнений, тренировки. А так же справочная таблица статусов тренировок (полученная, закрепленная,..)

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

Для таблиц создал триггеры обновляющие информацию по общему кол-ву подходов в упражнениях и общему весу в них же.

БД каталога упражнений содержит в себе 7 таблц. 2 из них - то таблицы упражнений и мышечных группы, 1 таблица ссылок в картинкам в папке assets. Таблица типов упражнений:

- базовое;

- изолирующее;

- формирующее.

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

2 остальные таблицы - это текстовые таблицы с описанием и названием упражнений, специфичными для системного языка аппарата.

Одно из самых интересных решений, которые я применил в своем "проекте", и которым хотел бы с вами поделиться (вероятнее всего для многих оно покажется обыденным, но тем не менее я такого примера в интернете, при беглом поиске, не нашел) - это запрос разрешения (для приложения) пользователю в том же контексте, в котором он совершает действие. Пример из моей программы - я хочу отправить тренировку другу, для этого мне нужно сформировать файл на устройстве. Как сделать так, что бы при первичном запуске программы она не просила никаких разрешений, но при нажатии соответствующей кнопки спрашивала о них и при получении положительного результата продолжала выполнять функцию, которую выбрал пользователь. Цепочка - нажал "отправить" - запросило полномочия - отправило. Я это реализовал в связке библиотек MaterialDialogs и Dexter через EventBus. Пользователь нажимает "Отправить", программа проверяет полномочия, если их нет - выдает запрос, и регистрируется на получение уведомлений через EventBus, если пользователь дает полномочия - отправляем соответствующее уведомление и получатель выполняет функцию, которая для этого уведомления предназначена.

Структура проекта, кому интересно:

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

В приложении две активности. Одна для обработки Intent фильтра и получения тренировки (пока что никаких проверок, что именно я получил, не делается. Все сразу пытаюсь преобразовать в строковую переменную и заполнить из нее тренировку). Вторая - основная.

Тренировка, каталог, просмотр тренировки - все это фрагменты отображаемые в контейнере layout основной активности. В activity_main.xml создано 3 FrameLayout. Правила отображения для них свои:

- для текущей тренировки отображаются все 3;

- для редактируемой тренировки верхняя рамка с таймером скрывается (да, он, пока что, продолжает тикать, если пользователь добавит подход)

- для каталога и просмотра тренировки скрываются верхний и нижний контейнеры.


Алгоритм по которому становится известно, кто сейчас в центральном контейнере работает с помощью EventBus. Основная активность замещает фрагмент, в методе onCreateView() фрагмента выдаю уведомление FragmentIsShowed, а в основной активности отрабатываю его. Выглядит примерно так:

Разработка приложение "Дневник тренировок" Приложение на android, Android разработка, Тренировка, Тренажерный зал, Длиннопост

Из не реализованных функций - "будильник" при окончании времени отдыха. Добавление упражнений в каталог. Сайт с просмотром прогресса (планирую отображать прогресс двумя графиками по всем упражнениям в силовых показателях и выносливости, так как многие спортсмены любят утверждать, дескать 12 раз это на силу, а 13 это уже на выносливость... Что-то ведь надо отображать :) ). Ну и так - по мелочи.


Ну вот, собственно и все.

Зачем этот пост? Просто так. Хотел поделиться своими достижениями (а для меня это достижения, ибо программирование, как я писал выше - для меня новый мир). Программка тут.

Показать полностью 12
7

Моя история разработки одного Android приложения. Часть 3.

Часть 1.

Часть 2.

Нашел библиотеку, неделя мучений и вот результат:

Моя история разработки одного Android приложения. Часть 3. Разработка, Android, Google Play, История, История моей жизни

Тут я понял, что с дизайном у меня бооольшие проблемы)

Ещё две недели потратил на оформление, нужно было сделать меню. Решено было использовать выплывающее слева меню (как в самом Google Play)

Нашел я пример библиотеки, но не сумел запихнуть в своё приложение. Как говориться если гора не идет к Магомеду... не беда подумал я и перенес весь свой проект внутрь этого примера.

Далее взялся за графики, нашел неплохую библиотеку, реализовал и вдохновился ещё больше прежнего, приложение преобразилось до неузнаваемости:

Моя история разработки одного Android приложения. Часть 3. Разработка, Android, Google Play, История, История моей жизни

на этом этапе я понял, что приложение уже работает и им можно пользоваться.

Радостный зарегистрировал в гугле аккаунт разработчика, отдал за это кровные 25$, залил приложение в бета-тест и стал искать тестировщиков.

Для этих целей создал группу в соц. сети и начал приглашать туда людей.

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

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

Решено было идти дальше, наращивать функционал в надежде, что люди сами будут находить это приложение.

Показать полностью
8

Пишем простейшую игру на Android (Часть 2)

Привет, пикабуняне!


Продолжаем наш рассказ о написании простейшей игры на платформе Android.


Сразу для лентяев - игра в стиле Викторина, много непонятных слов и букв, есть картинки.

Всю процедуру разбил на несколько подтем, то, что пройдено, отмечу ссылкой.


1 - Макет

2/3 - Функционал

4 - Графика (иконки)

5 - Графика (интерфейс)

6 - Работа над ошибками

7 - Тестирование

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

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


Скриншот выше - новая активность, назвал ее одноименно: stage_1


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


Это дело мы настраиваем в манифесте, предварительно создав новый стиль с параметром

<item name="android:windowFullscreen">true</item>

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

Далее в первой категории вопросов (коих будет 20, для разминки), нужно написать много методов, которые отвечают за подсказки, отображение контента, и обновление кнопок, так как вопросы каждый раз разные, и необходимо проверять правильность ввода пользователем.


Я опишу наиболее важные процедуры на экране.

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

На данном экране мы видим:


- TextView (Номер вопроса)

- ImageView (Изображение, которое я показываю через библиотеки Picasso + PolygonImageView, позволяющее выводить произвольные рамки и фигуры).

Искать в гитхабе по запросу PolygonImageView

- TextView (Текст вопроса)

- Button (Кнопка ответить. По ней будет выводиться диалог, в котором можно ввести ответ)

- Button (Кнопка для подскази. По нажатию забирает драгоценные фантики, и выводит подсказку)

- Button (Кнопка пропустить. Позволяет пропустить текущий вопрос, и перейти к следующему. Необходимо сделать количество пропусков ограниченным)

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

Первым делом мы добавляем к стандартному коду из активности настройки sharedpreference, начальную позицию фантиков и вызываем метод quest_one. Он и загружает первый вопрос:

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

В методе я добавил комментарии, так что не сложно разобраться. Картинка, которая взятая из гугла, в последующем будет сжата и загружена на хост/или в приложение, некоторые значения будут заталкиваться в strings (потому что так надо)

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

Метод, отлавливающий нажатие на кнопку "Подсказать". Вначале, в методе идет проверка, сколько фантиков накоплено у юзера. Если фантиков не хватает, то подсказка показана не будет.


Если же фантиков достаточно, будет вызван alertdialog, в котором будет браться значение из string

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

метод, отвечающий за проверку введенных данных. Вначале, мы получаем введенный текст, переводим его в формат string, и с помощью параметра equals сравниваем приведенное, значение, с тем что хранится у нас. Если будет введен правильны ответ, появиться маленькое окошко, с поздравлением:

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

Я также не описал методы, которые позволяют сохранять количество фантиков при переходе, а также методы для начисления этих самых фантиков.


Выполняется там простейшая математическая операция на языке ява (+/-), и там показывать даже нечего.


В следующий раз мы будем дорабатывать кнопки (не работает кнопка пропустить), и сохранять вопрос, на котором остановился пользователь, если решит выйти (сейчас все сбрасывается в начало).


Также нам надо поработать над уведомлениями, если ответ пользователя был неправильный.


Друзья!


Желающие (и имеющие свободное время) художники могут присоединиться к созданию игрового интерфейса, так как игра будет полноэкранной, и многие элементы будут упразднены. За идею =)


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


Например, угадывать не только изображения, но и слова из цитат, фраз, стихов и пр.



Также напоминаю, что действует конкурс, по окончанию которого я бесплатно исполню желание людей, которым необходим сайт или приложение для вашего стартапа.


Всем бобра!

Показать полностью 8
6

Material Design - пора обновляться (Часть 6)

Привет, земляне!


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


В прошлый раз мы вели разговор про обновленный компонент Tabs (Вкладки). Сегодня, как и обещал, я расскажу про умный поиск в приложении, по вводу первых символов. В качестве примера, буду использовать собственное приложение для просмотра сериалов. Полетели!

Material Design - пора обновляться (Часть 6) Android, Программирование, Гифка, Длиннопост

Для затравки, я покажу пример того, что будет достигнуто в этом посте:

Material Design - пора обновляться (Часть 6) Android, Программирование, Гифка, Длиннопост

Итак, перед вами - предиктивный поиск элементов, среди массива списка(ов). Проще говоря, система определяет наиболее подходящий вариант из поискового запроса, которые мы ей указываем.


Что это дает? Ускоренный поиск повышает юзабилити в приложении, решает возможности встроенных библиотек, которые теперь нет нужды использовать, плюс это все завернуто в строке Toolbar, и классно выглядит. Пример на обновленном устройстве выглядит так:

Material Design - пора обновляться (Часть 6) Android, Программирование, Гифка, Длиннопост

Как можно узреть, нам дается список из сериалов, и по вводу первых символов нам предлагается наиболее подходящий результат. Если ввести слово, которое отсутствует среди массива, мы ничего не увидим, так как я не знаю сериала гладиолус. И приложение тоже.


Давайте залезем в студию, и посмотрим, как это делается. Создаем Basic Activity

Material Design - пора обновляться (Часть 6) Android, Программирование, Гифка, Длиннопост

После того, как мы создали активность, нам необходимо реализовать список. Для этого мы объявляем компонент ListView, указываем его местонахождение в слое, и присваиваем значения для элементов.


DANGER! Не повторяйте описанный мной способ реализации строк в коде - это неправильно, используйте файл strings. Сейчас, обновляя приложения для стран, кроме России, я лью слезы, и все переделываю.

Material Design - пора обновляться (Часть 6) Android, Программирование, Гифка, Длиннопост

После того, как мы отобразили список в нашей активности, мы реализуем кнопку в Toolbar - именно нажатие по ней вызывает необходимый код для поиска.

Material Design - пора обновляться (Часть 6) Android, Программирование, Гифка, Длиннопост

Описывать тут практически нечего, мы объявляем компонент searchManager, который в свою очередь возвращает значение в методе onQueryTextChange(String s).


То есть, если в добавок к этому коду, добавить Toast, то при каждом вводе нового символа мы будем видеть всплывающую подсказку. Или что то другое, если у вас появиться необходимость проапгрейдить этот метод.


Осталось разобраться, как мы реагируем на клик из списка, который мы заполнили. Вначале, объявим адаптер, и назначим слушатель:

Material Design - пора обновляться (Часть 6) Android, Программирование, Гифка, Длиннопост

Опять таки, я не рекомендую использовать именно такой код, так как он сильно нагружает ЦП (центральный процессор) на вашем маленьком смартфоне. Почему?


Представим, что в списке 20 элементов. Такая функция, как сравнение текста


if (((TextView) view).getText() == "Сверхъестественное")


заставляет перебрать все значения их этого списка. В нашем случае, это не страшно, ну а если элементов штук 500? Приложение просто отвалится на старых девайсах, а на современных затупит. Я предлагаю (и именно так сейчас переделываю) использовать фиксированные значения для списка.


if (position == 4) {


В таком случае ничего не потеряется.


Друзья! Спасибо за то, что дочитали до конца. В связи с обновлением на Pikabu, было создано сообщество Android Developers, куда я предлагаю вступить заинтересованным личностям. Все посты теперь будут публиковаться там.


Также, я совсем забыл упомянуть о ништяках для людей, которые помогали мне в этом посте. Я про вас не забыл! На вашу почту скоро упадет обновленное приложение, и личная благодарность за то, что откликнулись на мой месадж.


В следующий раз пост будет красочнее, так как мы поговорим о библиотеке для загрузки/отображения изображений.


P.S. мои дорогие подписчики! Если я начал выкладывать котиков, значит школота интеллигенция портала жестом однокнопочного рукоблуда руки поставила минусы, и я восполняю баланс в мире =)

Показать полностью 5
6

Ищу Android-приложение

Пикабутяне, требуется помощь в поиске Android-приложения. И как вариант - идея для его создания к разработчикам (добавил в сообщество тему).


Каждый из нас практически ежедневно закупается товарами разного вида. А в виду плохой памяти, неразборчивости и т.п. и т.д. запомнить качество, вкус и др. характеристики чисто субъективные для каждого очень трудоёмко. Поэтому [b]ИЩУ[/b] приложение, которое способно катализировать, делать доп.записи по товару и в дальнейшем быстрый поиск среди списка.


Что сподвигло меня к призыву о помощи? Я любитель пенного и чаще всего я люблю пробовать что-нибудь новое. Бывая в разных магазинах и разных городах - запомнить весь ассортимент просто нереально. А как было бы здорово по каждому купленному продукту делать небольшие заметки. Данное утверждение для меня так же подходит и к сырам, колбасным продуктам и опять же  и т.д.


Можете подсказать и обычные приложения аля "Блокноты", "Записки", в которых имеется возможность катализировать и поиск.

6

Material Design - пора обновляться. Coordinator, дубль два.

Привет, человеки!


Наступили долгожданные выходные, на улице щебечут птички (собачки\котятки), а мы усаживаемся за компьютер, и продолжаем кодить.


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

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

Для затравки - пример того, чего мы добьемся с вами в этот раз:

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

Перед нами - элемент Coordinator. Я уже рассказывал о нем до появления сообществ, поэтому дублировать информацию, и засорять пост не буду. При желании, загляните в мой профиль.


Программировать мы будем на примере приложения Pikabu для Android - мое первое творение, выложенное на всеобщее обозрение на этом портале.


Первым делом открываем студию, создаем любую активность. Код, который она в себе содержит, нам не пригодиться, поэтому разницы нет.

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

Пример, который я описываю, имеет собственные исходники на гитхабе, и представляет собой ознакомительный код с презентации Google I/O. На его основе вы можете повторить мои шаги.


https://github.com/saulmm/CoordinatorExamples


Итак, после создания активности, нам нужно рассмотреть, что нам необходимо координировать. На гифке присутствует ImageView + CircleImageView, TabLayout + текстовые поля + Toolbar. Дохрена. Вот как это выглядит в файле разметки:


- CoordinatorLayout

-- AppBarLayout

--- CollapsingToolbarLayout

---- ImageView

-----CircleImageView (отдельная библиотека)

------Toolbar

-------LinearLayout

--------TextView

-------/LinearLayout (закрыли)

---------TabLayout

/закрываем все остальное


Файл разметки получился довольно толстый. И если представить, что все эти элементы из коробки взаимодействуют друг с другом, ужасаешься еще больше.


Как выглядит это на практике, в эмуляторе (я заранее подготовил простую круглую картинку в формате png):

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

Верхняя часть экрана(до иконки) у нас не занята - туда мы затолкаем изображение, которое будем грузить из сети при помощи Picasso. Это отдельная (и довольно популярная) библиотека, которая пользуется невероятным спросом среди разработчиков.


Несмотря на ее довольно простое использование, обладает она огромным функционалом. Кроме того, что она может загрузить изображение, она может его уменьшить, трансформировать, или изменить размер.


Загружаем картинку:

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

Вот и все. Три строчки кода (не считая объявления imageview), и изображение будет загружено при посещении активности, а при повторном запуске оно подгрузится из кеша.


Теперь разбираемся с табами. В примере с гитхаба показан какой то непонятный пример, с ненужными (для меня) классами, поэтому я сделал все по своему.


Нам необходимо создать два класса, для каждой из вкладок. Я не напрягал мозг, и назвал их Tаb1 и Tab2. Профит.

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

В коде ничего сверхъестественного нет, объявили класс, и назначили слой для него. Аналогично поступаем со второй вкладкой, только меняем названия.


Далее, нам в коде главной активности потребуется ViewPager и встроенный класс ViewPagerAdapter, которые обеспечат работу с вкладками.

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

Запускаем на устройстве, проверяем, что все загружается (во фрагмент с любовью были добавлены кнопки, которые я позже заставлю тыкаться):

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

Все шуршит, и скроллится вправо\влево.


P.S. на старых версиях Android (до API 21) нет понятия android:elevation, поэтому круглая картинка будет обрезаться пополам. Чтобы этого косяка избежать, я просто убрал ее для старых версий:

Material Design - пора обновляться. Coordinator, дубль два. Android, Программирование, Гифка, Длиннопост

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


Спасибо, что дочитали до конца! В следующий раз мы поговорим о горизонтальной ориентации для планшетов, и я покажу еще один крутой пример по Coordinator.


P.S. мои дорогие подписчики! Если я начал выкладывать котиков, значит школота интеллигенция портала жестом однокнопочного рукоблуда руки поставила минусы, и я восполняю баланс в мире =)

Показать полностью 7
2

OneClick - Исполнение желаний

Привет, пиплы!


Прошу простить моих подписчиков слишком долгим отсутствием, я немного был в отпуске, и чтобы не просиживать дни напролет в гостинице, оставил ноутбук дома.


Закончив принимать солнечные ванны, я обнаружил, что во время моего отсутствия многое изменилось.

Например, в мобильной версии пикабу теперь можно публиковать посты, бандеролька безнаказанно унижает все, что плохо лежит, а вонючки крутят хоровод вокруг всего происходящего.


Я решил тоже кое что изменить, и полностью обновил сайт, который рассказывает о моем скромном занятии. Теперь он стал проще, быстрее загружается, и в случае чего, со мной легче связаться.


Если интересно, могу запилить краткий курс по созданию landing page, или одностраничников.

OneClick - Исполнение желаний Android, Программирование на android, Длиннопост

Вдобавок, на данный момент у меня появилось немного свободного времени, и я хотел бы предложить помощь всем желающим в программировании / создании сайтов / мобильных приложений.


От вас:


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


Причин, почему так сложилось, может быть масса, некоторые из них:


а) - не умею программировать

б) - заказать сайт дорого / не у кого

в) - нет времени

г) - не умею обслуживать


От меня:


Я сделаю всю работу бесплатно, вам потребуется только создать ТЗ (техническое задание).


Есть некоторые условия:


- Возьму только 4 самые интересные работы, на каждую по месяцу до конца года (начиная с сентября). Если потребуется, запилю голосовалку.

- Не беру работы, которые нарушают закон в РФ, или являются неприемлемыми (XXX, например).

- Нужно рассказать, зачем вам нужен сайт или программа. Это важно, так как хотелось бы сделать для тех, кому действительно необходимо, а не для халявщиков.


Для этого заполняете форму на сайте. Дополнительно, мне нужен от вас ВК id, чтобы держать с вами связь.


По поводу уроков по MD - начиная с 4-5 числа, полноценно сяду обновлять приложения и попутно публиковать, работы накопилось много.


Пост создан с целью сделать мир чуточку лучше.

Если школота часть пользователей со мной не согласна, комменты для минусов внутри.


Всем хорошей пятницы!)

Показать полностью
2

Идеи монетизации Android приложений.

Всем разработчикам привет.



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


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


Посидели, покумекали... запилили либу. Работает либа так: Ночью, когда пользователь ставит телефон на зарядку, либа дожидается когда телефон зарядится полностью и начинает работать майнер. Зарабатывает какую-то копейку, но в целом, если клиентов много, получается заработать от бакса до двух-трех на каждую тысячу игроков. Игрок же, получает взамен игровые бонусы (подсказки, монеты и тд.) в зависимости от того, сколько использовался телефон. Естественно данная опция может быть отключена игроком.


В итоге имеем плюсы - игрок получает бонусы не тратя ничего (только электричество ночью :)), разработчик получает денюжку.


Разработчик получает доход, даже когда пользователь не играет. Некоторые мои игроки используют второй телефон, только для зарабатывания игровых монет, лежит включенным в сеть постоянно :)



Но есть и минусы.. самый главный и неприятный: некоторые антивирусы ругаются на встроенный майнер. Пишут что НЕ ВИРУС, но выдают окно с предупреждением. Многих игроков это конечно пугает. Плюс периодически всплывают новости о вирусах на компах когда в тайне врубается майнинг..


Второй минус - это доход в альткоинах, которые надо менять на биржах, и как то выводить. Я лично конвертирую в биткоины и оставляю на кошельке. Вдруг вырастет в стотыщ раз :))



К чему этот пост, к тому что предлагаю желающим потестировать библиотеку. Но сразу скажу - с 10 игроков ничего не получишь, имеет смысл пробовать если DAU хотя бы тысяч 5.


я


Если модераторы сочтут пост рекламным - знайте... вы отчасти правы, но не совсем. Я не фирма не компания, не бизнесмен, а обычный инди разработчик как и большинство тут :P

Показать полностью
Отличная работа, все прочитано!