Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
#1

Библиотека для android-разработчиков - Программирование Android

07.01.2016, 18:43. Просмотров 415. Ответов 12
Метки нет (Все метки)

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

Подробно можно посмотреть тут: https://github.com/YuraAAA/android-develop-utils

Естественно, доступна в jcenter и подключается через градл:

Код
compile 'com.aizenberg:support:0.1.3'
Кратко, что она умеет:
  • Переключение фрагментов (очистка стэка, передача аргументов)
  • Лёгкий Event Bus
  • Cache
  • Настраиваемые логи
  • Итерация и фильтрация по Map<>
  • GeoLocation
  • Набор различных утилит (String, Network listener, Validation etc)

Стали бы ли вы ей пользоваться?
Что бы вы хотели ещё видеть в такой библиотеке?

Спасибо за внимание.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2016, 18:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Библиотека для android-разработчиков (Программирование Android):

Удаляется библиотека в Android Studio, хотя я уже добавил ее в Gradle - Программирование Android
Пробовал добавлять 2 способами 1) Закинул в папку сразу в AS и нажал Add new Library 2) Закинул в папку Libs и добавил в Graddle ...

Выбор мощного android смартфона до 10 рублей, для тестирования проектов Android Studio, что посоветуете? - Программирование Android
Какую фирму посоветуете?

Облачная платформа для разработчиков - Программирование Android
Доброго дня. Программированием на андроид занимаюсь только как хобби. Корпорация добра почти насильно переводит на Студию. А у меня железо...

Библиотека для зума ImageView - Программирование Android
https://github.com/jasonpolites/gesture-imageview почему эта либа в getX возвращает большое число? хотя должно быть около нуля, т.к...

Библиотека для сканера QR-кодов - Программирование Android
Порекомендуйте какую лучше использовать библиотеку для встраивания сканера QR-кодов в свое приложение?

Библиотека для REST метода - Программирование Android
Какую вы посоветуете? 1)Groundy 2)Retrofit 3)AnnotatedSQL 4)Android db-commons 5)Android Annotations Нужна библиотека лишь для...

12
Mikalai
07.01.2016, 19:03
  #2

Не по теме:


за альтруизм ))

0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
07.01.2016, 20:29 #3
Цитата Сообщение от YuraAAA Посмотреть сообщение
Что бы вы хотели ещё видеть в такой библиотеке?
Примеры реализации... Можно даже в apk! Название технологий мне мало что говорит! Тяжело представить где это можно использовать!

?логи? лог-кэт? тектовые? в таблицу базы? у меня все это тоже написано "под себя"... Но тяжело понять о чем речь лишь по "логи"... и чем оно упрощает жизнь разработчику?

GeoLocation? Находил сотню примеров! Пока не пользовался, но у меня уже небольшая коллекция кода... Что именно ВАША технлогия облегчает?

Cache - это вообще "универсальное понятие"! от темповых не удаленных картинок, до еще не убитых полей в базе данных...

"Чиркните" хоть пару слов по базовым улучшениям! Нет времени изучать все классы и догадываться чем именно они лучше...
1
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
07.01.2016, 20:55  [ТС] #4
Tester64, Примеры идут в readme гита. Но конечно же я напишу тут. Изначально я хотел сделать две вещи, это переключатель фрагментов и шина событий. Но как-то сам собой проект разросся
По порядку,
логи - LogCat. В чём его особенность - возможность конфигурирования в одну строку.

Java
1
2
3
4
5
6
7
8
//Логи не будут показаны
LoggerEnvironment.setProd();
 
//Все логи будут показываться
LoggerEnvironment.setDev();
 
//Будут показаны только логи .d и .e
LoggerEnvironment.setCustom(LogLevel.D, LogLevel.E);
GeoLocation использует обычный LocationService, но умеет оповещать как и через интерфейсы, так и через иветы шины.
Да и в общем, все асинхронные события, такие как:

Копирование файлов, оповещение о состоянии интернет соединения, геолокация имеют 2 вида оповещения: interface/listener.
Тем самым Вы можете запустить, например, копирование во фрагменте, а получить результат в активити или в другом фрагменте, просто добавив слушатель события к шине.

