Olá pessoal,
A movimentação aqui no blog esse ano está um pouco devagar, principalmente por conta de trabalho, estudos e por uma mudança de endereço que me deixou num corre-corre danado. Então só está dando tempo pra avisar por onde vou estar falando de Android Brasil à fora.
Entre os dias 21 e 25 de julho participarei do TDC (The Developer's Conference) na Universidade Anhembi Morumbi em São Paulo. Um dos maiores eventos do Brasil voltado para desenvolvedores. São mais de 40 trilhas, com 9 horas de conteúdo em cada uma.
No primeiro dia falarei sobre como acelerar a produtividade no desenvolvimento de aplicações Android utilizando bibliotecas que não estão no Android SDK. E nos dias 23 e 24 participarei do Hands-on Lab de Real Sense ministrado pelo meu amigo Felipe Pedroso.
4br4ç05,
nglauber
Mostrando postagens com marcador lib. Mostrar todas as postagens
Mostrando postagens com marcador lib. Mostrar todas as postagens
segunda-feira, 13 de julho de 2015
segunda-feira, 13 de abril de 2015
Explorando libs famosas: Butter Knife
Olá povo,
Nesse post vou falar de mais uma lib famosa entre os desenvolvedores Android.
Butter Knife (http://jakewharton.github.io/butterknife/)
Com ela, você não precisa mais utilizar o bom e velho findViewByid(int) e nem o setOnClickListener ou setOnItemClickListener.
Adicione a dependência no seu build.gradle.
Um outro detalhe aqui é o evento de click que podemos definir com a anotação @OnClick.
Podemos utilizar o @Inject não apenas em Activities, mas em qualquer lugar passando a View como parâmetro.
É importante resetar a injeção das views em Fragments, e isso deve ser feito preferencialmente no onDestroyView().
4br4ç05,
nglauber
Nesse post vou falar de mais uma lib famosa entre os desenvolvedores Android.
Butter Knife (http://jakewharton.github.io/butterknife/)
Com ela, você não precisa mais utilizar o bom e velho findViewByid(int) e nem o setOnClickListener ou setOnItemClickListener.
Adicione a dependência no seu build.gradle.
dependencies { ... compile 'com.jakewharton:butterknife:6.0.0' }Depois é só utilizar na sua activity.
public class MainActivity extends ActionBarActivity { @InjectView(R.id.edtTexto) EditText editText; @InjectView(R.id.txtManteiga) TextView txtManteiga; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); } @OnClick(R.id.btnFaca) public void meuClick(View v){ txtManteiga.setText(editText.getText()); } }Partindo do presuposto que temos um EditText, um TextView e um Button, com os respectivos IDs definidos como edtTexto, txtManteiga e btnFaca. O código anterior utiliza a anotação @InjectView para inicializar os componentes após a chamada ButterKnife.inject(this).
Um outro detalhe aqui é o evento de click que podemos definir com a anotação @OnClick.
Podemos utilizar o @Inject não apenas em Activities, mas em qualquer lugar passando a View como parâmetro.
View view = inflater.inflate( R.layout.meu_layout, container, false); ButterKnife.inject(this, view);O código anterior, poderia estar, por exemplo em um Fragment ou no construtor de um ViewHolder de um adapter.
É importante resetar a injeção das views em Fragments, e isso deve ser feito preferencialmente no onDestroyView().
@Override public void onDestroyView() { super.onDestroyView(); ButterKnife.reset(this); }Também é possível associar evento de click em itens de uma ListView.
@OnItemSelected(R.id.list_view) void onItemSelected(int position) { // TODO ... }Qualquer dúvida, deixem seus comentários.
4br4ç05,
nglauber
segunda-feira, 30 de março de 2015
Explorando libs famosas: Otto
Olá povo,
Acho que todos que me conhecem sabem que eu não sou muito fã de usar libs de terceiros. Principalmente porque na grande maioria das vezes, é mais fácil você entender apenas o código que é puramente Android, do que ter que lembrar ou saber como uma lib realiza determinado comportamento.
Mas como muita gente gosta, resolvi fazer uma série de posts com algumas bibliotecas Android mais famosas no mercado. E pra começar, vamos falar do Otto.
Otto (http://square.github.io/otto/)
Permite registrar e disparar eventos de/para qualquer parte da aplicação. Adicione a dependência a seguir.
Outra biblioteca que realiza o mesmo trabalho é o EventBus.
Podemos realizar comportamento similar utilizando as classes BroadcastReceiver e LocalBroadcastManager.
4br4ç05,
nglauber
Acho que todos que me conhecem sabem que eu não sou muito fã de usar libs de terceiros. Principalmente porque na grande maioria das vezes, é mais fácil você entender apenas o código que é puramente Android, do que ter que lembrar ou saber como uma lib realiza determinado comportamento.
Mas como muita gente gosta, resolvi fazer uma série de posts com algumas bibliotecas Android mais famosas no mercado. E pra começar, vamos falar do Otto.
Otto (http://square.github.io/otto/)
Permite registrar e disparar eventos de/para qualquer parte da aplicação. Adicione a dependência a seguir.
dependencies { compile 'com.squareup:otto:1.3.6' }A primeira coisa a fazer é instanciar um objeto da classe Bus. Um bom local para fazer isso é na classe que herda de Application (lugar perfeito iniciar os singletons).
import android.app.Application; import com.squareup.otto.Bus; public class ExplorandoLibsApp extends Application { private Bus bus; @Override public void onCreate() { super.onCreate(); bus = new Bus(); } public Bus getBus() { return bus; } }Não esqueça de declarar essa classe no AndroidManifest.xml.
<application ... android:name=".ExplorandoLibsApp">Qualquer classe pode ser enviada como evento...
public class UmaClasseQualquer { private String mTexto; UmaClasseQualquer(String texto) { mTexto = texto; } public String getTexto() { return mTexto; } }E todo método que assinar um evento será notificado. Para assinar um evento, use a anotação @Subscribe. E para disparar o evento utilize o método post(evento) do objeto Bus.
import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Toast; import com.squareup.otto.Bus; import com.squareup.otto.Subscribe; public class MainActivity extends ActionBarActivity { private Bus mBus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBus = ((ExplorandoLibsApp)getApplication()) .getBus(); mBus.register(this); } public void dispararEventoOtto(View v){ mBus.post(new UmaClasseQualquer("Mensagem")); } @Subscribe public void chegouEvento(UmaClasseQualquer event) { Toast.makeText(this, event.getTexto(), Toast.LENGTH_SHORT).show(); } }Obtemos a instância do Bus no onCreate() e informamos que essa classe ouvirá eventos do Bus por meio do método register. O método dispararEventoOtto() é invocado ao clicar em um botão, e nele disparamos o evento chamando o método post(). Quando isso ocorre o método chegouEvento() é invocado.
Outra biblioteca que realiza o mesmo trabalho é o EventBus.
Podemos realizar comportamento similar utilizando as classes BroadcastReceiver e LocalBroadcastManager.
4br4ç05,
nglauber
Assinar:
Postagens (Atom)