Вы находитесь на странице: 1из 10

05/10/2016 MenosmaiscomAndroidAnnotationsTableless

Menos mais com Android Annotations


Seja o primeiro a comentar
por Pablo Silva

De todo o trabalho que voc tem ao programar uma aplicao android, uma grande parte
dele por conta de todo o cdigoboilerplate quesempre temos que fazer. Uma das
coisas que mais me incomoda que todos os recursos (views e afins)precisam ser
referenciados para poderem ser acessados e isso, dependendo da quantidade de recursos
que voc precisa ter na aplicao, pode resultar em muitas e muitas linhas de cdigo. Se
voc precisar criar eventos, servios, broadcasts, adaptersou rodar o cdigo emuma
novathread nem vou colocar em questo aqui!

Ns que programamos para android acabamos nos conformando acostumando com todo
esse cdigo e tempo perdido que ele gera para ser produzido porque, num fluxo normal
de desenvolvimento, ele inevitvel. Sem falar em classes gigantes as quaisprecisaremos
manter depois. E foi exatamente por estes motivos queasAndroid Annotations foram
criadas.

Essas anotaes fazem parte de um framework de cdigo livre, que utiliza injeo de
dependncia, para nos ajudar a eliminar todo aquele boilerplate, trocando-os por
anotaes. Uma vez que diminumos a quantidade de cdigo que temos que escrever, fica
mais fcil de manter a aumentamos a velocidade com que desenvolvemos nossas
aplicaes.

Vou demonstrar aqui como utilizar asannotationsem alguns dos elementos que eu
mencionei para que vocs vejam como fcil e simples e como melhora o nosso cdigo.
http://tableless.com.br/menosemaiscomandroidannotations/ 1/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

Vamos supor que voc tem umamain activity com 5 views eprecisar pegar o valor do
usurio de todas elas, como acontece em umcadastro por exemplo.

Primeiro vamos declarar nosso layout num arquivo XML (no estou me preocupando com
a esttica do layout)

<!activity_register.xml>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="fill_parent"

5.android:layout_height="fill_parent"

android:orientation="vertical"

android:layout_gravity="left"

android:gravity="left">

10.<EditText

android:id="@+id/name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="16dp"/>

15.

<EditText

android:id="@+id/address"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

20.

<EditText

android:id="@+id/numberAddress"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

25.

<EditText

android:id="@+id/telephone"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

http://tableless.com.br/menosemaiscomandroidannotations/ 2/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

30.

<EditText

android:id="@+id/birthday"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

35.

<Button

android:id="@+id/saveButton"

android:layout_width="140dp"

android:layout_height="wrap_content"

40.android:text="Save"/>

</LinearLayout>

e agora precisaremos criar a nossa main activity para injetarmos nossas views e obter as
entradas do usurio. Da maneira normal fica assim

publicclassCalculatorextendsActivity{

privateEditTextname;

privateEditTextaddress;

privateEditTextnumberAddress;

5.privateEditTexttelephone;

privateTextViewbirthday;

privateButtonsaveButton;

@Override

10.publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_register);

name=(EditText)findViewById(R.id.name);

15.address=(EditText)findViewById(R.id.address);

numberAddress=(EditText)findViewById(R.id.numberAddress);

telephone=(EditText)findViewById(R.id.telephone);

http://tableless.com.br/menosemaiscomandroidannotations/ 3/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

birthday=(EditText)findViewById(R.id.birthday);

saveButton=(Button)findViewById(R.id.addButton);

20.

saveButton.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

#savetheinformation

...

25.}

});

Como era de se esperar, inflamos nosso layout xml no mtodo onCreate e obtemos a
referncia de cada uma das views das quais precisamos obter o valor (para o nosso caso
todas). Alm disso criamos um evento no boto de salvar, que obviamente tem a funo
de salvar nossos dados (no fiz a implementao disso aqui para manter simples o
exemplo). Ao utilizarmos Android Annotations, o nosso cdigo fica assim

@EActivity(R.layout.activity_register)

