Truques & Dicas no Desenvolvimento para Windows Phone @ NetPonto

No passado sábado estive em Coimbra para mais um evento do NetPonto (aquela que considero já ser actualmente a melhor comunidade técnica Microsoft em Portugal), onde apresentei uma sessão sobre alguns Truques & Dicas no Desenvolvimento para Windows Phone que eu próprio utilizo no dia a dia nas minhas aplicações!

Os slides da minha sessão já se encontram publicados no SlideShare do NetPonto, e estão também aqui reproduzidos:

A nível de código, tudo o que apresentei colocarei sob o formato de aplicações de demonstração no Cimbalino Windows Phone Toolkit, disponível aqui! :)

Cimbalino Windows Phone Toolkit

Está disponível desde ontem o Cimbalino Windows Phone Toolkit, as minhas ferramentas pessoais no desenvolvimento de aplicações para Windows Phone!

O toolkit está dividido por projectos, cada um específico às capabilities disponíveis nas aplicações de Windows Phone.

Disponibilizei este toolkit em código aberto sob licença MIT no GitHub; a escolha do GitHub neste caso tem a ver com o facto que este me garante uma plataforma colaborativa superior ao disponibilizado actualmente no CodePlex!

Podem ainda instalar o toolkit via NuGet, utilizando as seguintes handles:

Nos próximos dias irei incluir aplicações de demonstração ao projecto e alguma documentação.

Entretanto quem quiser pode colaborar reportando bugs, dando sugestões e mesmo fazendo fork do projecto e alterando directamente o código! :)

Silverlight for Windows Phone Toolkit – Nov 2011

Já se encontra disponível a versão de Novembro do Silverlight for Windows Phone Toolkit!

A lista completa de novidades e correcções é relativamente extensa, e está disponível num artigo do Jeff Wilcox (Senior Software Developer na Silverlight Phone & Devices team).

Como de costume, o toolkit está disponível para download directo do MSI, package através do NuGet, e código fonte no Codeplex!

Nota: pessoalmente já detectei alguns problemas com esta versão, nomeadamente uma situação com o ListPicker que remove todas as transições das páginas após ter sido aberto; este bug já foi aqui reportado, e pretendo brevemente disponibilizar um patch aqui no blog para este problema!

Windows Phone Development @ Instituto Politécnico da Guarda

Ontem tive o prazer de apresentar um Workshop sobre Windows Phone Development no Instituto Politécnico da Guarda (IPG), aceitando com todo o gosto o convite que me foi feito pelo Prof. Carlos Carreto, coordenador do Mestrado em Computação Móvel leccionado nesta instituição.

Os slides que utilizei na minha sessão estão já publicados no SlideShare, e aqui reproduzidos:

Fica o meu agradecimento ao Prof. Carlos Carreto e ao IPG pelo convite.

Windows Phone Blue Book

Rob Miles é um dos melhores e mais divertidos oradores que alguma vez tive o prazer de escutar, mas mais do que isso, tem sido um dos que mais tem ajudado as comunidades de desenvolvimento!

À uns anos atrás ele lançou o C# Yellow Book que rapidamente se tornou uma referência essencial no desenvolvimento em C# e é actualmente utilizado no 1º ano do curso de programação do Department of Cumputer ScienceUniversity of Hull.

Mais recentemente lançou o Windows Phone Blue Book, um livro sobre o desenvolvimento para Windows Phone “Mango” com 248 páginas, acompanhado de 130Mb de ficheiros de código-fonte, demos e labs!

E tudo isto, disponibilizado de forma totalmente gratuita para uso pessoal! :)

@Coding4Fun, Channel9

ChevronWP7 Labs aberto!

Está (finalmente!) aberto o ChevronWP7 Labs, onde qualquer programador por uma pequena quantia (9 doláres, menos de 7 euros), pode desbloquear o seu Windows Phone para desenvolver aplicações!

Tudo o que precisam é de uma conta PayPal para fazerem o pagamento, uma conta Live para o registo, a ferramenta de desbloqueio criada para equipa do ChevronWP7, e o SDK do Windows Phone correctamente instalado.

Rapidamente poderão assim começar a desenvolver directamente no equipamento físico, sem necessidade de pagar os 99 dólares até agora necessários para desbloquear o mesmo! ;)

Impossível reduzir o número de localizações de uma aplicação Windows Phone

Esta infelizmente, descobri da pior forma: não é possível publicar uma actualização de uma aplicação Windows Phone, em que essa actualização tenha menos línguas suportadas que a versão anterior!

A imagem que podem ver em cima é da minha última actualização do CTT Objectos, que originalmente foi publicada em Português e Inglês.

