Aumentato il limite di applicazioni gratuite pubblicabili sul Marketplace

Print Content | More

Chi segue il mio blog tramite feed RSS sarà arrivato al punto di odiarmi, dato il numero di post che ho pubblicato questa settimana Smile Purtroppo (o per fortuna, dipende dai punti di vista) è stata una settimana molto intensa sul fronte Windows Phone 7 e la novità di oggi non è da meno: ieri sera Microsoft ha distribuito una nuova edizione della sua newsletter rivolta a tutti gli iscritti al Marketplace, riassumendo i recenti fatti salienti che hanno interessato Windows Phone, ovvero l’annuncio della partnership con Nokia e le novità presentate al Mobile World Congress di Barcellona.

Ultimo annuncio, ma non meno importante, è che Microsoft ha ascoltato il feedback di numerosi sviluppatori, che ritenevano il numero massimo di 5 applicazioni gratuite pubblicabili sul Marketplace troppo basso. Ora questo limite è stato portato a 100, un numero che dovrebbe decisamente soddisfare le esigenze di tutti (sia che si tratti di sviluppatori indipendenti che di vere e proprie software house).

Un’altra novità è la modifica di una delle regole applicate in fase di certificazione: se prima l’inserimento di informazioni di contatto nella vostra applicazione era obbligatorio (pena il rifiuto), ora è altamente consigliato ma non è più necessario. Il consiglio (sia da parte mia che da parte del team di Windows Phone) è di includere sempre e comunque questa informazioni, dato che migliorano l’esperienza d’uso dell’utente: se però doveste decidere di non includerla per qualsiasi motivo, non rischierete più di vedere la vostra applicazione bocciata.


Windows Phone , Microsoft , Marketplace

0 comments

Windows Azure Community Day

Print Content | More

customLogo

DotNetLombardia, community lombarda a cui sono molto legato e con cui spesso ho collaborato attivamente, ha organizzato un community day dedicato completamente a Windows Azure, la piattaforma per il cloud di Microsoft. L’evento si terrà il 7 Marzo 2011 presso la sede di Microsoft Italia a Segrate.

L’agenda della giornata coprirà più o meno tutti gli aspetti che coinvolgono Azure: dall’utilizzo dello storage a quello di SQL Server, passando per l’utilizzo della piattaforma con alcuni celebri strumenti Microsoft, come Sharepoint e TFS.

Mi sarebbe piaciuto molto partecipare, il cloud è un argomento molto interessante e molto attuale, che merita di essere approfondito come si deve: purtroppo la data dell’evento coincide con il mio rientro dal summit MVP, per il quale sarò già fuori azienda per una settimana intera.

Trovate tutti i dettagli e il form di registrazione sul sito ufficiale dell’evento: se avete modo di partecipare, mi raccomando, non perdetevi questa opportunità! Vi ricordo infatti che l’evento è completamente gratuito.


Azure , Microsoft , DotNetLombardia

0 comments

Rilasciato a sorpresa un pre-update di Windows Phone 7

Print Content | More

Inaspettatamente (se escludiamo qualche rumors trapelato ieri mattina sui siti di settore) Microsoft ha rilasciato un primo aggiornamento per Windows Phone 7: non si tratta però di NoDo (nome in codice del tanto atteso update che introduce il copia & incolla), ma di un pre-update che apporta delle migliorie al meccanismo di aggiornamento di Windows Phone 7, in previsione dei futuri update più sostanziosi. In realtà, diverse persone su Twitter hanno riportato di aver notato anche un miglioramento nelle performance e nella fluidità dopo l’update.

L’aggiornamento (il cui numero di versione è 7.0.7008.0) è distribuito tramite Zune: collegando il telefono al computer e selezionando Settings – Device – Update in Zune darete avvio alla procedura di backup e update del telefono, la quale richiederà un po’ di tempo, a seconda di quanti contenuti avete attualmente sul telefono.

Dai primi commenti a caldo su Internet, la procedura è semplice da portare a termine e la maggior parte delle persone è riuscita ad aggiornare con successo il proprio device. In realtà, qualche intoppo qua e la c’è stato: attualmente, sembra che i Samsung Omnia 7 abbiano qualche problema in più rispetto agli altri modelli. Sono state riportate infatti diverse segnalazioni di possessori di questo device la cui procedura si è bloccata durante il backup, impedendo loro perciò di completare l’aggiornamento. Tale problema sembra essere legato ad una specifica versione del firmware installato su alcuni device: Microsoft ne è già al corrente e si sta mobilitando per risolvere la cosa.

Aggiornamento: stando ad un articolo pubblicato da MobileTechWorld sembra che il problema non sia legato al firmware, ma allo spazio disponibile nello storage del device. Sembra infatti che molte persone siano riuscite ad aggiornare il loro Samsung Omnia 7 dopo un hard reset, che come sapete elimina tutti i dati presenti sul telefono. Microsoft, tramite una comunicazione da parte del supporto, ha riferito che probabilmente entro i prossimi 3 giorni rilasceranno un nuovo update che risolverà il problema e si installerà correttamente su tutti i device. Nel frattempo, è sconsigliato a tutti i possessori di Samsung Omnia 7 di procedere con l'aggiornamento, dato che in alcuni sporadici casi l'operazione ha causato il "brick" del device, ovvero un blocco totale non risolvibile in autonomia dall'utente, ma che richiede l'intervento di un centro di assistenza.

L’altro intoppo è che sembra che non tutti i device abbiano ricevuto l’update: alcuni telefoni (tra cui il mio) infatti non rilevano alcun aggiornamento quando vengono collegati a Zune. Fortunatamente, dovrebbe trattarsi solamente di una questione di timing (il team di Windows Phone ha annunciato sul suo blog che l’update non sarebbe stato distribuito in maniera uniforme), quindi si tratta solo di avere di un pochino di pazienza.

Vi ricordo inoltre (come spiegato in questo articolo su MobileTechWorld) che gli operatori telefonici, durante la fase di testing, hanno la possibilità di ritardare la distribuzione di un solo aggiornamento: ciò significa che, anche fosse questo il caso, NoDo non subirà nessun ritardo da parte dei carrier.

Aggiornamento: seguendo le discussioni su Twitter nel corso della giornata, è emerso come il problema dell’update non disponibile venisse riscontrato soprattutto dagli utenti in possesso di un LG Optimus 7 acquistato presso Vodafone. In serata Vodafone ha ufficialmente confermato questa ipotesi, annunciando tramite Twitter che l’update verrà rilasciato ai propri utenti settimana prossima. Come dicevo poco fa, quindi, si tratta solo di avere un pochino di pazienza Smile

Dal punto di vista dello sviluppo nulla cambia: restano valide perciò le considerazioni fatte su come dobbiamo preparare le nostre applicazioni in vista di NoDo.


