● 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 ● Layouts, views, interações ● Passaporte para a Google ● Kotlin para principiantes ● Sexta-Feira negra
● Dispõe os elementos em posições relativas ○ Relativo ao pai, ou a outros elementos ○ Esquerda ou direita, cima ou baixo ● Permite ‘achatar’ o layout, melhorando a performance RelativeLayout
● Normalmente utilizado para ocupar uma determinada área do ecrã ● Filhos posicionados através da gravidade ● Tipicamente utilizado para colocar os Fragments FrameLayout
● Permite criar layouts grandes e complexos, com uma hierarquia plana ● Relações entre os filhos e o pai definem as posições ● Muito parecido com o RelativeLayout, mas com melhor performance ConstraintLayout
Resolução medium resolution (mdpi) HTC Wildfire S high resolution (hdpi) Samsung Galaxy S2 extra extra extra high resolution (xxxhdpi) Pixel 5 2x2 pixels
Resolução medium resolution (mdpi) HTC Wildfire S high resolution (hdpi) Samsung Galaxy S2 extra extra extra high resolution (xxxhdpi) Pixel 5 2x2 dp’s
● DP vem de density-independent pixel ○ Este valor é calculado pelo sistema consoante a resolução do vosso telemóvel ○ Devem utilizar sempre dp e não px (pixel) ○ Se usarem px vão ter diferentes comportamentos em telemóveis com diferentes resoluções Resolução dp’s
● SP vem de scale-independent pixel ○ Semelhante ao dp ○ Tem em consideração o tamanho da fonte escolhida pelo utilizador ○ Deve ser utilizado em TextView (em vez de dp/px) Resolução sp’s
class Dog { companion object { fun newDog(name: String){ return Dog(name) } } } public class Dog { static Dog newDog(String name){ return new Dog(name); } ... } Métodos estáticos
val dog = Dog() dog.apply { name = "Bobi" legs = 5 color = "Amarelo às pintinhas" weight = 30 } Dog dog = new Dog(); dog.name = "Bobi"; dog.legs = 5; dog.color = "Amarelo às pintinhas" dog.weight = 30 apply
fun petDog(dog: Dog, after: (Dog)-> Unit ){ println("Festas no $dog") after(dog) } val bobi = Dog("Bobi") petDog(bobi, { dog -> println("E depois $dog") }) // Festas no Dog(name=Bobi) // E depois Dog(name=Bobi) Funções como parâmetro
Trabalho para casa ● Ao carregar no botão de ação do teclado ○ Validar se as credenciais estão corretas ○ Navegar para o ecrã principal ○ Terminar a LoginActivity