Начинаем копирование:
Java
1
2
3
4
FileUtils.copyFileAsync(
        sourceFile,
        targetFile,
        CopyConfig.createEventConfig("copy_success", "copy_fail"));
Слушатель событий:
Java
1
2
3
4
5
6
EventBus.getBus().addListeners(new IEventReceiver() {
            @Override
            public void onReceiveAction(String action, Object... args) {
 
            }
        }, "copy_success", "copy_fail");
По поводу кэша, иногда бывает нужно сохранить какой-то объект в памяти. Например, при повороте экрана или в каком-то другом случае. + я предоставляю возможность установить expire time для объекта.

Он типизирован и опять же, всё в одну строку:
Сохраняем произвольный объект:
Java
1
MemCache.cache(UUID.class).put("myUUID", UUID.randomUUID());
Получаем его обратно:
Java
1
UUID uuid = MemCache.cache(UUID.class).get("myUUID");
Так же есть возможность получать оповещение об изменении кэша, например, для перерисовки какой-то view.

+ Валидация. Это достаточно частая задача. Либа даёт доступ писать свои классы для валидации, например, email:

Java
1
2
3
4
5
6
public class EmailValidator extends PatternValidator {
    @Override
    public String getPattern() {
        return Patterns.EMAIL_ADDRESS.pattern();
    }
}
И использовать его все лишь одной строкой:

Java
1
Validator.isValidCustomPattern(EmailValidator.class, "not_email");
Добавлено через 2 минуты
Там ещё есть разные вспомогательные утилиты, например,
кастомный типизированный адаптер
Adapter

AsyncTask с интегрированным listener-ом,

Async

и другие
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
07.01.2016, 21:43 #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
логи - LogCat. В чём его особенность - возможность конфигурирования в одну строку.
С остальным разбираться надо (большинство МНЕ пока было не нужно), но лог-кэт для меня "больная тема" - начинал с его адаптации под себя...
Итак...
1) нашел на главной:
Logger logger = LoggerFactory.getLogger(MainActivity.class);
logger.i("Hello")
Похоже надо КУЧУ лишнего написать чтобы использовать логи СРАЗУ! У меня это статик-класс!
Похоже удлинилось название класса.
Учитывая что этот класс я использую чаще всех остальных... это куча лишних клавиш... У меня это Rep.r(текст, тип=0), где тип=[0..5] -задает сам фильтр (к чему буквы?), а если не укажу=0

Не по теме:

Долго хотел как когда-то в Делфи сделать просто R.r, но боялся получить частые конфликты с переменными и с классом R=ресурсы...