Windows Phone , Microsoft

0 comments

Silverlight Toolkit February Update

Print Content | More

Tempo di aggiornamenti per Windows Phone, non solo per i tool di sviluppo veri e propri ma anche per il Silverlight Toolkit, preziosissima libreria di controlli disponibile su Codeplex.

Rispetto alle due release precedenti  si tratta di un update minore, dato che aggiunge solamente due nuovi controlli (che non sono realmente nuovi, ma erano già disponibili a parte sui blog Microsoft) e corregge una serie di bug riscontrati nei controlli già esistenti (molto lavoro è stato fatto sul controllo LongListSelector). Altra novità è l’introduzione di una versione in VB.NET del progetto di esempio allegato al toolkit, che mostra come utilizzare i vari controlli.

Il toolkit è disponibile in due versioni: autoinstallante (che installa la documentazione e le DLL nella cartella C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Toolkit\Feb11, nel caso abbiate un sistema operativo a 32 bit dovete togliere (X86) dalla cartella Program Files) e file compresso, contenente tutti i sorgenti e un progetto di esempio. Potete scaricarle dal sito http://silverlight.codeplex.com

Ma vediamo brevemente le novità!

TiltEffect

Avete presente quell’effetto che viene applicato su quasi tutti gli elementi dell’interfaccia di Windows Phone quando selezionate un elemento? L’oggetto (sia esso un pulsante, un testo o un immagine) si sposta in obliquo, così da dare un feedback visivo all’utente dell’operazione. Ecco, questo effetto si chiama TiltEffect e il controllo in questione nasce con lo scopo di dare a tutti gli sviluppatori la possibilità di implementarlo facilmente in tutte le loro applicazioni. Come anticipato nell’introduzione, non si tratta di una novità in senso assoluto: la documentazione MSDN Microsoft conteneva già informazioni su come crearlo e utilizzarlo. La differenza è che prima bisogna importare e/o creare a mano tutte le classi necessarie, mentre ora tutto il necessario è inserito nel toolkit ed esposto sotto forma di Attached Property (ovvero una proprietà che può essere “innestata” ad un controllo già esistente).

Il suo utilizzo è molto semplice: una volta aggiunta una reference nel progetto alla libreria Microsoft.Phone.Controls.Toolkit, dobbiamo dichiararne il namespace nello XAML della nostra pagina:

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

A questo punto ci basta impostare, a livello della classe PhoneApplicationPage, la proprietà TiltEffect.IsTiltEnabled a True come nell’esempio:

<phone:PhoneApplicationPage 
x:Class="PhoneToolkitSample.Samples.TiltEffectSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" 
Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"
toolkit:TiltEffect.IsTiltEnabled="True">

In questo modo automaticamente tutti i controlli all’interno della pagina che offrono la possibilità di essere selezionati (un pulsante, l’elemento di una ListBox, un checkbox) beneficieranno dell’effetto Tilt alla pressione.

E se volessimo disabilitarlo per alcuni controlli? Ci basta usare in questo caso la attached property TIltEffect.SuppressedTilt, da associare in questo caso solamente a quei controlli che vogliamo escludere, come nell’esempio:

<TextBlock Style="{StaticResource PhoneTextNormalStyle}"
TextWrapping="Wrap"
Text="Example Text"
toolkit:TiltEffect.SuppressTilt="True"
/>

Attenzione! Anche se non in maniera così drastica, il TiltEffect ha comunque un impatto negativo sulle performance dell’applicazione, soprattutto se la pagina in cui la utilizzate contiene tanti controlli che lo supportano. Usatela con cautela, limitandovi ad attivarla solo per quei controlli con i quali l’utilizzo dell’effetto da veramente un valore aggiunto all’esperienza d’uso della nostra applicazione (ad esempio, il feedback di utilizzo di un controllo CheckBox è efficace anche senza TiltEffect, al contrario di un controllo Button).

PerformanceProgressBar

Su questo controllo non mi dilungherò nei dettagli, dato che è lo stesso identico inserito nel toolkit Coding 4 Fun di cui vi ho parlato in questo post. Vi ricordo solo che lo scopo di questo controllo è di fornire un’implementazione alternativa della ProgressBar di Silverlight, più performante dato che non utilizza il thread principale che gestisce la UI per elaborare le animazioni.

Questa volta non troverete un progetto di esempio, dato che, come vi ho già ricordato, è incluso nel pacchetto completo contenente il codice sorgente. Il nome del progetto è PhoneToolkitSample.


Windows Phone , Microsoft , Windows Phone Toolkit

1 comments

Piccolo spazio pubblicità

Print Content | More

Solitamente non mi piace parlare di me, però mi sembrava carino segnalarvi alcune attività che mi hanno visto / mi vedranno coinvolto in questo periodo.

Intervista su Microsoft Feed

Microsoft Feed, celebre portale dedicato al mondo Microsoft, ha pubblicato una mia intervista sulla mia (brevissima) esperienza da MVP e con il mondo delle community. Se avete 5 minuti da perdere e sapere qualcosa di più su di me, potete leggerla all’indirizzo http://microsoftfeed.com/2011/meet-matteo-pagani-device-application-development-mvp-from-italy/

Concorso WP7 Factor

Ricordate il concorso WP7 Factor, di cui vi ho parlato questo tempo fa? Con mia grande felicità, mi sono aggiudicato lo Zune Pass annuale messo in palio questa settimana, grazie a Citycam Campobasso, una delle mie applicazioni della serie Citycam. Un grazie a Microsoft e a MSDN Italia per questo graditissimo regalo: chi mi segue su Twitter sa che sono diventato “Zune Pass dipendente”, dato che lo reputo uno dei migliori servizi musicali in assoluto, soprattutto se avete un telefono Windows Phone.

Vi ricordo che il concorso è ancora aperto: le estrazioni settimanali andranno avanti fino ad Aprile, per poi lasciare spazio alla fase finale che metterà in palio sostanziosi buoni acquisto da Media World. I dettagli li trovate in questo post.

MVP Summit 2011

Come ogni anno, tra due settimane avrà inizio a Redmond il Summit MVP, una full immersion di tre giorni fatta di sessioni, conferenze e tavole rotonde con i vari team di sviluppo. Anche io sarò della partita e sono decisamente elettrizzato all’idea: sia perchè per me sarà la prima volta in America, sia perchè sarà una bellissima occasione di crescita personale e professionale; sarò a contatto con esperti da tutto il mondo e con le persone che hanno creato le tecnologie con cui lavoro e mi “diverto” tutti i giorni. Con me ci saranno anche tanti amici MVP italiani nonchè qualche collega: tutti noi MVP di Gaia infatti partiremo alla volta di Seattle Smile Prometto di raccontarvi tutto (o quasi, il contenuto delle sessioni è sotto NDA Smile) al mio ritorno!


