Slide 1

Slide 1 text

Android Training Program PORTUGAL Aula #2 Fundações I

Slide 2

Slide 2 text

● 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

Slide 3

Slide 3 text

Andres-Leonardo Martinez-Ortiz Google Carlos Mota Formador Renato Almeida Formador @davilagrau @cafonsomota @tallnato Equipa Daniela Ferreira Gestora de comunidades

Slide 4

Slide 4 text

● 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

Slide 5

Slide 5 text

#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 ✅

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

http://events.withgoogle.com/atp2020 ✉ [email protected] http://bit.ly/atp2020-youtube http://bit.ly/atp2020-discord Links

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

http://bit.ly/atp2020-codelabs

Slide 10

Slide 10 text

Resumo da Aula #1

Slide 11

Slide 11 text

Aula #1 ● Plataforma Android ● Passaporte para a Google ● Criar uma aplicação ● Kotlin para principiantes ● Doce ou travessura

Slide 12

Slide 12 text

Photo by Fidel Fernando on Unsplash

Slide 13

Slide 13 text

Bolsas Estágios Programas Recursos Constrói o teu futuro! https://buildyourfuture.withgoogle.com/

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

https://github.com/android-training-program/aula-0

Slide 16

Slide 16 text

VS Ronda 1

Slide 17

Slide 17 text

https://developer.android.com/courses

Slide 18

Slide 18 text

Aula #2

Slide 19

Slide 19 text

Application Manifest

Slide 20

Slide 20 text

● Descrição da aplicação (ícon, nome, tema) ● Definição dos componentes da aplicação (activities, serviços, etc.) ● Permissões ● Requisitos de hardware ● E mais…. Application Manifest

Slide 21

Slide 21 text

AndroidManifest.xml ...

Slide 22

Slide 22 text

Package ...

Slide 23

Slide 23 text

Application ...

Slide 24

Slide 24 text

Activity

Slide 25

Slide 25 text

Activity

Slide 26

Slide 26 text

Activity

Slide 27

Slide 27 text

Activity

Slide 28

Slide 28 text

Permissões ...

Slide 29

Slide 29 text

Serviços ... ...

Slide 30

Slide 30 text

Outros elementos... ...

Slide 31

Slide 31 text

Activities

Slide 32

Slide 32 text

● 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

Slide 33

Slide 33 text

Ciclo de vida

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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)

Slide 36

Slide 36 text

Correeeee... Início onCreate onResume App a correr

Slide 37

Slide 37 text

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()

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Início onCreate onResume App a correr onPause onDestroy Fim ☠ Fiiimmmmm…..

Slide 40

Slide 40 text

Para criar uma Activity ● Classe que estenda Activity // BobiActivity.kt class BobiActivity : Activity() { ... } utilizamos “//” para colocarmos comentários no código

Slide 41

Slide 41 text

Para criar uma Activity ● Classe que estenda Activity ● Adicionar a Activity no AndroidManifest // AndroidManifest.xml

Slide 42

Slide 42 text

● Classe que estenda Activity ● Adicionar a Activity no AndroidManifest ● Layout Para criar uma Activity // activity_bobi.xml ...

Slide 43

Slide 43 text

Fragments

Slide 44

Slide 44 text

● 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

Slide 45

Slide 45 text

Ciclo de vida

Slide 46

Slide 46 text

● 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

Slide 47

Slide 47 text

Fragment

Slide 48

Slide 48 text

Fragment

Slide 49

Slide 49 text

Fragment

Slide 50

Slide 50 text

Fragment

Slide 51

Slide 51 text

Fragment

Slide 52

Slide 52 text

Fragment

Slide 53

Slide 53 text

Fragment Fragment A

Slide 54

Slide 54 text

Fragment Fragment A Fragment B

Slide 55

Slide 55 text

Intents

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