2)
//Будут показаны только логи .d и .e
LoggerEnvironment.setCustom(LogLevel.D, LogLevel.E);
Вроде это можно настроить в фильтре логов! По крайней мере "только D" вроде можно... Мне не приходилось пользоваться!
3) у меня в выводе строки добавилось КУЧА дополнительной "полезной инфы"... может и Вам стоит подобное сделать? Log.i крайне убогий класс! Как 3х колесный велосипед! Я добавил ссылку на позицию класса, которая его вызвала(если правильно "оформить", позволяет сразу ПРЫГАТЬ на место, которое его вызвало в Студии), названием метода вызвавшего, кодом потока, названием проекта (вручную в init() задаю в Application - помогает при одновременной отладке всех моих проектов)
4) у меня КУЧА разных заготовок для разных параметров Rep.r(... строки, числа, булеан,... год назад курсор добавил... неделю назад Rep.r(String info, ArrayList<Integer> msg)
... к тому-же куча предохранителей - в релизе логи не будут выводиться. Как и не на моих устройствах (зачем они на чужом телефоне будут логи засорять?)

...может тоже возьмете все это "на вооружение"? (я еще не "созрел" на выкладывание своих наработок в ГитХаб)

Не по теме:

я когда начинал "пичкать" Rep "прибамбасами" добавил туда ВСЕ что полезно использовать для БЫСТРОЙ отладки! И Rep.t("asdf"); = Toast, и Rep.tts("voice")=голосом проговаривало, и Rep.f( = в файл строку, и Rep.v(1000)=vibro...



...остальное надо изучать!

p.s. Хороший английский... (завидую)
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
08.01.2016, 16:37  [ТС] #6
Цитата Сообщение от Tester64 Посмотреть сообщение
1) нашел на главной:
Logger logger = LoggerFactory.getLogger(MainActivity.class);
logger.i("Hello")
Похоже надо КУЧУ лишнего написать чтобы использовать логи СРАЗУ! У меня это статик-класс!
Похоже удлинилось название класса.
Учитывая что этот класс я использую чаще всех остальных... это куча лишних клавиш... У меня это Rep.r(текст, тип=0), где тип=[0..5] -задает сам фильтр (к чему буквы?), а если не укажу=0

Тут согласен, просто привык к логгерам Log4j/js, slf4j которые используют такой стиль.

Изначально, мой Logger класс это просто прокси над обычным Log, который просто умеет отключаться (не писать) логи при переключении мода.

Цитата Сообщение от Tester64 Посмотреть сообщение
Вроде это можно настроить в фильтре логов! По крайней мере "только D" вроде можно... Мне не приходилось пользоваться!
А мой логгер вообще их не будет выводить. Сомнительный плюс конечно, но мало ли Это как дополнительная "фича"

Цитата Сообщение от Tester64 Посмотреть сообщение
3) у меня в выводе строки добавилось КУЧА дополнительной "полезной инфы"... может и Вам стоит подобное сделать? Log.i крайне убогий класс! Как 3х колесный велосипед! Я добавил ссылку на позицию класса, которая его вызвала(если правильно "оформить", позволяет сразу ПРЫГАТЬ на место, которое его вызвало в Студии), названием метода вызвавшего, кодом потока, названием проекта (вручную в init() задаю в Application - помогает при одновременной отладке всех моих проектов)
4) у меня КУЧА разных заготовок для разных параметров Rep.r(... строки, числа, булеан,... год назад курсор добавил... неделю назад Rep.r(String info, ArrayList<Integer> msg)
... к тому-же куча предохранителей - в релизе логи не будут выводиться. Как и не на моих устройствах (зачем они на чужом телефоне будут логи засорять?)
...может тоже возьмете все это "на вооружение"? (я еще не "созрел" на выкладывание своих наработок в ГитХаб)
Слушайте...а это отличная идея.

Сделать .d(i, e) (Collection<?>) который будет итерироваться и выводить содержимое коллекций. Да и # (Array[T]) для массивов. И с курсором хорошая идея. Спасибо

Цитата Сообщение от Tester64 Посмотреть сообщение
...остальное надо изучать!
Посмотрите, если будет желание. Возможно, пригодится.

Цитата Сообщение от Tester64 Посмотреть сообщение
p.s. Хороший английский... (завидую)
Честно говоря, с грамматикой мне немного помогли

Добавлено через 18 часов 36 минут
Паблито, Rube, Armagedo, ребята, загляните в тему, пожалуйста. Мне бы хотелось услышать ваше мнение.
0
Pablito
08.01.2016, 16:46
  #7

Не по теме:

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

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

0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
08.01.2016, 18:27 #8
Там где HeatmapsPlacesDemoActivity нужно вместо API KEY подставлять свой Browser key который в гугл консоли получил верно же?? Просто я запустил подставил Browser key и автокомплит в этом активити не получается можете обьяснить в чем дело?? Почему так??
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
08.01.2016, 18:43  [ТС] #9
yura91, что? Вы темой не ошиблись?
0
dajver
409 / 273 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
08.01.2016, 22:48 #10
За реализацию EventBus отдельное спасибо, но как по мне либа сильно много функций в себе несет) Хоть и полезных, но много. Если разбить ее на три или четыре отдельные библиотеки было бы идеально. Но это лично мое мнение.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
08.01.2016, 23:28 #11
Цитата Сообщение от dajver Посмотреть сообщение
Если разбить ее на три или четыре отдельные библиотеки было бы идеально.
Согласен! Уж слишком многое в нее намешано! И подозреваю что в компиляцию ВСЕ коды ложатся увеличивая код, тормозя работу...

Например, если кому понравится твой Логер, то 90% остального для него - "мусор" для проекта. (70% твоих функций я просто никогда не применяю - ни в одном из моих проектов и не знаю где смогу применить)