Windows Phone , Microsoft , WP7 Factor , Microsof Feed , MVP Summit

0 comments

Le novità del primo grande update di Windows Phone al Mobile World Congress

Print Content | More

MWC

Come anticipato nel post precedente, nella giornata di Lunedì si è aperto il Mobile World Congress a Barcellona, uno degli eventi annuali più importanti per il mercato mobile. Microsoft non poteva mancare e lo ha fatto alla grande: Steve Ballmer ha infatti presentato le novità che verranno introdotte con il primo grande update di Windows Phone. Uso questo termine perchè, al contrario dell’imminente update (che si può considerare una minor release, dato che copia & incolla a parte, si limita a migliorare alcuni aspetti di usabilità e a sistemare alcuni bug), la carne al fuoco è veramente tanta.

Il keynote è stato sicuramente d’impatto, dato che Microsoft non si è limitata a parlare delle novità ma le ha mostrate dal vivo, presentando un telefono con installata una versione beta del sistema operativo. Ma vediamo insieme di cosa si è parlato: per ogni feature (dove possibile) trovate un filmato esplicativo.

Release del primo update

La gestazione del primo update di Windows Phone è stata più lunga del previsto: inizialmente previsto per Gennaio, posticipato a metà Febbraio secondo i rumors, ora abbiamo un’indicazione più precisa da parte di Microsoft. Non c’è ancora una data vera e propria, il periodo di rilascio però dovrebbe essere intorno ai primi di Marzo. Vi rimando a questo post per i dettagli sul contenuto di questo update.

SkyDrive e Office

SkyDrive (la piattaforma di storage on the cloud di Microsoft) è già adesso parzialmente integrata con Windows Phone: pensiamo a OneNote oppure alla possibilità di caricare le foto scattate con la macchina fotografica direttamente sul cloud. L’update porterà l’integrazione con SkyDrive ad un nuovo livello: Office infatti supporterà SkyDrive non solo per OneNote, ma per qualsiasi tipo di documento. Sarà possibile accedere alle cartelle presenti nel nostro spazio di storage, aprire i documenti memorizzati, modificarli, salvarli, aggiungere note e commenti.

Si tratta sicuramente di una novità molto gradita, dato che al momento, non essendoci modo di utilizzare Windows Phone come dispositivo di storage, l’unico modo per passare un documento di Office dal computer al telefono e viceversa è usare la mail (oppure un servizio di storage online come Dropbox in combinazione una delle tante app disponibili che vi si interfacciano come BoxFiles).

Twitter

Microsoft, con il paradigma “al centro l’utente” che è alla base di Windows Phone, ha cambiato il modo in cui si ricercano le informazioni sul nostro telefono: le altre piattaforme utilizzano un approccio “app-centrico”, ovvero si demanda qualsiasi attività “extra” (che non sia ad esempio consultare la rubrica o fare una telefonata) ad un’applicazione esterna. Ecco perciò che se voglio scrivere su Twitter c’è un app, se voglio vedere gli ultimi update su Facebook c’è un app, e così via.

In Windows Phone invece, soprattutto per quanto riguarda la parte social, tali informazioni sono state incorporate nelle applicazioni esistenti: possiamo consultare le novità di Facebook direttamente dalla rubrica, caricare una foto su Facebook direttamente dalla macchina fotografica e così via. Personalmente apprezzo molto questo approccio: io stesso mi ritrovo ad utilizzare il client Facebook per Windows Phone solo per quelle poche funzioni che non sono supportate dall’hub People (come la gestione dei messaggi privati e delle richieste di amicizia).

L’update di Windows Phone introdurrà il supporto nativo a Twitter: non ci sono ancora dettagli sull’implementazione, è probabile però che verrà adottata una soluzione “ibrida” stile Facebook (integrazione dei flussi con gli update direttamente nella rubrica e gestione degli aspetti avanzati, come ad esempio la ricerca di un hashtag, demandata ad app di terze parti).

Internet Explorer 9

Attualmente il browser di Windows Phone è sicuramente uno degli aspetti più “deboli” del sistema operativo (anche se devo dire che non mi ha mai dato problemi), principalmente per il mancato supporto alle tecnologie di ultima generazione come HTML5. Il nuovo update vedrà l’introduzione della versione mobile di Internet Explorer 9, che condivide lo stesso core del fratello maggiore dedicato ai desktop.

La cosa molto interessante è che, esattamente come la versione per PC, Internet Explorer 9 sarà in grado di sfruttare l'accelerazione hardware del telefono, per migliorare la qualità e le performance delle applicazioni web (in particolar modo di quelle che fanno un uso intensivo di grafica). Avete presente la demo dell’acquario realizzata in HTML5, che mostra un numero variabile di pesci animati? Ecco, la stessa demo (utilizzata nelle varie presentazioni di IE9 per mostrare l’accelerazione hardware all’opera) è stata mostrata su Windows Phone con un frame rate di tutto rispetto, soprattutto se paragonato a quello ottenuto dall’iPhone 4 con Safari (che supporta HTML5 ma senza accelerazione).

Multitasking

Microsoft ha deciso di ascoltare utenti e sviluppatori, implementando una delle feature più richieste: parliamo del multitasking, ovvero la capacità di far girare più applicazioni contemporaneamente. Partiamo dicendo che la demo mostrata al keynote è stata veramente impressionante. Joe Belfiore ha mostrato il passaggio da un gioco (Rise Of Glory) alla home di Windows Phone e viceversa in tempi praticamente istantanei, al contrario di quanto avviene oggi dato che le applicazioni devono reinizializzarsi e recuperare dal tombstone i dati memorizzati.

Inoltre, è stata svelata la presenza di un task manager, che si attiva mantenendo premuto il pulsante Back: tale funzione permette di scorrere nello stack delle pagine di Windows Phone e andare ad aprire direttamente quella interessata. Si tratta di un’aggiunta decisamente ben gradita, dato che attualmente se vogliamo tornare ad una specifica app aperta in precedenza l’unico modo è quello di scorrerle tutte con il tasto Back fino ad arrivare a quella desiderata.

Multitasking non vuol dire però solamente passaggio veloce da un’app all’altra: durante la demo è stata mostrata un’applicazione musicale di terze parti (probabilmente una Internet Radio) in grado di continuare a riprodurre la musica anche durante lo switch ad un’altra applicazione.