Recentemente recebi um e-mail da equipa de certificação de aplicações da Microsoft, em que davam conta que não poderia publicar novas actualizações sem que TODA a interface em inglês estivesse correctamente traduzida! Ora acontece que a aplicação está de facto toda em inglês, excepto o texto retornado pelos serviços dos CTT, o qual não me será possível localizar facilmente.

Resolvi assim publicar uma actualização apenas e só em Português, e aí surgiu aquele erro…

Resultado: estou neste momento a criar uma nova publicação do CTT Objectos, o que causará todos os links partilhados serem inválidos e as reviews dadas à aplicação voltarem ao zero!!!

Fica assim o aviso: apenas publiquem aplicações com múltiplas línguas se tiverem a garantia de que as vão conseguir manter ao longo do tempo!

BitmapImage no Windows Phone “Mango”

Várias alterações foram feitas no Windows Phone “Mango” para melhorar a performance das aplicações, grande parte delas totalmente transparente para os programadores!

Uma delas tem a ver com o carregamento de imagens no BitmapImage: por omissão, todas as imagens são carregadas apenas quando necessárias, mas esse trabalho é feito no thread principal, causando o bloqueio (ou atraso!) da aplicação até que a imagem seja completamente carregada; ou seja, se a intenção era de fazer o carregamento das imagens num thread separado para não bloquear a interface, teriamos que implementar nós mesmos essa funcionalidade!

Neste momento, existe a possibilidade de deixar que o Silverlight no Windows Phone se encarregue de carregar as imagens assincronamente em threads separados do principal, recorrendo à propriedade BitmapImage.CreateOptions.

Esta propriedade do tipo BitmapCreateOptions tem o valor por omissão de DelayCreation, que tal como indicado anteriormente, carrega a imagem apenas quando esta for realmente necessária, mas no thread principal.

A título de exemplo, sabemos que este bloco de código:

<Image Source="http://domain/image.png" />

É equivalente a este:

<Image>
    <Image.Source>
        <BitmapImage CreateOptions="DelayCreation" UriSource="http://domain/image.png" />
    </Image.Source>
</Image>

Para forçar o carregamento assíncrono de imagens, devemos colocar neste propriedade o valor BackgroundCreation, em que o Silverlight se encarrega de criar e manter uma cache de imagens carregadas em background.

<Image>
    <Image.Source>
        <BitmapImage CreateOptions="BackgroundCreation" UriSource="http://domain/image.png" />
    </Image.Source>
</Image>

O ideal será mesmo colocar o valor das duas propriedades, “DelayCreation,BackgroundCreation” , forçando assim o Silverlight para carregar as imagens apenas quando forem necessárias, mas sempre num thread separado!

<Image>
    <Image.Source>
        <BitmapImage CreateOptions="DelayCreation,BackgroundCreation" UriSource="http://domain/image.png" />
    </Image.Source>
</Image>

Templarian Windows Phone Icons

Por esta altura já devem ter percebido o quando gosto do “Metro Design” do Windows Phone (agora também presente em outros produtos da Microsoft, como por exemplo o Windows 8 ou a Xbox)!

Um dos componentes mais interessantes em toda a plataforma, são os ícones utilizados na Application Bar das aplicações: em cor sólida preto ou branco (contrária à cor de fundo de forma a contrastar na totalidade), totalmente planos… muito simples, tal como todo o “Metro”.

Já há algum tempo que disponibilizei um conjunto de ícones que obtive directamente dos resources binários das aplicações nativas do Windows Phone, mas há várias alternativas criadas por designers de todo o mundo, grande parte deles disponibilizada de forma gratuita!

E é nesse sentido que hoje falo da colecção criada por Templarian, um designer que tem vindo a ganhar (merecida) fama devido à sua cada vez maior colecção de ícones para a Application Bar.

Uma nota: se há algum ícone que precisem e que não se encontre na já vasta colecção, nada como entrar em contacto com o Templarian via Twitter e pedir-lhe! ;)

Silverlight for Windows Phone Toolkit In Depth

O WindowsPhoneGeek.com tem sido uma das maiores fontes de informação para quem está ou pretende começar a desenvolver para o Windows Phone.

Recentemente, disponibilizou gratuitamente o e-Book “Silverlight for Windows Phone Toolkit In Depth“, escrito por Boryana Miloshevska, onde é apresentada a maior compilação de documentação sobre o Silverlight for Windows Phone Toolkit que já foi feita!

É sem dúvida um e-Book de referência essencial na biblioteca digital de qualquer programador Windows Phone que se preze! ;)