Seções iMasters
.NET + Desenvolvimento + Visual Studio

Windows Phone 7, indo além do hello world – Parte 01

Olá, pessoal, tudo bem?

Como todo mundo sabe, a Microsoft está lançando o Windows
Phone 7, que parece ser o grande trunfo da empresa pra brigar com o iPhone e com
os aparelhos móveis desenvolvidos em Android.

Para fugir um pouco daquele velho “Hello World!” que todo
mundo está cansado de ver, vamos construir uma aplicação um pouco mais complexa
e mais divertida.

Nossa aplicação será o Zodiac7, que permite ao usuário ver seu horóscopo diário no seu smartphone, clicando na imagem correspondente ao seu
signo.

Legal, não? Então vamos lá.

Para tornar o aprendizado mais fácil e para que o artigo não fique muito longo e cansativo, dividi o trabalho em 3
partes, ou seja, serão três artigos até que tenhamos desenvolvido todo nosso
aplicativo.

  • Parte 1: Criação do Projeto e Desenvolvimento da GUI
  • Parte 2: Desenvolvimento
    do nosso WCF (Windows Communication Foundation)
  • Parte
    3:
    Consumindo nosso WCF através da nossa aplicação
    e manipulação de eventos

 Bem, dito isso, vamos por a mão na massa.

Partindo do princípio de que você já tem o Visual Studio 2010
instalado, assim como o kit de desenvolvimento para Windows Phone 7, vamos
criar nosso projeto.

Abra o
Visual Studio 2010 -> New Project -> Visual C# -> Silverlight for
Windows Phone.

Escolha
a opção “Windows Phone Application”, dê um nome ao seu projeto e clique
em “OK”.

Depois disso, vamos ter a seguinte tela:

Temos duas perspectivas diferentes da aplicação.

Do lado esquerdo, a vemos em modo “design” e, do lado
direito, em modo “code”, onde escrevemos nosso xaml. Caso você não conheça xaml, visite este artigo do grande
mestre Macoratti.

Agora vamos criar a cara da nossa aplicação. Antes, baixe aqui o pacote de imagens que usaremos para representar cada signo do zodíaco em
nosso aplicativo. Depois de baixado, coloque a pasta com as imagens dentro da pasta do seu projeto. 

Vamos adicionar as imagens ao nosso projeto. Clique com o botão direito no seu projeto e escolha a opção Add -> New Folder.

Crie a pasta img, nela guardaremos as imagens da nossa aplicação.

Clique com o botão direito sobre a pasta img e escolha a opção Add -> Existing Item.

Adicione todas as imagens que iremos usar em nosso projeto.

Feito isso, vamos alterar algumas coisas no nosso código xaml. Localize o trecho abaixo e altere a propriedade “Text” das duas tags TextBlock.

Você pode colocar um texto de sua preferência.

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="24,24,0,12">
<TextBlock x:Name="ApplicationTitle" Text="O futuro na palma da sua mão" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="Zodiac 7" Margin="-3,-8,0,0" Style="{StaticResource PhoneTextTitle1Style}" Width="452" />
</StackPanel>

O que fizemos foi alterar o título da aplicação e da caixa de texto que aparece logo abaixo dele.

Salve as alterações e teremos o seguinte resultado:

Agora vamos definir o “corpo” da nossa aplicação.

É importante que, ao desenvolver para dispositivos móveis, você leve sempre em conta a usabilidade. Quanto mais fácil de usar, melhor será o aplicativo.

Então, vamos criar uma interface onde apareçam os doze signos do zodíaco e, quando o usuário tocar em um deles, o horóscopo daquele signo será exibido logo em seguida.

Localize o código:

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentGrid" Grid.Row="1">

 E, logo após, adicione o seguinte código:

