Поиск по этому блогу

четверг, 19 апреля 2018 г.

Форматируемый EditText для номеров телефона или email'ов

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

image

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

вторник, 10 апреля 2018 г.

Анимирование кнопка с прогрессом долгого нажатия

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

image

вторник, 20 марта 2018 г.

Кастомная CarouselView в домашних условиях

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

Для реализации карусели я использовал готовую библиотеку CarouselView но немного ее изменив.

Что бы вы понимали что такое карусель, вот пример того что реализует библиотека которую я использовал для реализации своей
image

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


четверг, 28 декабря 2017 г.

Рисование полигона на GoogleMap в виде круга для выделения области карты

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

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

image

четверг, 7 декабря 2017 г.

Конвертируем PPT в картинку

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

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

среда, 6 декабря 2017 г.

Конвертируем PDF в картинку

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

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

четверг, 30 ноября 2017 г.

Создание кастомного пина на Google map

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

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

image

У нас тут и Джордж Клуни, и Роберт Де Ниро и Дональд Трамп, прям отличная пьянка!

четверг, 16 ноября 2017 г.

Добавляем индикатор в Toolbar и в TabLayout

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

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

Разработка базы данных с помощью Room


Все сталкиваются рано или поздно с созданием локальной базы данных в своих приложениях. Часто, после нескольких часов гугления у нас остается список из кучи ORM которые могут нам помочь с разработкой БД. Я уже писал про самостоятельную разработку БД, еще очень давно, с того времени много чего поменялось, мой уровень знаний вырос, и я сейчас бы не советовал использовать тот способ, так как я писал уже про работу с БД с помощью Realm который разы удобней и проще чем написание и поддержка базы на стандартных методах и классах андроида. Тем более Room является библиотекой которую сам Google советует использовать как БД.

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


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

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

вторник, 14 ноября 2017 г.

Пишем код красиво с Rx Android


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

В интернете куча статей о том как писать с помощью Rx, я сам по ним пытался учиться использовать его, много статей было прочитанно, но лишь одна статья меня реально поразила своей логичностью и порядком изложения информации, после которой у меня открылся третий глаз и я начал слышать голоса объясняющие основы Rx. Вот эта статья.Всем кто не знаком с Rx начинать с нее, даже не знание английского не помеха, Google Translate в помощь, статья очень понятно и логично расписывает работу с Rx. Прям ну ооочень хорошо. Остальные статьи как по мне шлак.

Попался мне проект один, который был написан на Rx, я как нубас впал в ступор и начал истерить что это вообще какая-то не понятная хрень и в растроенных чувствах начал разбираться в ней. В итоге понял что эта непонятная хрень довольно таки удобная хрень, дак еще и полезная, так как она обсорбирует в себя кучу ошибок, и разных плюшек типа работы в UI треде или объеденение нескольких списков в один после запроса. 

В этой статье я хочу рассказать про несколько вариантов использования Rx в проекте, в одном случае я приведу прям вот живой пример использования этой штуки, а в других случаях пройдусь объяснив как это можно реализовать у себя в проекте. Я лично использую Rx для спокойной и удобной работы в UI треде, как минимум не надо создавать там разные AsyncTask'и и писать кучу колбеков, достаточно написать один класс в котором будут нужные методы, а дальше просто вызывать этот класс в нужных классах, и получать нужные данные.