Dan Hermes Novatec
Original English language edition published by Apress, Copyright 2015 by Apress, Inc.. Portugueselanguage edition for Brazil copyright 2015 by Novatec Editora. All rights reserved. Edição original em inglês publicada pela Apress, Copyright 2015 by Apress, Inc. Edição em português para o Brasil copyright 2015 pela Novatec Editora. Todos os direitos reservados. Copyright 2015 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates MP20151117 Tradução: Aldir José Coelho Corrêa da Silva Assistente editorial: Priscila A. Yoshimatsu Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-466-3 Histórico de impressões: Novembro/2015 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 E-mail: novatec@novatec.com.br Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário Prefácio... 15 Segundo prefácio... 17 Sobre o autor... 19 Sobre o revisor técnico... 20 Agradecimentos... 21 Introdução... 23 Para quem é este livro...24 Como baixar os exemplos de código (sites em inglês)...24 XAML...24 Comece a investigar o Xamarin.Forms imediatamente!...25 Conteúdo dos capítulos...25 Como ler o livro...27 Código completo...28 Sobre que plataforma eu estou lendo agora?...28 Pré-requisitos...28 O que você não encontrará neste livro...30 Windows Phone...30 Requisitos do sistema...30 Mac... 31 Windows... 31 Xamarin.Forms... 31 Errata...32 Suporte ao cliente...32 Contato com o autor...32 Resumo...32 Capítulo 1 Desenvolvimento móvel com o uso do Xamarin... 33 O que é Xamarin?...34 APIs nativas encapsuladas...34 Ambientes de desenvolvimento...35 Designers de UI...35 7
8 Desenvolvimento de aplicativos móveis com Xamarin O que é antigo: técnicas C# e.net conhecidas...36 O que é novo: técnicas de desenvolvimento móvel... 37 UI móvel...38 O Xamarin.Forms e a UI específica de plataforma...38 Design de UI móvel...39 Renderizadores personalizados do Xamarin.Forms...40 Camada de acesso a dados... 41 Acesso de dados local com o uso do SQLite...42 Vinculação de dados...42 Desenvolvimento multiplataforma...43 Resumo...44 Capítulo 2 Construindo interfaces de usuário móveis... 45 Entendendo o Xamarin.Forms...45 Arquitetura de solução do Xamarin.Forms... 47 Entendendo a abordagem de UI específica de plataforma...48 Arquitetura de solução de UI específica de plataforma...49 Xamarin.Android...50 Xamarin.iOS... 51 Windows Phone SDK... 52 Selecionando o Xamarin.Forms ou uma UI específica de plataforma... 52 Use as duas abordagens com renderizadores personalizados...54 Examinando os elementos das UIs móveis...55 Usando a UI do Xamarin.Forms...56 Page...56 Layout...57 View...58 Criando uma solução Xamarin.Forms...59 Código compartilhado do Xamarin.Forms... 61 Xamarin.Android...63 Xamarin.iOS...64 Aplicativo Windows Phone...65 Biblioteca Básica...66 Definindo a página principal do aplicativo...66 Adicionando views do Xamarin.Forms...67 Visão de rótulo...67 Inserindo views usando StackLayout...68 Cor de plano de fundo e cor de fonte...69 Usando fontes...70 Usando fontes específicas de plataforma...70 Visão de botão... 71
Sumário 9 Configurando o alinhamento e o tamanho da visão: HorizontalOptions e VerticalOptions...73 Visão para entrada de texto... 74 BoxView...75 Visão de imagem...76 Finalizando StackLayout...80 ScrollView... 81 Atribuindo a propriedade ContentPage.Content... 81 Preenchimento ao redor da página inteira...82 Código completo: Adicionando views do Xamarin.Forms...83 Resumo...85 Capítulo 3 Design da UI com o uso de layouts... 87 Entendendo os controles de personalização...89 Usando layouts do Xamarin.Forms...90 StackLayout...90 RelativeLayout... 100 AbsoluteLayout...110 Grid...117 ContentView... 129 Frame...131 Usando layouts do Android... 133 LinearLayout... 134 RelativeLayout... 138 TableLayout... 140 GridLayout... 142 FrameLayout... 148 Fragmentos... 149 Usando layouts do ios... 150 Usando AutoLayout...151 Usando quadros... 154 Resumo... 155 Capítulo 4 Interação do usuário com o uso de controles...157 Views do Xamarin.Forms... 158 Picker... 159 DatePicker...161 TimePicker... 163 Stepper... 165 Slider... 166 Switch... 167
10 Desenvolvimento de aplicativos móveis com Xamarin Dimensionamento, rotação, opacidade, visibilidade e foco... 168 Código completo: Controles do Xamarin.Forms... 168 Controles do Android... 172 Spinner... 173 DatePicker... 176 TimePicker...181 SeekBar... 182 CheckBox... 183 Switch... 185 RadioButton... 186 Código completo: Controles do Android... 188 Controles do ios... 190 UIPickerView... 190 UIDatePicker... 196 UIStepper...201 UISlider... 202 CheckBox: use UISwitch ou MonoTouch.Dialog...203 UISwitch...204 Código completo: Controles do ios...205 Resumo... 207 Capítulo 5 Criando uma lista rolável...208 Adaptadores de dados...209 ListView no Xamarin.Forms...209 Vinculação a uma lista de strings...209 Selecionando um item... 211 Vinculação a um modelo de dados...213 Adicionando uma imagem... 216 Personalizando as linhas da lista...218 Adicionando botões... 224 Cabeçalhos de grupo...228 Personalizando o cabeçalho do grupo... 232 Criando uma jump list... 235 Os ListViews rolam automaticamente... 236 Otimizando o desempenho... 237 ListView do Android... 238 Usando ListActivity... 238 Vinculação a um array de strings... 239 Selecionando um item... 240 Vinculação a um modelo de dados...241 Otimizando o desempenho... 244 Usando as views de linha internas... 245
Sumário 11 Personalizando linhas da lista... 247 Cabeçalhos de grupo... 252 Controle UITableView do ios... 255 Vinculação a um array de strings... 255 Selecionando um item... 257 Vinculação a um modelo de dados... 259 Usando views de linha internas... 262 Separadores de célula...263 Personalizando linhas da lista...264 Cabeçalhos de grupo... 267 Realçando grupos usando estilos de tabela... 272 Adicionando acessórios às linhas da lista... 273 Otimizando o desempenho... 274 Abordagem alternativa às listas: UITableViewController... 276 Resumo... 276 Capítulo 6 Navegação...278 Padrões de navegação... 278 Hierárquico... 279 Modal... 279 Gerenciamento de estado... 281 Navegação no Xamarin.Forms...282 Navegação hierárquica com o uso de NavigationPage...282 Modal...289 Gerenciando o estado...291 Listas com detalhamento em drill-down...294 Gaveta de navegação com o uso de MasterDetailPage... 302 Abas de TabbedPage...306 Springboard...309 Criando um carrossel com o uso de CarouselPage...312 Navegação do Android...313 Iniciando novas atividades com o uso de intents...314 Navegação hierárquica com a barra de ferramentas...315 Usando a barra de navegação... 326 Fragmentos... 327 Navegação modal... 330 Gerenciando o estado usando bundles... 338 Lista com detalhamento em drill-down...341 Gaveta de navegação... 343 Abas com o uso de ActionBar...344 Navegação do ios... 349 Usando storyboards, cenas e segues... 350
12 Desenvolvimento de aplicativos móveis com Xamarin Usando nibs... 352 Navegação hierárquica... 352 Navegação modal... 357 Gerenciando o estado...360 Lista drill-down com o uso de UINavigationController...363 Gaveta de navegação com o uso de componentes... 367 Uso de abas com UITabBarController... 367 Resumo...369 Capítulo 7 Acesso a dados com o SQLite e vinculação de dados...371 O que é o SQLite?...371 O que é o SQLite.NET?... 372 Vinculação a dados... 373 Vinculação a dados do Xamarin.Forms...374 Vinculação a um modelo de dados... 376 Usando INotifyPropertyChanged... 379 Código completo: Usando INotifyPropertyChanged...382 Entendendo os ViewModels e o MVVM...384 Vinculação a ViewModels e a modelos de dados...384 Vinculando um ListView somente de leitura...389 Vinculando um ListView editável... 390 Vinculando uma visão a outra visão...400 Usando o SQLite.NET...400 Instalando o SQLite no Windows Phone...402 Criando um banco de dados...402 Construindo o caminho do banco de dados...403 Criando uma tabela... 407 Criando a camada de acesso a dados... 411 Código completo: Criando uma DAL usando o SQLite.NET...421 Usando o ADO.NET... 424 Criando um banco de dados... 425 Criando uma tabela...426 Executando instruções SQL...426 Código completo: Usando o ADO.NET...428 Opções de criação do banco de dados... 430 Serviços web...431 Soluções empresariais de dados em nuvem... 432 Microsoft Azure... 432 IBM MobileFirst Platform Foundation... 433 Amazon Web Services (AWS)... 433 Resumo... 434
Sumário 13 Capítulo 8 Renderizadores personalizados...435 Quando usar um renderizador personalizado...436 Criando e usando um renderizador personalizado...436 Preparando o elemento personalizado... 437 Criando o renderizador personalizado... 439 Renderizador personalizado do Android...440 Código completo: Renderizador personalizado do Android...442 Renderizador personalizado do ios...444 Código completo: Renderizador personalizado do ios...446 Renderizador personalizado do Windows Phone...446 Código completo: Renderizador personalizado do Windows Phone...449 Qual renderizador e que visão serão personalizados?... 450 Resumo...451 Capítulo 9 Arquitetura multiplataforma...453 Código compartilhado e código específico de plataforma... 453 Manipulando a divergência... 454 Arquitetura de soluções Xamarin.Forms... 455 Arquitetura de soluções específicas de plataforma... 457 Biblioteca básica... 459 Portable Class Libraries (PCLs)... 461 Injeção de dependência...462 Usando DependencyService...463 Contêineres de DI de terceiros e open source...469 Projetos compartilhados... 470 Compilação condicional...471 Vinculação de arquivo... 472 Classes e métodos parciais... 473 Manipulando divergências de versões... 473 Resumo...474 Epílogo A arte do desenvolvimento de aplicativos no Xamarin...476