Академический Документы
Профессиональный Документы
Культура Документы
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!
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:
http://tableless.com.br/menosemaiscomandroidannotations/ 6/10
05/10/2016 MenosmaiscomAndroidAnnotationsTableless
2Comentrios Tableless
1 Entrar
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