publicclassCalculatorextendsActivity{

@ViewByIdEditTextname;

@ViewByIdEditTextaddress;

5.@ViewByIdEditTextnumberAddress;

@ViewByIdEditTexttelephone;

@ViewByIdTextViewbirthday;

@ViewByIdButtonsaveButton;

10.@Click

publicvoidsaveButton(){

#asviewsjestoreferenciadas

#name.getText();jestdisponvelporexemplo

15.#salvarasinformaes

...

http://tableless.com.br/menosemaiscomandroidannotations/ 4/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

Como vocs podem perceber de cara o cdigo bem menor. No precisamos mais do
mtodo onCreate porque para este exemplo espcificamente, a nica coisa que estamos
fazendo l era inflando nossas views atravs do nosso layout e isso feito
automaticamente para ns utilizando a anotao @EActivity . Em relao a referenciar
as nossas views, isso feito somente adicionando a anotao @ViewById antes de cada
uma delas que queremos referenciar. Ao fazer isso nossas views j esto prontas para
serem acessadas. Algo que importante de se saber que para que as anotaes tenham
efeito, os atributos precisa ter o mesmo nome das ids que esto no xml, do contrrio voc
precisar indicar a id da seguinte maneira

@ViewById(R.id.name)

EditTextname;

o que eu no recomendo que voc faa pois o interessante utilizar todo o poder do
framework ao nosso favor. Outro elemente que no precisamos implementar foi o evento
no boto de salvar, que foi substitudo pela anotao @Click que colocamos acima do
mtodo em que vamos tratar o nosso evento. Como vocs j devem ter percebido, o nome
do mtodo precisa ter como nome o nome do nosso boto referenciado logo acima.

E isso tudo que precisamos fazer para inflar nossas views e adicionar um evento no
nosso boto. claro que esse um exemplo bem bsico. Agora pense em um projeto
grande com mltiplas activities e fragments, o quanto isso nos ajudaria a economizar
tempo. E alm do mais, o que eu mostrei aqui s um pouquinho (pouquinho mesmo) do
que se pode fazer com as anotaes.

Voc pode conferir todo o poder que oAA tem visitando a seu cookbook. L existem
diversos exemplos que servem comoguidelinepara voc comear a utilizar o framework
hoje mesmo e parar de perder tempo escrevendo aquele mesmo cdigo de novo e de
novo em todos os seus projetos. Eu duvido que voc vai se arrepender. At a prxima!

Publicado no dia 19 de setembro de 2016

Pablo Silva
http://tableless.com.br/menosemaiscomandroidannotations/ 5/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

Programadorcomoprofisso.Cozinharumhobby.RubyonRailse
Android.

Vejamaisartigosdesteautor

LEIA TAMBM
Aproveite para ler estes posts tambm:

3 OUT 2016 26 SET 2016 19 SET 2016

Web.br 2016 A Um software para Menos mais com


Conferncia do front-end e UI Android
W3C no Brasil Designers Annotations

http://tableless.com.br/menosemaiscomandroidannotations/ 6/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

2Comentrios Tableless
1 Entrar

Recomendar 1 Compartilhar OrdenarporMaisrecentes

Participardadiscusso...

DouglasDrumond15diasatrs
EunousariaAndroidAnnotationshoje.Foimuitolegalem20122013,mashojetemos
alternativasmuitomaispoderosasebemmantidas,comoButterKnife,Retrofit,OkHttpe
Okio,RxJava,dentreoutras.AndroidAnnotationsumalibgigantequetentafazerdetudo
umpouco,masnofaznadadeformaexcelentecomoessasoutras.
Responder Compartilhar

AlvaroCamilloNeto>DouglasDrumond10diasatrs
Entoessaeraaminhadvida...
Euestoucomeandonodesenvolvimentodeandroidetinhaouvidofalarno
butterknife,seriaelemelhor?Pqnumalidarpidaelefazamesmacoisa..

Valeu!
Responder Compartilhar

TAMBMEMTABLELESS

ComeandocomoAngularMaterial Deployusandogitpullehooks
Parte1 10comentrios3mesesatrs
4comentrios2mesesatrs DanielSchmidtEunoconsegui
AdrianoGaspariniTambmoutilizoh entenderporqueusarorepobarecomo
umtempoegostobastante.Onico intermedirio,emvezdedaropush
problemadoangularmaterialquefoi diretamentenorepoquecontm
descontinuadopara
VocsabepaginardadosnoMySQL Mozillaliberaprimeiracompilaodo
corretamente? Servo,oseumotorderenderizao
10comentrios3mesesatrs 4comentrios3mesesatrs
paulorobsonCdigomuitobomjtestei EdgarDamascenoBracketseatomso
etemumaperformancemelhorquea carroasporserembaseadonaenginedo
antiga,vlwaeAdrianodosSantosJniordo Chromium,oqueaMozillaprope
tableless diferente,voltadopara
Inscrevase d AdicioneoDisqusnoseusiteAdicionarDisqusAdicionar Privacidade

http://tableless.com.br/menosemaiscomandroidannotations/ 7/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

Posts recentes
Web.br 2016 A Conferncia do W3C no Brasil
Criando aplicaes portveis entre diferentes SGBDs usando
PDO(PHP Data Objects)
Um software para front-end e UI Designers
Construindo um rewall no WordPress Parte 2
Menos mais com Android Annotations

Newsletter
Seuprimeironome

Seuemail

insrever

Mais vistos
Web.br 2016 - A Conferncia do W3C no Brasil
Criando um Menu Horizontal com CSS
Centralizando um objeto na Horizontal e Vertical com CSS
Design Responsivo na prtica 2: do layout ao HTML
Dicas e truques de Sublime Text

Siga-nos
http://tableless.com.br/menosemaiscomandroidannotations/ 8/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

Twitter
Medium
Facebook
FEED Rss
Google+

Ns fazemos
Produzimos seu cdigo front-end
Micro Workshops Online

Leia tambm:
Existente em diversas outras linguagens, o operador Null Coalesce
agora tambm faz parte da sintaxe do PHP 7.

SOBRE
Contato
Anuncie no site
Seja um Autor
Sobre

INTERAJA
http://tableless.com.br/menosemaiscomandroidannotations/ 9/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless

Frum
Feed
Twitter
Facebook

COMUNIDADE
Femug
MeetupCSS SP
Zofe
BrazilJS
FrontUX

Escritopelaeparaacomunidadewebbrasileira.Ajude.

http://tableless.com.br/menosemaiscomandroidannotations/ 10/10

Вам также может понравиться