Purtroppo al momento non è stato dato ancora alcun dettaglio implementativo (d’altronde non era neanche l’occasione adatta, il Mobile World Congress è un evento rivolto ai consumatori più che agli sviluppatori): ancora non si sa come sarà possibile sospendere l’applicazione in modo che possa sfruttare il multitasking, o ancora come sarà possibile veicolare alcuni aspetti (riproduzione dell’audio, ad esempio) anche ad applicazione chiusa. Mi aspetto un modello simile a quello implementato in iOS 4 (per i dettagli potete leggere questo mio post di qualche tempo fa), dato che un vero multitasking introdurrebbe tutta una serie di problemi di performance non indifferenti (e inoltre andrebbe contro tutti gli aspetti positivi introdotti dall’architettura attuale di Windows Phone, come la garanzia che tutte le applicazioni di terze parti abbiano a disposizione le stesse risorse minime).

Inoltre, alcuni tweet e commenti da personaggi vicini al mondo Microsoft hanno dichiarato come il tombstoning avrà ancora la sua importanza, facendo capire così che l’architettura attuale non verrà stravolta ma semplicemente migliorata.

XBox Connector

Ultima chicca mostrata al keynote è l’integrazione con XBox, che permette a un device Windows Phone di interagire con il gioco, per essere usato come sorta di controller. Il filmato ripdotto durante l’evento mostrava una persona giocare a Kinect Sports (nello specifico, il gioco in cui dobbiamo colpire le palle che ci vengono lanciate addosso), mentre un suo amico tramite Windows Phone decideva la traiettoria con cui le palle dovevano essere lanciate.

Anche qui, nessun dettaglio tecnico, però il filmato faceva decisamente la sua scena Smile

In conclusione

Sono rimasto molto soddisfatto da questo keynote: le novità presentate sono state tutte molto interessanti e, soprattutto, ben implementate e ben pensate. Purtroppo al momento non c’è nessuna data di rilascio, nè per quanto riguarda l’update vero e proprio (si sa solo che vedrà la luce entro il 2012), nè per quanto riguarda eventuali release preliminari di una versione aggiornata dei tool di sviluppo. Sono curioso di sapere inoltre come sarà la politica di Microsoft riguardo ad essi: verranno rilasciate delle beta intermedie per darci la possibilità di provare le nuove feature? Se si, come potranno convivere cone l’attuale versione dei tool (che sarà necessario mantenere per molti di noi per continuare a sviluppare applicazioni pubblicabili sul Marketplace)?

Direi però che si tratta di domande fin troppo specifiche, considerando che siamo al primo annuncio: sicuramente nei prossimi mesi ne sapremo qualcosa di più!


Windows Phone , Microsoft , Mobile World Congress , Multitasking , Internet Explorer 9 , SkyDrive , Office , Twitter

6 comments

Nokia e Microsoft: un’alleanza fuori dagli schemi

Print Content | More

nokiaconversations_980x100

Se oggi fosse stato il 1° Aprile  avreste potuto pensare tranquillamente ad una delle tante burle della rete. Eppure è vero: i rumors che si sono fatti sempre più intensi negli ultimi giorni avevano già fatto intuire che qualcosa bolliva in pentola e che non si trattava di uno dei tanti “avvistamenti di UFO” che circolano in rete.

Venerdì mattina il mondo mobile è stato scosso dall’annuncio ufficiale di Nokia, che ha deciso di abbandonare le sue piattaforme Symbian e Meego per il settore smartphone, per dare il benvenuto a Windows Phone! Microsoft, il colosso del software, e Nokia, il colosso dei cellulari, si sono unite per creare un terzo ecosistema, che cercherà di vincere lo strapotere di Apple e Google, attualmente i leader del mercato degli smartphone.

Da sviluppatore Windows Phone, la notizia mi ha decisamente elettrizzato. Se Nokia e Microsoft svolgeranno bene il loro lavoro insieme, il futuro per Windows Phone sarà decisamente roseo. Vediamo perchè.

Il marketing è tutto al giorno d’oggi

Microsoft è un’azienda eccezionale per quanto riguarda lo sviluppo software, un po’ meno quando si tratta di promozione dei proprio prodotti. La campagna marketing di Windows Phone in Italia ne è un esempio: la strategia di marketing è stata molto meno incisiva ed efficace rispetto a quella attuata dalla concorrenza. Microsoft, inoltre, a livello di immagine paga un po’ lo scotto di Windows Mobile, ottimo sistema operativo per quanto riguarda il mondo business / industriale, poco apprezzato invece dai clienti consumer dopo le novità introdotte con l’arrivo di iPhone prima e Android dopo. Windows Phone, come sappiamo, è qualcosa di completamente diverso e capace di rivaleggiare a testa alta con la concorrenza: molte persone, un po’ per ignoranza un po’ per mentalità chiusa, sono però convinte che non si tratti di un prodotto degno di considerazione, alla luce dei problemi che aveva il suo predecessore.

L’accordo con Nokia potrebbe aiutare Microsoft a “svecchiare” questa sua immagine e a far apprezzare anche agli scettici (o a chi è sempre stato fedele a Nokia) le qualità del suo nuovo sistema operativo. D’altro canto, Microsoft potrebbe invece aiutare Nokia a scrollarsi di dosso l’immagine di una società ormai capace di essere competitiva solo nel mercato dei cellulari di fascia bassa e non in quello degli smartphone, a causa dell’adozione di un sistema operativo (Symbian) di molte spanne indietro rispetto alla concorrenza e non più all’altezza del mercato attuale.

Una spinta reciproca a migliorarsi

Microsoft, con Windows Phone, porta il suo bagaglio immenso nello sviluppo software, nella realizzazione di sistemi operativi, nel supporto agli sviluppatori e nella creazione di tool e linguaggi di sviluppo eccellenti; Nokia, d’altro canto, vanta un’esperienza nel campo della telefonia e nella produzione di hardware di altissimo livello.

Grazie a questo accordo, avremo il meglio dei due mondi e la piattaforma stessa ne guadagnerà: Nokia spingerà per avere un OS sempre migliore e questo porterà Microsoft a lavorare sempre di più su Windows Phone, colmando così nel giro di poco tempo le lacune rispetto ai prodotti concorrenti. Inoltre, Nokia e Microsoft hanno già annunciato alcuni esempi di cosa vorrà dire “unire le forze” : ecco così che Nokia beneficierà di tutti i vantaggi derivanti dall’utilizzo di Bing come piattaforma di ricerca, mentre Microsoft potrà sfruttare l’esperienza di Nokia con la navigazione satellitare (vedi Ovi Maps) per integrare nuove funzionalità avanzate all’interno di Bing Maps.

11x0211nokiaconcept

Applicazioni, applicazioni e ancora applicazioni

Questo è l’aspetto che interessa di più noi sviluppatori ed è quello che mi elettrizza più di tutti: Windows Phone è un’eccezionale piattaforma di sviluppo e il numero di applicazioni disponibili cresce ogni giorno di più. Purtroppo però le grandi aziende non stanno ancora investendo al 100% su Windows Phone: trattandosi di una nuova piattaforma, la sua diffusione non è ancora ai livelli di iPhone o Android, perciò le aziende sono più restie a investire soldi per portare i propri prodotti sulla piattaforma Microsoft.