Intents diferentes tipos de ações fun openDialer(phone: String){ val intent = Intent(Intent.ACTION_DIAL) startActivity(intent) } ACTION_DIAL

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

Intents lançar uma nova activity fun openSecondActivity(){ val intent = Intent(this, SecondActivity::class.java) startActivity(intent) }

Slide 61

Slide 61 text

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) }

Slide 62

Slide 62 text

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) } override fun onActivityResult(req: Int, result: Int, data: Intent?) { if (resultCode == RESULT_OK && requestCode == REQUEST_CAMERA) Toast.makeText(context, "Nova foto disponível", LENGTH_SHORT).show() }

Slide 63

Slide 63 text

Navegação

Slide 64

Slide 64 text

Navegação ● Diferentes tipos de navegação ○ Lançando activities da própria aplicação ○ Entre diferentes fragmentos ○ Acedendo a outras aplicações

Slide 65

Slide 65 text

Navegação entre diferentes fragmentos

Slide 66

Slide 66 text

Navegação entre activities

Slide 67

Slide 67 text

Navegação entre diferentes aplicações

Slide 68

Slide 68 text

Passaporte para a Google

Slide 69

Slide 69 text

Bolsas Estágios Programas Recursos Constrói o teu futuro! https://buildyourfuture.withgoogle.com/

Slide 70

Slide 70 text

1. Self-reflection 2. Job searching 3. Your resume 4. Apply online 5. Interviews 6. Decision and offer Our hiring process careers.google.com/how-we-hire/

Slide 71

Slide 71 text

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/

Slide 72

Slide 72 text

Creating alerts for roles

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

Passaporte para a Google

Slide 75

Slide 75 text

Abre o Android Studio e vamos começar a programar ‍‍

Slide 76

Slide 76 text

Kotlin para principiantes ‍♀

Slide 77

Slide 77 text

VS Ronda 2

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

Dog bobi = new Dog("Bobi"); val bobi: Dog = Dog("Bobi") Variáveis declaração

Slide 82

Slide 82 text

Dog bobi = new Dog("Bobi"); val bobi: Dog = Dog("Bobi") Variáveis declaração

Slide 83

Slide 83 text

Dog bobi = new Dog("Bobi"); val bobi = Dog("Bobi") Variáveis declaração

Slide 84

Slide 84 text

Doce ou travessura Photo by Beth Teutschmann on Unsplash

Slide 85

Slide 85 text

Imports val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(intent, CAMERA_REQUEST)

Slide 86

Slide 86 text

Imports val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(intent, CAMERA_REQUEST) Unresolved reference: Intent

Slide 87

Slide 87 text

Imports import android.content.Intent val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(intent, CAMERA_REQUEST) Sugestão: Alt Enter +

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

Pesquisa procurar por um método, variável, etc.

Slide 90

Slide 90 text

Pesquisa procurar por um método, variável, etc. cmd shift + f +

Slide 91

Slide 91 text

Pesquisa procurar por um método, variável, etc. ctrl shift + f +

Slide 92

Slide 92 text

Pesquisa procurar por um método, variável, etc.

Slide 93

Slide 93 text

Pesquisa abrir um ficheiro

Slide 94

Slide 94 text

Pesquisa abrir um ficheiro shift shift +

Slide 95

Slide 95 text

ClipboardManager histórico área de transferência cmd shift + v +

Slide 96

Slide 96 text

ClipboardManager histórico área de transferência ctrl shift + v +

Slide 97

Slide 97 text

Trabalho Para Casa ‍‍

Slide 98

Slide 98 text

Trabalho para casa ● Ao carregar num botão ○ Mostrar um AlertDialog ○ Mostrar uma Snackbar

Slide 99

Slide 99 text

Dúvidas?

Slide 100

Slide 100 text

Obrigado ‍♀

Slide 101

Slide 101 text

Android Training Program PORTUGAL Aula #3 Fundações II Próxima aula: 04 de Novembro