Androidconf 2011 lecheta

528 views

Published on

Palestra sobre fragments AndroidConf 2011.
http://livroandroid.com.br/detalhes_livro2.html

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
528
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Androidconf 2011 lecheta

  1. 1. FragmentsRicardo R. Lecheta
  2. 2. Com o aplicativoBM&F Bovespa épossível monitorar osíndices do mercadofinanceiro através dopregão emandamento, consultarem tempo real asações desejadas, eacompanhar asnotícias e vídeos daBM&F Bovespa. Épossível visualizar einteragir com ográfico.
  3. 3. Através do aplicativoMobile BrokerAndroid é possívelconsultar as açõesdas bolsas de valorese obter uma análisedo mercado atravésde relatórios diários.O Itaú Bankline paratablet, permite acessoa conta, localizaçãodas agências ecaixas eletrônicos.Disponível para osclientes Itaú,Personnalité eUniclass.
  4. 4. É possível acessar asnotícias do mercado,acompanhar o gráficoe monitoradosÍndices, Ações,Bolsas e Câmbioatravés do aplicativoUOL.
  5. 5. AgendaFragmentsPorque fragments?Fragments Android 3.x vs Compatibility LibraryMigrando o código de uma activity para fragmentsUtilizando fragments: XML vs APICiclo de vida dos fragmentsRotaçionando a telaFragmentTransactionExemplos AndroidConf @2011 - Ricardo R. Lecheta
  6. 6. FragmentsAproveitar melhor o espaço da tela nos grandes tablets AndroidConf @2011 - Ricardo R. Lecheta
  7. 7. FragmentsComo controlar diversas views com conteúdos diferentes? AndroidConf @2011 - Ricardo R. Lecheta
  8. 8. Como gerenciar todo esse conteúdo? Fragments Aproveitar melhor o espaço da tela nos grandes tablets AndroidConf @2011 - Ricardo R. Lecheta
  9. 9. Fragments Representa uma parte da interface da tela em particular. São mini-activities que executam dentro de uma activity principal, conhecidacom activity-host Possui um ciclo de vida bem definido – create/pause/resume/destroy Controla o seu estado e trata seus eventos, de forma independente deoutros fragments e activities Possui um design modular e pode ser reaproveitado AndroidConf @2011 - Ricardo R. Lecheta
  10. 10. FragmentsCriado a partir do Android 3.0 – Honeycombandroid.app.Fragmentandroid.app.FragmentManagerandroid.app.FragmentTransaction AndroidConf @2011 - Ricardo R. Lecheta
  11. 11. FragmentsBiblioteca de compatibilidade - Android 1.6 ou superiorandroid.support.v4.app.Fragmentandroid.support.v4.app.FragmentManagerandroid.support.v4.app.FragmentTransactionandoid.support.v4.app.FragmentActivity (*) AndroidConf @2011 - Ricardo R. Lecheta
  12. 12. Fragments Demo Criando um Fragment pelo XML<fragment android:tag="tempoFrag" class="br.androidconf.lecheta.fragments.TempoFragment" android:layout_width="fill_parent" android:layout_height="wrap_content"/>* android:id ou android:tagTempoFragment frag = (TempoFragment) getFragmentManager().findFragmentByTag(“tempoFrag"); AndroidConf @2011 - Ricardo R. Lecheta
  13. 13. FragmentsCiclo de Vida AndroidConf @2011 - Ricardo R. Lecheta
  14. 14. FragmentsCiclo de Vida
  15. 15. FragmentsDemo
  16. 16. FragmentsDemo
  17. 17. FragmentsBenefíciosDeixa a activity mais simplesSepara responsabilidadesPermite um melhor encapsulamento e aproveitamento de código
  18. 18. FragmentTransaction Demo Criando um Fragment pela APIFragmentManager fm = getFragmentManager();TempoFrag ment frag = new TempoFragment();FragmentTransaction ft = fm.beginTransaction();ft.add(R.id.layoutFrag, frag1, ”tempo”);ft.commit(); commit() * - Obrigatório AndroidConf @2011 - Ricardo R. Lecheta
  19. 19. FragmentsGirar a telaFragments adicionados pelo XML Android vai manter o estadoFragments adicionados via API Android também vai manter o estado da FragmentTransaction Cuidado para não adicionar o fragment duas vezes !
  20. 20. FragmentTransaction As transações são persistidas durante o ciclo de vida da activity Girar a tela - Demo@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if(savedInstanceState == null) { FragmentManager fm = getFragmentManager(); Fragment1 frag1 = new Fragment1(); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.layoutFrag, frag1, Fragment1.TAG); ft.commit(); }...
  21. 21. Fragments Passagem de Argumentos – Somente pela API@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if(savedInstanceState == null) { FragmentManager fm = getFragmentManager(); Fragment1 frag1 = new Fragment1(); Bundle args = new Bundle(); args.putString("msg", "Android Conf 2011 - Fragment!"); frag1.setArguments(args); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.layoutFrag, frag1, Fragment1.TAG); ft.commit(); }...
  22. 22. Fragments Passagem de Argumentos – Somente pela APIpublic View onCreateView(…) { View view = … TextView text1 = (TextView) view.findViewById(R.id.text1); if(getArguments() != null) { String msg = getArguments().getString("msg"); text1.setText(msg); }... O construtor de um Fragment precisa ser vazio!
  23. 23. Salvando estado - onSaveInstanceState Utiliza o método onSaveInstanceState(Bundle) da mesma forma que umaActivity• Demopublic void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("tempo", tempo);}public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); tempo = savedInstanceState == null ? null : (Tempo) savedInstanceState.getSerializable("tempo"); if(tempo == null) { startTask(this); } else { updateView(); }}
  24. 24. Salvando estado - setRetainInstance O método Fragment.setRetainInstance(boolean) é utilizado para persistir ainstância do Fragment durante o ciclo de vida de uma Activity• Demopublic View onCreateView(…) { View view = inflater.inflate(R.layout.tempo_fragment, null); setRetainInstance(true); return view;}public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if(tempo == null) { startTask(this); } else { updateView(); }}
  25. 25. FragmentTransaction Demo - FragmentTransaction .addFragmentManager fm = getFragmentManager();FragmentDetalhes fragDetalhes = new FragmentDetalhes();Bundle params = new Bundle();params.putSerializable("tempo", tempo);fragDetalhes.setArguments(params);FragmentTransaction ft = fm.beginTransaction();ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");ft.commit();.
  26. 26. FragmentTransaction Demo - FragmentTransaction .addFragmentManager fm = getFragmentManager();FragmentDetalhes fragDetalhes = new FragmentDetalhes();Bundle params = new Bundle();params.putSerializable("tempo", tempo);fragDetalhes.setArguments(params);FragmentTransaction ft = fm.beginTransaction();ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");ft.commit();.
  27. 27. FragmentTransaction Demo - FragmentTransaction .replaceFragmentManager fm = getFragmentManager();FragmentDetalhes fragDetalhes = new FragmentDetalhes();Bundle params = new Bundle();params.putSerializable("tempo", tempo);fragDetalhes.setArguments(params);FragmentTransaction ft = fm.beginTransaction();ft.replace(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");ft.commit();.* Para funcionar o replace() e remove() os fragments precisam ter sidoadicionados dinamicamente pela API
  28. 28. Fragment – back stack A “back stack” armazena a pilha de execuções de cada FragmentTransaction O botão voltar pode ser utilizado para desfazer uma operação efetuadapela FragmentTransaction Demo
  29. 29. Fragment – back stackA “back stack” armazena a pilha de execuções de cada FragmentTransactionQual será o comportamento do botão voltar?Depende da interface de sua aplicação, e das necessidades do cliente
  30. 30. Livro Android
  31. 31. Livro Android
  32. 32. Livro Android
  33. 33. Livro Android
  34. 34. Obrigado Dúvidas ? Ricardo R. Lecheta

×