La partnership con Nokia ribalta completamente questo scenario, accellerando notevolmente i tempi previsti di diffusione di Windows Phone: se Google ha impiegato qualche anno per ingranare e solo da qualche mese si inizia a vedere una maggiore diffusione di applicazioni per Android, per Microsoft le cose potrebbero cambiare notevolmente già entro la fine dell’anno. Nokia ha una rete di distribuzione enorme, molto più vasta della concorrenza, nonchè una base di utenti affezionata ai suoi prodotti molto ampia. Tutto questo si tramuterà in una richiesta di applicazioni sempre maggiore e le grosse aziende non vorranno farsi scappare l’occasione: ecco perciò che lo sviluppo di applicazioni per Windows Phone potrebbe diventare un business importante per molte software house e quindi di conseguenza aumentare la domanda di sviluppatori con una certa esperienza nel settore.

Anche per gli sviluppatori indipendenti si aprono scenari molto interessanti: Nokia ha già annunciato che l’Ovi Store si fonderà con il Marketplace, per dare vita ad un unico store. Questo si traduce in un notevole aumento del numero di possibili acquirenti delle applicazioni da noi sviluppate.

Microsoft ha confermato che i tool di sviluppo rimarranno quelli attuali, tramite un post sul blog ufficiale del team di sviluppo. Non ci possono promettere che non sarà necessario fare niente per rendere le nostre applicazioni compatibili anche con i futuri Nokia basati su Windows Phone: non perchè le applicazioni per Nokia utilizzeranno un linguaggio differente o dei tool separati, ma probabilmente semplicemente perchè nel prossimo futuro i tool di sviluppo subiranno un processo di revisione, per introdurre nuove API e per adattarsi ai nuovi device. Ne abbiamo avuto un esempio con il recente update dei tool di sviluppo, che introduce delle migliorie ai controlli Panorama e Pivot per il supporto al copia & incolla, le quali richiedono però una ricompilazione dell’applicazione.

Qualche punto oscuro?

Ha lasciato un po’ perplessi una dichiarazione del CEO di Nokia, in cui ha confermato che la loro azienda avrà la possibilità di personalizzare i device Windows Phone. Questa affermazione ha spaventato un po’ tutti gli sviluppatori e gli addetti ai lavori: uno dei punti di forza di Windows Phone è proprio quello di unire il meglio dei mondi Apple / Google, offrendo tanti device diversi (e quindi maggior scelta) ma un’unica piattaforma che consente a Microsoft di avere il controllo completo sugli update.

In realtà, le informazioni a riguardo al momento sono praticamente nulle, quindi è inutile fasciarsi la testa. Per quello che ne sappiamo, l’accordo potrebbe prevedere la personalizzazione del device solo su aspetti "marginali”, che non hanno impatto sul processo di update e sulle performance delle applicazioni. Ad esempio, Nokia potrebbe decidere semplicemente di sostituire le suonerie predefinte con delle altre oppure di sviluppare delle applicazioni particolari utilizzando l’Hybrid SDK (il kit di sviluppo in possesso ai vendor, che da loro la possibilità di fare uso di API non disponibili al pubblico).

Quale futuro?

Il mio augurio è che sia Nokia che Microsoft non commettano errori lungo il percorso e che le cose vadano liscie per entrambe le aziende. Se tutto andrà come previsto, il futuro che si prospetta è decisamente eccitante, sia che siate dei semplici appassionati di mobile piuttosto che sviluppatori di applicazioni Windows Phone. La nascita di un terzo ecosistema capace di competere come numeri di vendita con Google e Apple potrebbe dare uno scossone ad un mercato al giorno d’oggi piuttosto stagnante, in cui è sempre più difficile innovare e realizzare qualcosa di nuovo.

Vi lascio con due link ufficiali:

Vi ricordo infine che oggi inizierà il Mobile World Congress di Barcellona, una delle più grandi fiere mondiali (se non la più grande) dedicata al mondo mobile. Microsoft ovviamente sarà della partita, con tanto di keynote di Steve Ballmer. Cosa verrà presentato non è ancora dato di saperlo: maggiori informazioni sulla data di rilascio del primo update? Qualche indiscrezione sulla roadmap dei futuri update di Windows Phone? Seguite il mio blog e lo saprete Smile


Windows Phone , Nokia , Microsoft

9 comments

HackItaly: un’esperienza incredibile!

Print Content | More

hackitaly

Un paio di settimane fa, chiacchierando con un losco figuro che si fa chiamare Genio Del Male Smile, sono venuto a conoscenza di HackItaly, un evento che si è tenuto Sabato 5 febbraio nella prestigiosa sede della Blend Tower a Milano, di fronte alla Stazione Centrale. Di cosa si è trattato? Di un evento community un po’ diverso dal solito, fuori dagli schemi a cui siamo solitamente abituati (sessioni, tavole rotonde, ecc.). Si è trattato infatti di un contest di sviluppo: diverse aziende hanno contribuito all’evento mettendo a disposizione le loro API (che potevano spaziare da tool di sviluppo a servizi REST), che dovevano essere utilizzate nel corso della giornata per realizzare un’applicazione di qualsiasi tipo (web, mobile, desktop, ecc.) e con qualsiasi linguaggio (.NET, Objective-C, Java,. ecc.).

Ogni azienda ha messo in palio dei succosi premi, che sono stati assegnati ai migliori progetti che hanno fatto uso delle loro API. Nulla vietava di utilizzarne più di una e di combinarle tra di loro: in questo modo, si concorreva a vincere più premi. Da ciò si deduce che non esisteva un unico progetto vincitore della giornata, ma tanti vincitori a seconda delle API utilizzate nelle proprie applicazioni.

Ho avuto la fortuna e il piacere di partecipare insiema a Gioffy e a Igor Damiani (menzione d’onore a Igor Antonacci, che doveva essere anche lui della partita ma purtroppo l’influenza l’ha bloccato a letto), con i quali abbiamo sviluppato un’applicazione che ha fatto uso di tre delle API disponibili:

  • I tool di sviluppo per Windows Phone 7, presentati da Microsoft.
  • Un servizio per accedere ad un catalogo musicale di musica in streaming, presentato da Play.me.
  • Un servizio REST per gestire il gaming online (score, ranking, achievements), presentato da Beintoo.

L’applicazione, chiamata con molta fantasia Hack-A-Banda, è un gioco musicale sulla falsariga della trasmissione Sarabanda (da qui il nome): la partita si sviluppa nell’arco di 5 livelli di difficoltà crescente, in ognuno dei quali al giocatore viene fatta ascoltare una canzone e gli viene proposta una scelta di 4 titoli, uno solo dei quali è corretto. Ecco come abbiamo utilizzato le tre API:

  • I tool di sviluppo presentati da Microsoft, dato che abbiamo realizzato un’applicazione Windows Phone.
  • Play.me per recuperare le canzoni (e relative informazioni, come titoli, copertina del cd e preview in MP3) da far ascoltare all’utente.
  • Beintoo per effettuare il submit del punteggio della partita e per gestire / visualizzare la classifica online.

