|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Наверное, стоит чуть подробнее для начинающих описать, что это такое, как это едят и какие возможности в связи с применением аннотаций открываются. Сайт http://androidannotations.org/ На самом сайте дано следующее описание: Code Diet AndroidAnnotations is an Open Source framework that speeds up Android development. It takes care of the plumbing , and lets you concentrate on what's really important. By simplifying your code, it facilitates its maintenance . Грубо переведя, это фреймворк, который позволяет ускорить процесс разработки и повысить читаемость кода. Пример исходного кода: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107.
И то, что получается, после применения androidannotations: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
Как подключить (актуально для android studio 1.5.1): 1. В build.gradle проекта добавить зависимость: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
2. В build.gradle модуля добавить следующие строки: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
И это (версия 3.3.2 актуальна на момент написания этого сообщения): Код: sql 1. 2. 3. 4. 5.
После этих нехитрых манипуляций можно писать лаконичный код. Так выглядит рабочий код пустой активности: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Основные ключевые слова: @EActivity - подключает и инициализирует layout активности. @OptionsMenu - указывает меню для активности. @ViewById - подключает любую активность (контрол) с id к переменной. @AfterViews - метод, который выполняется, когда все вью созданы и подключены к ранее объявленным переменным. @Background - метод, который будет выполняться в дополнительном потоке (фоновая задача). @UiThread - метод, который будет выполняться в основном потоке. Применяется после @Background. @Extra - переменная, которая будет сохранена между сеансами активности. Например, после смены ориентации экрана. @TextChange - метод-обработчик, который будет вызываться при изменении текста. @Click - метод-обработчик, который вызывается при клике на кнопку, галочку и т.п. @OptionsItem - метод-обработчик при выборе пункта меню. Это очень краткий список аннотаций. С полным списком можно ознакомиться тут: https://github.com/excilys/androidannotations/wiki/AvailableAnnotations --- добавлено 02.03.2016 Пример исходного кода нового проекта, созданного в студии 1.5.1 с BlankActivity Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
Тот же функционал, но уже через AndroidAnnotations: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 09:26 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
wadman, Большое спасибо за обзор , очень полезная технология. а перечень граблей гдето можно найти ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 11:08 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
pandа перечень граблей гдето можно найти ? Из граблей я встречал только это: https://habrahabr.ru/post/154851/#comment_5322429 Интересная библиотека. Немного смутила ситуация с инъекциями. Например тот же @ViewById задекларированный в классе помеченным @EBean незаметно потащит за собой весь контекст, что может привести к утечке памяти при потери бдительности (а библиотека как раз этому способствует). Она не лишена недостатков, однако при осторожном использовании позволит избавится от бойлерплейтного кода который уже так надоел мне. Это похоже на правду. По меньшей мере было, когда была версия меньше 3-х. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 11:21 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
кстати, возможно не все знают - суфикс генерируемых классов можно менять с _ на что-то свое с помощью аргумента classSuffix. также можно менять пакет, финальность класса и кое чего еще https://github.com/excilys/androidannotations/wiki/CustomizeAnnotationProcessing ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 11:42 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
chpashaсуфикс генерируемых классов можно менять с _ Да, кстати, упустил эту деталь: если суффикс не менять, то в манифесте вместо MainActivity нужно будет прописать MainActivity_ и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 11:46 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Года 2 назад изучал эту технологию "ускоренного кодинга". Но применять не стал - читаемость кода намного хуже. Может кто клепает проекты десятками тому и пригодится для ускорения набивки кода. Android Studio и так все делает сама за меня так что хватает пока ее :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 13:02 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Микола ПитерскийГода 2 назад изучал эту технологию "ускоренного кодинга". Но применять не стал - читаемость кода намного хуже. в каком месте она становится хуже? Микола ПитерскийAndroid Studio и так все делает сама за меня так что хватает пока ее :) например что она делает за тебя? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 13:06 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Микола ПитерскийAndroid Studio и так все делает сама за меня так что хватает пока ее :) Шутишь, да? Как только студия научится определять тяжелый код и автоматом его выносить в отдельный поток - соглашусь. Загляни на страницу аннотаций - удивишься, сколько можно сократить времени на кодинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 13:17 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
все хочу попробовать, но как от руки не доходят просто актуально для однотипных фрагментов. где незначительная часть отличается, пока наследованием обхожу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 13:49 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Не помню конкретно - но какие-то косяки там были. Может с отладкой проблемы или студия не умеет сама код аннотации завершать или еще что-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 13:51 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Микола ПитерскийМожет с отладкой проблемы или студия не умеет сама код аннотации завершать или еще что-то. Ни с тем, ни с другим не испытывал проблем. Использую года 3. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 13:54 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
[quot chpashaМикола ПитерскийAndroid Studio и так все делает сама за меня так что хватает пока ее :) например что она делает за тебя?[/quot] Ты наверное Delphi никогда не пробовал раз так говоришь, если кодинг в Android Studio для меня праздник - то на IDE Delphi я уже спокойно смотреть не могу - так и хочется матюкнуться. Это действительно тупая деревяшка, которая ничего не умеет, ничего не знает и не хочет учиться и которая от версии к версии становится все хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 13:56 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Микола Питерскийкодинг в Android Studio для меня праздник - то на IDE Delphi я уже спокойно смотреть не могу Я тебя понимаю. :) Но можно сделать еще лучше... И тема этому посвящена. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 14:16 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Микола ПитерскийНе помню конкретно - но какие-то косяки там были. Может с отладкой проблемы или студия не умеет сама код аннотации завершать или еще что-то. оно генерит обыкновенный ява-код, примерно такой-же, какой пришлось бы писать руками. какие могут быть проблемы с отладкой или "завершением" аннотаций (что бы это не значило)? Микола ПитерскийТы наверное Delphi никогда не пробовал раз так говоришь ты не представляешь, сколько всего я пробовал. только я не понимаю какая связь между Android Studio и android annotations кроме слова "android"? твоя фраза имеет примерно столько же смысла как и "я не пользуюсь дезодорантом - меня вязанные носки устраивают". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 14:20 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Ок - убедили. Пока пару месяцев матюкаюсь с делфи, а как вернусь на андроид - обязательно еще раз попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 14:34 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
а c аннотациями в RecyclyView - ViewHolder да и других адаптерах? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 09:48 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Джибса c аннотациями в RecyclyView - ViewHolder да и других адаптерах? Не понял вопроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 09:57 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
я про class ViewHolder extends RecyclerView.ViewHolder { .... } ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 10:02 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Джибсclass ViewHolder extends RecyclerView.ViewHolder Вроде нет. Да и не совсем представляю, что там заинжектить можно... Описание холдера? Или где-то уже что-то подобное реализовано? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 10:22 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
wadmanВроде нет. Да и не совсем представляю, что там заинжектить можно... Описание холдера? Или где-то уже что-то подобное реализовано? когда сложная структура, много элементов во вьюшке, и ее нужно заполнить приходится та-же рутина в духе findViewById ... потом view.settext(...); с другой стороны здесь сложнее. у меня до 5 разных видов вьюшек в списке бывает ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 13:14 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
Джибсприходится та-же рутина в духе findViewById ... потом view.settext(...); Думаю, что тот же ViewById должен сработать так или иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 13:30 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
не, с холдерами эта фишка скорее всего не сработает. они ищут контролы через контекст, а их в нем скорее всего не будет. но вот что можно сделать, так это дописать свою аннотацию и генератор (или запостить фича-реквест) чтобы в конструктор холдерa передавать вьюху, а не контекст. а дальше уже генерить findViewById. но на данный момент из коробки адаптеры остаются кажется единственным местом где приходится писать говнокод вида findViewById ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 14:44 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
chpashaэто дописать свою аннотацию и генератор В четверке будут плагины. Во заживем! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 15:37 |
|
AndroidAnnotations
|
|||
---|---|---|---|
#18+
wadmanchpashaэто дописать свою аннотацию и генератор В четверке будут плагины. Во заживем! да будет удобно. хотя я уже давно форкнул и свою версию пилю, но с плагинами будет действительно круче. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 15:50 |
|
|
start [/forum/topic.php?fid=13&msg=39172266&tid=1330868]: |
0ms |
get settings: |
11ms |
get forum list: |
29ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 251ms |
total: | 540ms |
0 / 0 |