maratona windows phone 7
DESCRIPTION
Apresentação feita pela invista na maratona de wp7 em recife (2011)TRANSCRIPT
Maratona Windows Phone 7 powered by Microsoft
Student Partners
Márcio Abrantes
Software Engineer- ASP.NET 4.0- Windows Phone 7
@marcio_abrantes
Márcio Abrantes
Felipe Pimentel
Software Engineer- ASP.NET 4.0- Windows Phone 7
@FelipePimentell
Felipe Pimentel
Introdução aoWindows phone 7 “Mango”
Visão geral do Windows Phone Nova plataforma mobile da Microsoft. Foco no usuário final Nova interface – Metro
Interface também adotada no Windows 8. Utilização de HUBS Desenvolvimento .NET Windows Phone Marketplace.
Hardware do Windows Phone Padronização junto aos fabricantes. Mínimo: 256 MB RAM e 8 GB de storage Botões – Back (Voltar) , Start (Iniciar) e Search (Procurar) Tela – Multitouch capacitivo (800x480) Câmera – mínimo de 5 megapixels + flash Sensores e serviço
Wi-fi Accelerometer Compass (Bússola) Location (GPS) Speech (Reconhecimento de voz) Vibration Push Notifications
Arquitetura do Windows Phone
Ciclo de Vida de Desenvolvimento
VISUAL STUDIO
O que é o VISUAL STUDIO?
Um conjunto de ferramentas de desenvolvimento que permite aos desenvolvedores de software resolver problemas complexos e criar soluções inovadoras.
Baseia-se em três pilares principais:Desenvolvimento rápido de aplicativosColaboração eficaz em equipeExperiências de usuário inovadoras
O que posso fazer com o VS?
• Desenvolver Web Sites ASP.NET, AJAX.NET e Silverlight. • Impressionar com mídia e gráficos desenvolvidos com
o Windows Presentation Foundation. • Desenvolver aplicativos que estendem funções do
Office. • Desenvolver aplicações para Windows Phone.• Desenvolver jogos.• Desenvolver soluções de integração coorporativa com
Windows Communication Foundation e o Windows Workflow Foundation e muito mais...
Criando uma Solução
Criando a partir de templates
Interface Design
Interface Programação
Lógica de Programação
Estruturas de controle de fluxo if ... else
Comando condicional: executa um bloco de comandos se uma condição for verdadeira.
A cláusula else (condição falsa) é opcional.
if (idade >= 18){ Response.Write("Autorizado."); Response.Write("Sua idade é: " + idade);}else if (idade > 15 && idade < 18){ Response.Write("Somente com os pais."); Response.Write("Menor de 18 anos.");}else{ Response.Write("Não autorizado."); Response.Write("Menor de 15 anos.");}
Estruturas de controle de fluxo switch … case
Estrutura de decisão que seleciona um comando com base no valor de uma variável.
A cláusula default é opcional.
switch (sexo){ case "masculino": Response.Write("Homem"); break; case "feminino": Response.Write("Mulher"); break; default: Response.Write("Não informado"); break;}
Estruturas de Repetição
for Estrutura de repetição composta por três expressões:
Inicialização.Condição de parada.Atualização.
for (int i = 0; i < 10; i++) { Response.Write(i); Response.Write("<br />");}
Estruturas de Repetição
while Estrutura de repetição que realiza as operações
indicadas enquanto a condição especificada for verdadeira.
int i = 0;while(i < 10){ Response.Write(i); Response.Write("<br />"); i++;}
Estruturas de Repetição do ... while
Estrutura de repetição semelhante à anterior, porém as condições são verificadas ao final da execução.
As operações especificadas são executadas pelo menos uma vez. Necessita do caractere “;” ao final da estrutura.
int i = 0;do{ Response.Write(i); Response.Write("<br />"); i++;}while (i < 10);
Conversão DE TIPOS
// Exemplo Istring s = "123"; int i = s;Response.Write(i);
// Exemplo IIstring s = "123";int i = Convert.ToInt32(s);Response.Write(i);
// Exemplo IIIstring s = "123";int i = int.Parse(s);Response.Write(i);
// Exemplo Vstring s = "valor";int i = 0;if (int.TryParse(s, out i)){ Response.Write(i);}else{ Response.Write("inválido");}
// Exemplo IVstring s = "valor"; int i = Convert.ToInt32(s);Response.Write(i);
Estruturas de Repetição foreachEsta estrutura de repetição é uma variação
do for. Especifica uma variável auxiliar e a coleção
ou array cujos elementos serão percorridos.
int[] i = { 1, 3, 5, 7, 9 };foreach (int j in i){ Response.Write(j); Response.Write("<br />");}
Namespaces• Declarando um namespace
• Namespaces em cadeia
• Instrução Using
namespace Cadastro.Telas {public class TelaCliente {}
}
using System;using System.Data;using Cadastro.Telas;using Pessoa = Cadastro.Cliente;
namespace Cadastro {public class Cliente {}
}
Introdução ao xaml
O que é XAML?
• É uma linguagem de marcação.• Tecnologia de criação de interface do .NET
Framework.• Disponível desde o .NET Framework 3.0• Criação de interface para as plataformas:
– WPF (Windows Presentation Foundation)– Silverlight para Web– Silverlight para Windows Phone– Windows 8
Poderes e limitações do XAML
• É uma linguagem declarativa.• Mais usada para criar e instanciar objetos.• Templates• Data Binding• Animações/Efeitos de Transição • Há coisas que só podem ser feitas no XAML,
outras apenas no código e outras em ambas.
Sintaxe do XAML
• Elementos do objeto– Um elemento do objeto declara a instância de um tipo
(componente).– Para iniciar o objeto sempre começa com “<”, seguido do nome do
objeto e finaliza com “>”.– Para fechar um objeto com conteúdo, começa com “</”.– Para fechar um objeto sem conteúdo, termina com “/>”.
<StackPanel> <Button Content="Click Me"/>
</StackPanel>
Sintaxe do XAML
• Atributos (Propriedades)– Propriedades podem ser declaradas como
atributos no XAML.
<Button Background="Blue" Foreground="Red" Content="This is a button"/>
Sintaxe do XAML
<Button> <Button.Background>
<SolidColorBrush Color="Blue"/> </Button.Background> <Button.Foreground>
<SolidColorBrush Color="Red"/> </Button.Foreground> <Button.Content>
This is a button </Button.Content>
</Button>
• Sintaxe de propriedade do elemento– Algumas propriedade precisam ser declaradas
como elemento de objeto.
Sintaxe do XAML
<Button> <Button.Background>
<SolidColorBrush Color="Blue"/> </Button.Background> <Button.Foreground>
<SolidColorBrush Color="Red"/> </Button.Foreground> <Button.Content>
This is a button </Button.Content>
</Button>
• Sintaxe de propriedade do elemento– Algumas propriedade precisam ser declaradas
como elemento de objeto.
Elementos Contêiner
• Habilita criação complexas de layouts.• Facilita questão diversas do layout como
posicionamento e redimensionamento.• Todos elementos de objeto precisam estar em
pelo menos um Elemento Contêiner.• Alguns Elementos Contêiner são:
– Grid– Canvas– StackPanel.
Elementos Contêiner
• Canvas – Define uma área na qual os Elementos filhos podem definir coordenadas relativas a essa área.- Mais fácil de trabalhar com Posições X e Y.
<Canvas Width="640" Height="480" Background="White">
<Rectangle Canvas.Left="30" Canvas.Top="30" Fill="red"
Width="200" Height="200" /></Canvas>
Elementos Contêiner
• Grid– Define uma área
flexível que consiste em colunas e linhas..
<Grid Width="400" Height="300"> <Grid.ColumnDefinitions> …</Grid.ColumnDefinitions>
<Grid.RwDefinitions> ...</Grid.RowDefinitions>
//Restante dos elementos
</Grid>
Elementos Contêiner
• Grid
Elementos Contêiner
• StackPanel– Organiza os elementos filhos em uma
única linha que pode ser orientada horizontalmente ou verticalmente.
<StackPanel Margin="20"> <Rectangle Fill="Red" Width="50" Height="50" Margin="5" /> <Rectangle Fill="Blue" Width="50" Height="50" Margin="5" /><Rectangle Fill="Green" Width="50" Height="50" Margin="5" /> <Rectangle Fill="Purple" Width="50" Height="50" Margin="5" />
</StackPanel>
Data binding
Data Binding
• Disponibiliza uma forma simples para exibir dados no layout.
• Estabelece uma conexão entre o UI e um objeto de dados.
• Mudanças feito no UI ou diretamente no objeto, são refletidos em ambos lados.– Exemplo: Um usuário edita um TextBlock. O valor
atribuido a esse elemento é automaticamente atualizado no objeto de origem também.
Data Binding
• O Binding precisa especificar a origem e o destino.
Data Binding
• Exemplo:
<TextBox x:Name="MyTextBox" Text="Text" Foreground="{Binding Brush1}"/>
XAML
Código
MyColors textcolor = new MyColors(); textcolor.Brush1 = new SolidColorBrush(Colors.Red);MyTextBox.DataContext = textcolor;
Data Binding
• Formas de Binding:– One Way: Padrão, as alterações no objeto refletem no
UI, mas o inverso não acontece.– Two Way: Alterações feitas no objeto e no UI refletem
em ambos lados.– One Time: Alterações feitas em ambos lados não são
refletidas. Os dados são apenas enviados uma vez ao UI.
Data Binding
• Exemplo:
<TextBox x:Name="MyTextBox" Text="Text" Foreground="{Binding Brush1, Mode=TwoWay}"/>
XAML
Código
MyColors textcolor = new MyColors(); textcolor.Brush1 = new SolidColorBrush(Colors.Red);MyTextBox.DataContext = textcolor;
ISOLATED STORAGE
Isolated Storage
• Permite a armazenar dados no próprio Windows Phone.
• Toda ação de armazenamento e leitura de dados locais está restrita ao Isolated Storage.
• É mais seguro, reduz as chances de acessos não autorizados e erros.
Opções de armazenamento
• É possível armazenar:– Configurações: Gravar dados como
key/value (chave/valor) usando a classe IsolatedStorageSettings.
– Arquivos e Pastas: Gravar arquivos e pastas usando a classe IsolatedStorageFile.
– Dados relacionais: Gravar dados em um banco de dados local usando LINQ to SQL.
Opções de armazenamento
Opções de armazenamento
• Chave/Valor (IsolatedStorageSettings):
string NomeUsuario;
if( IsolatedStorageSettings.ApplicationSettings.TryGetValue<string>("NomeUsuario", out NomeUsuario)){ IsolatedStorageSettings.ApplicationSettings.Add("NomeUsuario", "José");
}
Código
Opções de armazenamento
• Arquivos/Pastas (IsolatedStorageSettings):Código
var store = IsolatedStorageFile.GetUserStoreForApplication()
store.CreateDirectory("MyApp1"); IsolatedStorageFileStream rootFile = store.CreateFile("InTheRoot.txt"); rootFile.Close();
if (store.FileExists(filePath)) { StreamWriter sw = new StreamWriter(
store.OpenFile( "InTheRoot.txt”, FileMode.Open, . . FileAccess.Write)); }
Opções de armazenamento
• LINQ to SQL:Código
var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems select todo; ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB);
CICLO DE VIDA
Ciclo de Vida
running
deactivated
dormantTombstoned
activated
Ciclo de Vida
• OnNavigatedTo– Chamado quando o usuário navega para a página.
• OnNavigatedFrom– Chamado quando o usuário sai da página.
Ciclo de Vida
• Desactived– Chamado quando o usuário:
• Pressiona o botão Start• Muda para outro aplicativo.
• Actived– Chamado quando o aplicativo retorna do estado:
• Dormant.• Tombstoned.
Ciclo de Vida
• Launching– Chamado quando o usuário:
• Abre o programa pela lista de aplicativos• Abre o programa via Tile.• Recebe uma notificação pedindo para abrir o aplicativo e ele aceita.
• Closing– Chamado quando o usuário aperta o botão “Back” do Windows
Phone para sair do aplicativo.
Ciclo de VidaQuando o usuário aperta em “Back” saindo do aplicativo.
Quando o aplicativo é aberto via lista, Tite ou Notification
Quando o usuário volta ao aplicativo apertando “Back” ou quando retorna de Tombstoned ou Dormant.
Quando o usuário aperta em Start ou seleciona outro aplicativo aberto.
PANORAMA E PIVOT
Panorama
• Oferece uma experiência única de ver controles, dados e serviços usando uma tela horizontal.
• Não fica limitado ao tamanho da tela do Windows Phone.• O usuário tem a liberdade de navegar para esquerda ou direita.
Panorama
Panorama
• PanoramaItem é o controle secundário que serve como contêiner para o conteúdo de um Panorama.
Pivot
• Uma forma rápida de gerenciar layout ou páginas.• O usuário tem a liberdade de navegar para esquerda ou
direita, mas não tem um pré-visualização da parte direita.
Pivot
Pivot
• PivotItem é o controle secundário que serve como contêiner para o conteúdo de um Pivot.
Também é possível navegar tocandonos títulos das páginas
WINDOWS PHONE 7Silverlight