Non esagero nel dire che è stata una delle esperienze community più belle che abbia mai fatto: il clima era veramente eccezionale, la location incredibile (una grande e luminosa stanza con annesso bar che distribuiva gratuitamente cibo e bevande a volontà), il team affiatato, i progetti presentati tutti molto originali e degni di nota. E’ stata inoltre una bella sfida per tutti e tre: sviluppare un’applicazione in 10 ore con un team di persone che non hanno mai lavorato insieme è un’esperienza che mette alla prova le tue capacità di lavorare in squadra e di supportarsi l’un altro. Tutto questo sarebbe più che sufficiente per definirla una giornata grandiosa: Microsoft, nella persona di Lorenzo, è riuscita però a renderla ancora più epica premiandoci come miglior progetto per Windows Phone con 1 LG Optimus 7 e due Arc Mouse. Mica male! Il fortunato vincitore del telefono è stato Gioffy (e ne sono contentissimo, dato che era l’unico del team a non avere un device Windows Phone e se lo è meritato pienamente), mentre io e Igor ci siamo portati a casa l’ottimo mouse prodotto da Microsoft.

Che dire? So che in America questo tipo di eventi è più comune, mentre per l’Italia è una novità: una novità che spero si ripeta in futuro, perchè crea legami e occasioni di conoscenza (anche professionale) come poche altre tipologie di eventi sanno fare. E poi, diciamocela tutta, è stato dannatamente divertente! Il nostro obiettivo è ora concludere l’applicazione e pubblicarla sul Marketplace, quindi sentirete ancora parlare di noi Smile

Ringrazio di cuore innanzitutto i miei compagni di squadra per l’esperienza meravigliosa e per l’ottimo lavoro che abbiamo svolto insieme. Un ringraziamento speciale va anche a Lorenzo, non solo per quello che ha fatto in veste “ufficiale” (i premi, il supporto a chi voleva saperne di più su Windows Phone, ecc.), ma anche e soprattutto per la sua presenza, per il suo supporto “morale” e per aver condiviso con noi qusta grandissima giornata.

Se la cosa vi ha incuriosito, sappiate che WhyMCA organizzerà, nel corso di un evento che si terrà a Maggio, un contest simile dedicato al mobile che però si svolgerà nell’arco della notte. Sviluppatore avvisato Smile

Chiudo con qualche link e con qualche screenshot di Hack-A-Banda:

 

screenshot1 screenshot3 screenshot2
screenshot4 screenshot5 screenshot6


 


HackItaly , Windows Phone , Microsoft , API , Play.me , Beintoo

0 comments

Windows Phone Development tools – January Update

Print Content | More

Nella notte tra venerdì e sabato Microsoft ha rilasciato un aggiornamento per i tool di sviluppo di Windows Phone, in previsione dell’uscita (ormai imminente) del primo update ufficiale della piattaforma. La novità principale è l’aggiornamento della ROM dell’emulatore, allineata con la versione che verrà rilasciata con il nuovo update e che introduce il tanto atteso copia & incolla. Scopo principale di questo aggiornamento, infatti, è dare la possibilità agli sviluppatori di testare questa nuova feature nelle loro applicazioni.

In realtà, nella maggior parte dei casi non ci sarà da preoccuparsi di nulla: tutte i controlli di tipo TextBox, in automatico, erediteranno questo nuovo comportamento, senza nessun intervento da parte nostra. Esistono però alcuni casi particolari che potrebbero dare qualche comportamento anomalo, nello specifico nel caso in cui abbiate una TextBox all’interno di un controllo Panorama o Pivot: non essendo questi due controlli pensati inizialmente per supportare questa feature, potrebbe accadere che l’utente, nel tentativo di selezionare e copiare il testo, si sposti innavertitamente alla sezione successiva del Panorama o del Pivot.

Per evitare questo problema non dovete far altro che ricompilare la vostra applicazione con la nuova versione dei tool, che includono infatti una nuova versione dei controlli Panorama e Pivot che risolvono questo problema. Per dare ulteriore supporto agli sviluppatori, Microsoft si è impegnata (comunicandolo tramite un post sul blog ufficiale del team di sviluppo) a contattare personalmente gli sviluppatori che hanno pubblicato applicazioni che rientrano in questa castistica e che quindi devono ricompilare le loro applicazioni.

A scanso di equivoci, vi ricordo che la funzionalità di copia e incolla verrà gestita in automatico dal device in tutti i controlli di tipo TextBox; al momento non è possibile gestirla da codice (ad esempio, per leggere o scrivere valori nella clipboard) e non è supportata dagli altri controlli (ad esempio, TextBlock).

Ma come funziona il copia & incolla? L’emulatore ci permette di provarlo in anteprima: alla selezione del testo apparirà un’icona che ci permetterà di copiare l’elemento nella clipboard. Per incollare avremo a disposizione un’altra icona, questa volta posizionata sopra la tastiera virtuale (dove solitamente vengono visualizzati i suggerimenti del correttore ortografico). Nel momento in cui effettuate l’operazione di incolla, l’icona dalla barra sparirà: spostando però il dito sulla barra potrete farla ricomparire, avendo così la possibilità di incollare più volte il testo copiato. Nelle immagini potete vedere il copia & incolla in azione nella mia applicazione Speaker Timer.

emulator1 emulator2

Trovate l’update a questa pagina: il January Update (WindowsPhoneDeveloperResources_en-US_Patch1.msp da 125 MB) va a sostiture l’October Update, in quanto va installare anche i tool introdotti con l’aggiornamento di Ottobre nel caso in cui non li abbiate ancora installati. Questo significa che non sostituisce il package originale di installazione dei tool di sviluppo, ma va installato separatemente. In più, è stato rilasciato anche un aggiornamento di Visual Studio (VS10-KB2486994-x86.exe, che trovate nella pagina stessa) che corregge un bug che vi impedisce di fare il deploy sul vostro device di applicazioni più grandi di 64 MB.

Buon download… e buon sviluppo!


Windows Phone , Microsoft , Panorama , Pivot

0 comments

Coding4Fun: una nuova libreria di Microsoft per lo sviluppo di applicazioni per Windows Phone 7 – Parte 1: i controlli (2° parte)

Print Content | More

Riprendiamo la carrellata dei controlli disponibili nella libreria per Windows Phone 7 targata Coding4Fun iniziata nel post precente.

RoundButton e RoundToggleButton

Raggruppo questi due controlli in unico paragrafo, dato che sono praticamente identici, solo con due funzioni diverse. Si tratta infatti due semplici pulsanti, con un layout “arrotondato” che li rende simili ai pulsanti che vengono inseriti all’interno di una ApplicationBar. La differenza è che RoundButton è un pulsante tradizionale, mentre RoundToggleButton può essere utilizzato al posto del controllo CheckBox per dare la possibilità di selezionare più elementi.

Vediamo un esempio di XAML in cui sono inseriti entrambi i tipi di controlli:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel>
        <TextBlock Text="Round Buttons"></TextBlock>
        <StackPanel Orientation="Horizontal" Margin="0, 20, 0, 40">
            <controls:RoundButton Content="Button 1" x:Name="button1" Click="button1_Click" ImagePath="/Images/appbar.check.rest.png"></controls:RoundButton>
            <controls:RoundButton Content="Button 2" x:Name="button2" Click="button2_Click" ImagePath="/Images/appbar.check.rest.png"></controls:RoundButton>
        </StackPanel>
        <TextBlock Text="Round Toggle Buttons"></TextBlock>
        <StackPanel Orientation="Horizontal" Margin="0, 20, 0, 20">
            <controls:RoundToggleButton Content="Toggle Button 1" x:Name="ToggleButton1" ImagePath="/Images/appbar.check.rest.png"></controls:RoundToggleButton>
            <controls:RoundToggleButton Content="Toggle Button 2" x:Name="ToggleButton2" ImagePath="/Images/appbar.check.rest.png"></controls:RoundToggleButton>
        </StackPanel>
        <Button Content="Click me" x:Name="ClickMe" Click="ClickMe_Click"></Button>
    </StackPanel>
</Grid>

Come vedete, i due controlli si comportano esattamente come dei normali bottoni. La differenza è che:

  • ai RoundButton abbiamo associato due eventi Click, dato che il loro scopo è quello di essere utilizzati come dei pulsanti tradizionali.
  • anche i RoundToggleButton espongono l’evento Click, che però in questo caso non abbiamo usato. Come detto in precedenza, questo controllo può essere usato al posto dei checkbox, dato che consente una selezione multipla. Come vedremo tra poco, sfrutteremo perciò nel code behind questa caratteristica per determinare, tramite la pressione del pulsante ClickMe, quali bottoni sono stati selezionati.

Una cosa interessante è che entrambi i controlli supportano la proprietà ImagePath, che permette di impostare una immagine da visualizzare all’interno del pulsante. Ovviamente, è importante selezionare una immagine adatta allo scopo, che possa essere contenuta all’interno del pulsante.

Ecco il code behind:

public partial class RoundButton : PhoneApplicationPage
{
    public RoundButton()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Button 1 clicked", "Coding 4 Fun", MessageBoxButton.OK);
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Button 2 clicked", "Coding 4 Fun", MessageBoxButton.OK);
    }

    private void ClickMe_Click(object sender, RoutedEventArgs e)
    {
        if (ToggleButton1.IsChecked == true && ToggleButton2.IsChecked == true)
            MessageBox.Show("Both buttons are checked", "Coding 4 Fun", MessageBoxButton.OK);
        else if (ToggleButton1.IsChecked == true)
            MessageBox.Show("Toggle Button 1 is checked", "Coding 4 Fun", MessageBoxButton.OK);
        else if (ToggleButton2.IsChecked == true)
            MessageBox.Show("Toggle Button 2 is checked", "Coding 4 Fun", MessageBoxButton.OK);
        
    }
}

Anche qui il codice è molto semplice:

  • Ai due RoundButton abbiamo associato due eventi che, al click, mostrano un MessageBox.
  • Alla pressione del pulsante ClickMe abbiamo associato un evento che verifica se i RoundToggleButton sono selezionati o meno tramite la proprietà IsChecked e mostra un MessageBox diverso a seconda del contesto.

Quando usare questi controlli? RoundButton può andare a sostiture un Button nel caso in cui abbiamo bisogno di inserire diversi pulsanti all’interno di una stessa view e non abbiamo molto spazio. E’ fondamentale però che le etichette siano brevi, altrimenti il risultato finale non sarà molto gradevole. I RoundToggleButton invece possono essere utilizzati, ad esempio, in una pagina di Settings, al posto dei checkbox o del controllo ToggleSwitch presente nel Silverlight Toolkit.

RoundButton

MemoryCounter

Se ricordate il mio post dedicato a come recuperare alcune informazioni sul device da codice, esiste un modo per tenere sotto controllo la memoria in uso, grazie a due parametri che ci vengono messi a disposizione: uno che ci restituisce la memoria correntemente utilizzata e uno invece la memoria massima utilizzata dall’applicazione nel suo ciclo di vita.

Questo controllo non fa altro che visualizzare questi due valori nella vostra applicazione in automatico, senza che sia necessario da parte vostra scrivere una riga di codice. Se ricordate, infatti, nell’esempio mostrato nel post avevamo instanziato uno SchedulerTimer per far si che il quantitativo di memoria utilizzato venisse aggiornato ogni secondo. Questo controllo si occupa in automatico di gestire questo aspetto, mostrandovi in tempo reale lo stato della memoria.

Inserire il controllo nello XAML è molto semplice:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel>
        <StackPanel Orientation="Horizontal">
            <Button Content="Add memory" x:Name="AddMemory" Click="AddMemory_Click"></Button>
            <Button Content="Remove memory" x:Name="RemoveMemory" Click="RemoveMemory_Click"></Button>
        </StackPanel>
        <controls:MemoryCounter></controls:MemoryCounter>
    </StackPanel>
</Grid>

Come vedete, basta inserire un controllo di tipo MemoryCounter, il quale mostrerà in automatico due valori: il primo rappresenta la memoria in uso, il secondo la memoria massima utilizzata. Gli altri due pulsanti sono stati inseriti per darvi la possibilità di vedere il controllo in azione in tempo reale. Vediamo il code behind:

public partial class MemoryView : PhoneApplicationPage
 {
List<Byte[]> _memory = new List<Byte[]>();

public MemoryView()
{
    InitializeComponent();
}

private void AddMemory_Click(object sender, RoutedEventArgs e)
{
    _memory.Add(new Byte[1024 * 1024]);
}

private void RemoveMemory_Click(object sender, RoutedEventArgs e)
{
    if (_memory.Count > 0)
        _memory.RemoveAt(_memory.Count - 1);

    GC.Collect();
}

Quando la pagina viene istanziata creiamo una List di byte array: alla pressione del pulsante Add Memory, aggiungiamo alla collezione un byte array della dimensione di 1 MB. Quando premiamo il pulsante Remove memory, invece, eliminiamo l’ultimo oggetto inserito nella lista e forziamo il Garbage Collector ad entrare in azione, liberando perciò 1 MB dalla memoria.

Questo controllo non è pensato per gli utenti, ma per gli sviluppatori: non nasce per essere inserito in bella vista all’interno delle nostre applicazioni, ma per uso interno degli sviluppatori per valutare l’utilizzo di memoria e debuggare eventuali anomalie. Vi ricordo infatti che le guidelines impongono delle norme ben precise per quanto riguarda il consumo di memoria, che non può superare i 90 MB su device con meno di 512 MB di RAM.

MemoryView

TimeSpanPicker

Se ricordate, il Silverlight Toolkit ha introdotto due controlli, DatePicker e TimePicker, per consentire la selezione di date e ore all’interno della nostra applicazione. TimeSpanPicker è un controllo derivato da questi due che vi da la possibilità di selezionare un intervallo di tempo: risulta molto utile se, ad esempio, dovete implementare nella vostra applicazione un timer la cui durata deve essere selezionabile dall’utente. Nella mia applicazione Speaker Timer ho utilizzato proprio questo controllo per consentire la selezione della durata prevista per la sessione.

Il suo utilizzo è lo stesso dei controlli TimePicker e DatePicker che vi ho spiegato in questo post: l’unica differenza è che il valore ritornato non è un DateTime ma un TimeSpan (che rappresenta per l’appunto un intervallo temporale). Vediamo ora una semplice applicazione con un pulsante che, quando premuto, mostra in un MessageBox il valore impostato nel TimeSpanPicker.

Attenzione! Per poter utilizzare questo controllo, il namespace da dichiarare è diverso da quello che contiene tutti gli altri controlli, ovvero:

xmlns:controls="clr-namespace:Coding4Fun.Phone.Controls.Toolkit;assembly=Coding4Fun.Phone.Controls.Toolkit"

Ecco lo XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel>
        <controls:TimeSpanPicker x:Name="TimePicker"></controls:TimeSpanPicker>
        <Button Content="Show Timespan" x:Name="ShowTimespan" Click="ShowTimespan_Click"></Button>
    </StackPanel>
</Grid>

Ecco invece il code behind:

public partial class TimeSpanPickerView : PhoneApplicationPage
{
    public TimeSpanPickerView()
    {
        InitializeComponent();
    }

    private void ShowTimespan_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(TimePicker.Value.Value.ToString(), "Coding 4 Fun", MessageBoxButton.OK);
    }
}

Come vedete, non facciamo altre che recuperare tramite l’attributo Value (che è un Nullable TimeSpan, ovvero un TimeSpan che può assumare valore null) il valore selezionato nel controllo e mostrarlo a video sfruttando un MessageBox.

TimeSpanPicker1 TimeSpanPicker2

PerformanceProgressBar

La ProgressBar, come ben sappiamo, è uno dei controlli nativi di Silverlight che viene utilizzato per notificare all’utente che la nostra applicazione sta caricando dei dati. La ProgressBar può operare in modalità “tradizionale” o “indeterminate”. Nel primo caso, la barra mostra lo stato di avanzamento del caricamento: quando è piena, vuol dire che il caricamento è completato. Questa modalità viene utilizzata quando stiamo caricando dei dati e siamo in grado di stabilirne la dimensione e lo stato di avanzamento preciso. La modalità indeterminate invece viene utilizzata quando non siamo in grado di fare questa stima, ma vogliamo limitarci ad avvisare l’utente che stiamo caricando qualcosa. Questa modalità è ampiamente usata in tutte le applicazioni native del telefono: quando vediamo dei puntini spostarsi dal lato sinistro a quello destro dello schermo per poi sparire stiamo guardando una ProgressBar la cui proprietà IsIndeterminate è a true.

La PerformanceProgressBar è una variante della ProgressBar che si comporta esattamente allo stesso modo, solo che offre performance nettamente migliori della ProgressBar standard quando viene utilizzata la modalità Indeterminate: questo perchè tale variante utilizza dei thread separati per gestire e renderizzare l’animazione, al contrario di quella standard che fa uso dello stesso thread che gestisce la UI (bloccando quindi gli altri controlli che vogliono interagire con la UI fino a che questa è in funzione).

Riguardo al suo utilizzo non c’è molto da dire, dato che si utilizza esattamente come una ProgressBar, in quanto sono esposte le stesse proprietà e gli stessi eventi. Ecco un esempio di semplice applicazione che attiva e disattiva la visualizzazione di una PerformanceProgressBar tramite la pressione di due pulsanti.

Ecco lo XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel>
        <controls:PerformanceProgressBar x:Name="ProgressBar"></controls:PerformanceProgressBar>
        <StackPanel Orientation="Horizontal" Margin="0, 30, 0, 0" HorizontalAlignment="Center">
            <Button Content="Start" x:Name="Start" Click="Start_Click"></Button>
            <Button Content="Stop" x:Name="Stop" Click="Stop_Click"></Button>
        </StackPanel>
    </StackPanel>
</Grid>

Ed ecco il code behind:

public partial class PerformanceProgressBarView : PhoneApplicationPage
{
    public PerformanceProgressBarView()
    {
        InitializeComponent();
    }

    private void Start_Click(object sender, RoutedEventArgs e)
    {
        ProgressBar.IsIndeterminate = true;
    }

    private void Stop_Click(object sender, RoutedEventArgs e)
    {
        ProgressBar.IsIndeterminate = false;
    }
}

Come vedete, quello che andiamo a fare è semplicemente agire sulla proprietà IsIndeterminate del controllo, impostandola a true quando vogliamo visualizzarlo o a false quando vogliamo nasconderlo.

Attenzione! Solitamente, per la gestione delle ProgressBar si agisce su due parametri: IsIndeterminate e Visibility. Questo perchè, quando la proprietà IsIndeterminate è a false, l’animazione non è più visibile ma lo spazio occupato dal controllo sì, “sporcando” perciò la nostra pagina. Per evitare questo inconveniente perciò, al termine del caricamento è buona norma impostare la proprietà Visibility a Visibility.Collapsed (come vedremo nel post successivo parlando dei Converters, la proprietà Visibility non è di tipo booleano). Ricordatevi sempre però di impostare prima anche la proprietà IsIndeterminate a false! Se vi limitate a nasconderla, infatti, l’animazione di caricamento continuerà ad essere eseguita, andando ad impattare sulle performance della vostra applicazione.

PerformanceBar

In conclusione

Con questo post abbiamo chiuso la panoramica dei controlli inclusi nella libreria Coding4Fun: nel prossimo post vedremo invece tutte le altre utility (behaviors, converters, ecc.) presenti nel toolkit. Qui sotto trovate il link per scaricare il progetto di esempio completo di tutti i controlli analizzati sia nel post precedente che in questo.


Windows Phone , Microsoft , Coding4Fun

0 comments