Или наоборот... Учитывая что логер (если добавить все что я насоветовал) будет СИЛЬНО разрастаться... (мой уже за 2000строк). То проще его вообще вынести его в либу или даже сделать двумя релизами - для отладки и "заглушка" (функции есть, но все - пустышки) - сотню килобайт на релизе можно будет "спасти"...
1
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
09.01.2016, 11:31  [ТС] #12
dajver, спасибо за отзыв.
Я с Вами согласен, планировался только типизированный лёгкий EventBus и Fragment Switcher, но меня как-то понесло...Приму к сведению.

Tester64, +, согласен. Но тормозить работу они не будут. Так как большая часть функций (NetworkConnection, Geo) отключаемые и не кушают ресурсов, а скопилированные Utils почти не влияют вообще.
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
09.01.2016, 12:44 #13
Цитата Сообщение от YuraAAA Посмотреть сообщение
Но тормозить работу они не будут
Всегда есть "косвенные" тормоза!

У меня на телефоне критически не хватает памяти на внутренней флешке! 20-40 программ и на следующую просто не хватает места... Уже забыл когда игрушки ставил... Даже на тест очередной мелкой утилиты иногда не хватает места - качается с плея, а потом пишет "нет места на установку" (на внутренней флешке). А эта либа еще 50-100кб добавляет(если не будет расти)... из тех что нельзя перенести на флешку внешнюю...

К тому-же при запуске это все должно ЗАГРУЗИТЬСЯ в память для работы (если правильно понимаю на основе того что выучил в винде), а значит И здесь лишние потери...

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

И при отладке каждый лишний мегабайт забирает "полезную" секунду на каждой установке (а когда когда разработчику их надо сделать сотню-две в день - это убивает нервы)

Кликните здесь для просмотра всего текста
Как уже говорил, Лог-кет для меня "больная тема"! Много лет назад (больше 10) я писал ОЧЕНЬ сложный проект. Именно математика/логика сложная! Обычных логов в текстовик явно не хватало! Распечатывал и искал ошибки в 5ти-6ти страчичных 2х-3х столбцовых A4-отчетах мелким шрифтом... Начал менять под себя инструменты... Сейчас с трудом обхожусь СИЛЬНО модифицированным ЛогКет(все ранее перечисленное и даже больше). И все равно иногда этого мало. На делфи написал программу на основе перехвата ЛогКет - шикарно работает (но сам протокол ЛогКэт оказался не стабильным - иначе бы давно сделал общедоступной и возможно коммерческой, возможно когда-нибудь изучу сокеты на андроиде и реанимирую проект...)

так вот...когда-то в Делфи сэкономил почти мегабайт на каждой программе вынеся ВСЕ логи из ЕХЕ во внешнюю программу с доступом через ДЛЛ. Убирал DLL из папки и программа становилась "релизом". Сейчас по той-же технологии пытаюсь пойти... Пишу "внешнюю" утилиту для отладчика - она ретранслирует логи и является "ключом" для использования логов вообще... Кстати это дало довольно интересные возможности... счетчики компиляций по проектам (когда за какой проект брался, какая версия рабочая, хоть график работы с проектом), внешний запуск тестов, флайку "с прошлой компиляции прошло", флайку с мини-логами (удобнее Тост-ов), активация WiFi ADB, запись лог-кет в файл/базу для анализа работы в "длительных" оффлайн и много чего другого...
...может через несколько месяцев похвастаюсь...
0
09.01.2016, 12:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2016, 12:44
Привет! Вот еще темы с ответами:

Нужно разработать приложение для бар-клуба. Для ios, android - Программирование
Добрый день!!! Кто может помочь или посоветовать программиста. Главное окно: картинка с акциями с лева вверху кнопка меню- меню...

Какие горячие клавиши используются для Find Usages в Android Studio для мака - Программирование Android
Как настроить на маке Find usages в scope Projects and libraries в Android studio? В винде я делаю Ctrl Alt Shift F7 а как в маке?

Выбор книги или статей для создания приложений под Android (клиент для сервера) - Программирование Android
С какой книги посоветуете начать изучение (желательно сразу на 4 версии). Важно что бы была глава про то как парсить json с сервера...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru