Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apresentação Architecture Components Navigation

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

Apresentação Architecture Components Navigation

Avatar for Pedro Augusto

Pedro Augusto

September 19, 2018

Other Decks in Programming

Transcript

  1. Sobre mim.. ◦ MBA em desenvolvimento Mobile / Bacharel em

    Sistemas da Informação ◦ Dois anos trabalhando com Android ◦ Trabalhei cinco anos com .Net
  2. Overview Navigation Apresentado no Google I/O 2018; Atualmente em Alpha

    5; Necessita do Android Studio 3.2 Apesar de visualmente parecido, não é um Storyboard (recurso utilizado no XCode para desenvolvimento iOS) Problema Proposta Princípios de Navegação Como utilizar? Transições Testes
  3. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes // Todo mundo já viu um código assim: // Isso quando não temos que controlar um fluxo private void changeFragment(int position){ FragmentManager supportManager = getSupportFragmentManager(); Fragment fragment = supportManager.findFragmentByTag(...); FragmentTransaction transaction = supportManager.beginTransaction(); transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out); if (currentFragment != null) { transaction.detach(currentFragment); } if (fragment == null) { fragment = fragmentList.get(position); if (fragment.isDetached()) { transaction.attach(fragment); } else if (!fragment.isAdded()) { transaction.add(R.id.sample, fragment, getFragmentTag()) } transaction.commit(); } else { transaction.attach(fragment); transaction.commit(); } currentFragment = fragment; currentPosition = position; }
  4. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes • Simplificar navegação entre fragments; • Consequentemente, é necessário o uso de fragments (ಠ_ಠ) ; • Mas o controle é todo feito pelo Navigation \o/ ; • Possui o escopo de Single Activity, portanto, não funciona para navegação entre Activities; • Mas não quer dizer que seu app terá apenas uma Activity.
  5. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes •A navegação deve possuir um ponto de entrada fixo; •A Stack representa o "estado da navegação" utilizando o padrão L.I.F.O (Ou seja, o ponto de entrada no final da stack e a última tela no topo); •O botão de voltar (Up button) não deve existir no ponto de entrada do app; •O botão de voltar do app (Up) e o botão de voltar do sistema devem possuir o mesmo comportamento; •Acessar o App por deep link deve manter a hierarquia da navegação.
  6. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes •Configurando um navigation para fluxo: ◦ No Navigation Graph: Definir e incluir todas as Destinations (Telas do fluxo); ▪ Criar as actions entre as destinations (Conectar os destinos); ▪ Definir a "Start destination" do fluxo.
  7. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes •Configurando um navigation para fluxo: ◦ Na Activity: Incluir um Fragment no XML; ▪ Configurar os atributos defaultNavHost e NavGraph; ▪ No código, sobreescrever o método onSupportNavigateUp para garantir o comportamento do back button.
  8. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes •Configurando um navigation para fluxo: ◦ No Fragments: ▪ Utilizar o método findNavController().navigate() para navegar ao fragment de destino utilizando o id da Action ou fragment; ▪ Obs.: Utilizar um fragment de destino que não esteja conectado ou action inexistente causará crash.
  9. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes •Passando argumentos: ◦ Bundle val bundle = ... it.findNavController().navigate(R.id.action, bundle) ◦ Safe Args (Classes geradas) val action = FragmentDirections.actionName(argument) it.findNavController().navigate(action)
  10. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes O Navigation provê uma forma simples de implementar uma animação de transição entre fragments, é necessário: • Criar um resource de animação (fade, slide, etc.) • No editor gráfico, selecionar a Action onde a animação ocorrerá • Na seção de transições, escolher a animação para Enter e Exit • Done! • Shared Elements estarão disponíveis na versão alpha-06: https://issuetracker.google.com/issues/79665225 • Obs.: Poderiam haver mais opções de animações por padrão =/
  11. Overview Navigation Problema Proposta Princípios de Navegação Como utilizar? Transições

    Testes Existe um pacote de testes para o Navigation, porém, possui apenas uma classe, chamada TestNavigator. Não existe uma recomendação de como utilizá-la e sua documentação não é muito clara.
  12. NÓS MOVEMOS O MUNDO. Centro Av. Presidente Wilson, 231 29º

    andar (21) 2240-2030 Cidade Monções Av. Nações Unidas, 11.541 3º andar (11) 4119-0449 Savassi Av. Getúlio Vargas, 671 Sala 800 - 8º andar (31) 3360-8900 Ilha do Leite Rua Sen. José Henrique, 224 2º andar (81) 3018-6299 WWW.CONCRETE.COM.BR