Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
#1

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

07.01.2016, 18:43. Просмотров 385. Ответов 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)

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

Спасибо за внимание.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2016, 18:43     Библиотека для android-разработчиков
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
07.01.2016, 19:03
  #2

Не по теме:


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

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

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

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

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

"Чиркните" хоть пару слов по базовым улучшениям! Нет времени изучать все классы и догадываться чем именно они лучше...
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.01.2016, 20:55  [ТС]     Библиотека для android-разработчиков #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

и другие
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
07.01.2016, 21:43     Библиотека для android-разработчиков #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. Хороший английский... (завидую)
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
08.01.2016, 16:37  [ТС]     Библиотека для android-разработчиков #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, ребята, загляните в тему, пожалуйста. Мне бы хотелось услышать ваше мнение.
Pablito
08.01.2016, 16:46
  #7

Не по теме:

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

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

yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
08.01.2016, 18:27     Библиотека для android-разработчиков #8
Там где HeatmapsPlacesDemoActivity нужно вместо API KEY подставлять свой Browser key который в гугл консоли получил верно же?? Просто я запустил подставил Browser key и автокомплит в этом активити не получается можете обьяснить в чем дело?? Почему так??
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
08.01.2016, 18:43  [ТС]     Библиотека для android-разработчиков #9
yura91, что? Вы темой не ошиблись?
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,107
08.01.2016, 22:48     Библиотека для android-разработчиков #10
За реализацию EventBus отдельное спасибо, но как по мне либа сильно много функций в себе несет) Хоть и полезных, но много. Если разбить ее на три или четыре отдельные библиотеки было бы идеально. Но это лично мое мнение.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
08.01.2016, 23:28     Библиотека для android-разработчиков #11
Цитата Сообщение от dajver Посмотреть сообщение
Если разбить ее на три или четыре отдельные библиотеки было бы идеально.
Согласен! Уж слишком многое в нее намешано! И подозреваю что в компиляцию ВСЕ коды ложатся увеличивая код, тормозя работу...

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

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

Tester64, +, согласен. Но тормозить работу они не будут. Так как большая часть функций (NetworkConnection, Geo) отключаемые и не кушают ресурсов, а скопилированные Utils почти не влияют вообще.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2016, 12:44     Библиотека для android-разработчиков
Еще ссылки по теме:

Qt для Android - Программирование Android
подскажите можно ли на Qt писать для андройда?если нет,то почему?? ведь это кросплотформенная либа

Скремблер для Android - Программирование Android
Добрый вечер. Мне необходимо написать скремблер который шифрует мобильные разговора (GSM). Принцип работы: Я говорю в микрофон, далее...

AES для Android - Программирование Android
Всем привет! Я столкнулся с проблемой написания программы шифрования стандарту AES для мобильной платформы Android. Подскажыте какие...

Сканер для Android - Программирование Android
Люди, подскажите ) Такой вопрос: думаю на диплом написать программу сканер на Андроид: делаешь снимок документа, и программка...


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

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
09.01.2016, 12:44     Библиотека для android-разработчиков #13
Цитата Сообщение от YuraAAA Посмотреть сообщение
Но тормозить работу они не будут
Всегда есть "косвенные" тормоза!

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

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

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

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

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

так вот...когда-то в Делфи сэкономил почти мегабайт на каждой программе вынеся ВСЕ логи из ЕХЕ во внешнюю программу с доступом через ДЛЛ. Убирал DLL из папки и программа становилась "релизом". Сейчас по той-же технологии пытаюсь пойти... Пишу "внешнюю" утилиту для отладчика - она ретранслирует логи и является "ключом" для использования логов вообще... Кстати это дало довольно интересные возможности... счетчики компиляций по проектам (когда за какой проект брался, какая версия рабочая, хоть график работы с проектом), внешний запуск тестов, флайку "с прошлой компиляции прошло", флайку с мини-логами (удобнее Тост-ов), активация WiFi ADB, запись лог-кет в файл/базу для анализа работы в "длительных" оффлайн и много чего другого...
...может через несколько месяцев похвастаюсь...
Yandex
Объявления
09.01.2016, 12:44     Библиотека для android-разработчиков
Ответ Создать тему
Опции темы

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