Depois de criarem a vossa primeira aplicação, o que se segue? O que são estes ficheiros e classes? O que é uma Activity?
- Activities e Fragments
- Arquitetura Android
- Manifest
- Intents
- Navigation
● Sejam excelentes uns para os outros ● Fale mais alto se vir ou ouvir alguma coisa ● O assédio não é tolerado ● Pratique "Sim e" um ao outro Código de conduta Mais informações: http://bit.ly/2IhF0l3
Andres-Leonardo Martinez-Ortiz Google Carlos Mota Formador Renato Almeida Formador @davilagrau @cafonsomota @tallnato Equipa Daniela Ferreira Gestora de comunidades
● 12 aulas ● 1h30 cada aula ● ~1 aula por semana ● 14 Outubro a 16 Dezembro ● YouTube live ● Suporte assíncrono contínuo via Discord/email ● Todo o código disponível no GitHub Photo by Arif Riyanto on Unspla O programa
#0 14 de Outubro Pronto para começar #1 21 de Outubro Bem-vindos ao Android #2 28 de Outubro Fundações I #3 04 de Novembro Fundações II #4 11 de Novembro Fundações III #5 18 de Novembro Listas, listas e mais listas #6 25 de Novembro Jetpack, Jetpack, Jetpack! #7 - #8 02 - 03 de Dezembro Firebase #9 - #10 09 - 10 de Dezembro MLKit & TensorFlow #11 16 de Dezembro Resumo Semana Semana Calendário ✅ Direto ✅
Sumário Photo by Mika Baumeister on Unsplash ● Resumo da aula anterior ● Passaporte para a Google ● Uma pausa com Android 4.4 ● Kotlin para principiantes ● Doce ou travessura
● Representa um ecrã da aplicação ● Providencia uma interface gráfica para o utilizador interagir ● Podem ser lançadas de diferentes formas ○ Ao carregar no ícone da aplicação ○ Ao navegar entre diferentes ecrãs ○ Por uma aplicação externa ○ etc. Activity
Características: ● Primeiro método a ser executado ● É executado uma única vez Utilizado para: ● Define a interface gráfica ○ O layout que vai ser carregado (imagens, texto, botões, etc.) ● Inicialização de variáveis imutáveis onCreate() Início onCreate
onResume() Início onCreate onResume Características: ● Último método executado antes da aplicação estar pronta para o utilizador interagir ● Pode ser executado várias vezes Utilizado para: ● Registo de listeners ● Início de funcionalidades contínuas (mapa, vídeo, etc)
onPause() Início onCreate onResume App a correr onPause Características: ● Primeiro método executado quando a aplicação deixa de estar disponível ● Também pode ser executado várias vezes ● “Oposto” do onResume() Utilizado para: ● Cancelar o registo de listeners ● Parar as tarefas iniciadas no onResume()
onDestroy() Início onCreate onResume App a correr onPause onDestroy Fim ☠ Características: ● Último método a ser executado antes da Activity ser destruída Utilizado para: ● Limpar recursos que estejam ainda a ser utilizados
Para criar uma Activity ● Classe que estenda Activity // BobiActivity.kt class BobiActivity : Activity() { ... } utilizamos “//” para colocarmos comentários no código
● Classe que estenda Activity ● Adicionar a Activity no AndroidManifest ● Layout Para criar uma Activity // activity_bobi.xml android:layout_width="match_parent" android:layout_height="match_parent"> ...
● Representa um comportamento ou porção da interface do utilizador ● Permite isolar e reutilizar partes gráficas e lógica ● Contida sempre numa activity ● Podemos ter múltiplos fragments numa activity e um fragmento pode ser utilizado por várias activities ● Tem o seu próprio ciclo de vida, muito parecido com o de uma Activity Fragment
● onCreateView() ○ Chamado quando é necessário desenhar a interface de utilizador ● onAttach() ○ Quando o fragment é colocado numa Activity ● onDettach() ○ Quando o fragment é removido de uma Activity ● onPause(), onResume(), etc Ciclo de vida Início onAttach onCreateView Fragmento visível onDestroy onDetach Fim
Intents ● Uma abstração de uma operação a ser executada por outro componente ○ Iniciar uma nova activity ○ Iniciar um serviço ○ Enviar mensagem para outra aplicação ● Um intent é definido de acordo com os seguintes parâmetros: ○ Ação - A ação a ser executada (ACTION_VIEW, ACTION_DIAL, etc) ○ Dados - Os dados necessários para a ação
Intents diferentes tipos de ações fun openDialer(phone: String){ val intent = Intent(Intent.ACTION_DIAL) intent.data = Uri.parse("tel:$phone") startActivity(intent) } ACTION_DIAL +351990000001
Intents diferentes tipos de ações fun openWebsite(phone: String){ val intent = Intent(Intent.ACTION_VIEW) intent.data = Uri.parse("https://www.android.com") startActivity(intent) } ACTION_VIEW
Intents lançar uma nova activity private const val REQUEST_CAMERA = 100 fun takePicture() { val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(intent, REQUEST_CAMERA) }
It’s tempting to take your last resume and update it, tweaking it a bit here and there to include your latest work. But we’d like to suggest that you go a little deeper — we think you’ll feel much better about your hiring process if you do. For each position do the following to build your job-specific resume: ● Align your skills and experience with the job description. Tie your work directly to the role qualifications (and don’t forget to include data). ● Be specific about projects you’ve worked on or managed. What was the outcome? How did you measure success? When in doubt, lean on the formula, “accomplished [X] as measured by [Y], by doing [Z].” ● If you've had a leadership role, tell us about it. How big was the team? What was the scope of your work? ● If you're a recent university graduate or have limited work experience, include school-related projects or coursework that demonstrate relevant skills and knowledge. ● Keep it short. Your resume careers.google.com/how-we-hire/
Resources Google’s Tech Dev Guide g.co/techdevguide Excellent resources for interview and resume prep + skills development “Google Students” YouTube Channel Watch our videos to receive tips and information from other Googlers Careers OnAir careersonair.withgoogle.com On-demand and live events to learn more about life, culture, and work at Google Additional Resource g.co/buildyourfuture
Dog bobi = new Dog("Bobi"); Dog lacy = new Dog("Lacy"); Log.d("O meu cão é o "+ bobi.getName()); val bobi = Dog("Bobi") val lacy = Dog("Lacy") Log.d("O meu cão é o " + bobi.name) Strings interpolação
Dog bobi = new Dog("Bobi"); Dog lacy = new Dog("Lacy"); Log.d("O meu cão é o "+ bobi.getName()); val bobi = Dog("Bobi") val lacy = Dog("Lacy") Log.d("O meu cão é o ${bobi.name}") Strings interpolação
Dog bobi = new Dog("Bobi"); Dog lacy = new Dog("Lacy"); Log.d("O meu cão é o "+ bobi.getName()); val bobi = Dog("Bobi") val lacy = Dog("Lacy") Log.d("O meu cão é o $bobi") Strings interpolação
Imports import android.content.Intent val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(intent, CAMERA_REQUEST) Sugestão: Alt Enter +
Imports import android.content.Intent val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(intent, CAMERA_REQUEST) Sugestão: Preferences → Editor → General → Auto Import Selecciona: ✅ Optimize imports on the fly ✅ Add unambiguous imports on the fly