<Image Name="iAries" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,24,0,0"  Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/aries.png" />
<Image Name="iTouro" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="180,24,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/touro.png" />
<Image Name="iGemeos" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,24,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/gemeos.png" />
<Image Name="iCancer" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,174,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/cancer.png" />
<Image Name="iLeao" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="176,174,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/leao.png" />
<Image Name="iVirgem" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,174,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/virgem.png" />
<Image Name="iLibra" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,332,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/libra.png" />
<Image Name="iEscorpiao" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="176,332,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/escorpiao.png" />
<Image Name="iSagitario" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,332,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/sagitario.png" />
<Image Name="iCapricornio" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,483,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/capricornio.png" />
<Image Name="iAquario" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="176,483,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/aquario.png" />
<Image Name="iPeixes" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,483,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/peixes.png" />

O que fizemos foi utilizar a tag “Image” para adicionar nossas imagens ao grid principal da aplicação.

Dentro da tag Image, setamos as seguintes propriedades que eu gostaria de destacar:

  • Name: damos um nome àquela tag
  • Cursor: dizemos qual tipo de cursor do mouse iremos usar quando ele passar pela imagem
  • Height e Width: definições de tamanho
  • Source: caminho onde a imagem está localizada
  • Margin: posicionamento da imagem em relação aos quatro lados do aparelho

Sobre o Margin, não se preocupe se você achar complicado fazer esse posicionamento via código, não há problemas. Você pode modificar a posição das imagens utilizando o mouse no modo “design”, a propriedade da tag é ajustada dinamicamente.

Então, depois de adicionar e de ajustar nossas imagens, teremos o seguinte resultado:

Para finalizar essa parte, vamos adicionar outro grid à nossa aplicação. Ele será responsável por exibir o horóscopo do signo selecionado pelo usuário.
Após fechar o ContentGrid, adicione o seguinte código:

<Grid x:Name="TextGrid" Grid.Row="1" Visibility="Collapsed">
<TextBlock Name="txtTituloPrevisao" Style="{StaticResource PhoneTextNormalStyle}" Width="452" FontSize="20"></TextBlock>
<TextBlock Name="txtPrevisao" Width="400" Height="500" TextWrapping="Wrap" FontSize="24" />
<Button Name="btnHome" VerticalAlignment="Bottom" Width="90" Height="90" Cursor="Hand" BorderBrush="Black">
<Button.Background>
<ImageBrush ImageSource="/Zodiac;component/img/back_button.png" Stretch="None" />
</Button.Background>
</Button>
</Grid>

O que fizemos aí foi:

  • Adicionar um grid não visível (Collapsed), que será exibido somente quando o usuário escolher um signo;
  • Adicionar um TextBlock que terá o título com o nome do signo escolhido;
  • Adicionar um TextBlock que exibirá o horóscopo escolhido. A propriedade TextWrapping permite que o TextBlock tenha quebra de linha;
  • Adicionar um botão “Voltar”.

E então teremos este resultado:

É claro que, para que essas informações apareçam, precisaremos utilizar um serviço que disponibilize isso para nós.

Como criar esse serviço e tratar as informações que vem dele através da internet é assunto para o próximo artigo; por hora, criamos nossa interface.

Espero que tenham gostado. Até o próximo!

Comente também

5 Comentários

Parabéns pelo artigo, estamos aguardando os próximos!!!

Otimo Artigo,
Quando voce vai postar os outros? =)

    Miqueias Lopes

    Esse fim de semana estou escrevendo eles.
    Não fiz antes porque estava sem tempo por causa de uns projetos.

    Abração!

Gostei da proposta Miqueias, embora não acredite em horoscupo, mas o que conta é aprender e aguardo ansioso pelo próximo artigo.

Abraço e parabéns

    Miqueias Lopes

    Valeu cara.
    Eu também não acredito em horóscopo, na verdade a idéia surgiu de uma aplicação semelhante que eu vi no Iphone.
    O próximo artigo sai essa semana.

    Abração!!!

Qual a sua opinião?