
Ett av de företag som kommit en bra bit på vägen när det gäller att skapa rika upplevelser för Windows Phone 7 är Ergonomidesign. De har redan producerat en del mycket läckra och intressanta koncept och har också en stark relation med design-teamet i USA.
Ergonomidesign har också satt ihop ett workshop-koncept som de idag går ut till kund med, där de tillsammans med kunden tar fram en upplevelse för Windows Phone 7. Låter det intressant, läs gärna mer hos Ergonomidesign!
En fråga som dök upp under min presentation på Sommarkollo i tisdags var följande:
Fråga: Går det att ha olika skärmupplösningar för olika delar av ett spel? Med andra ord, kan jag låta min titelskärm vara renderad i 800x480 och sedan använda den inbyggda “scalern” för själva spelmomentet att rendera i 400x240 för att få ytterligare prestanda-förbättringar?
Svar: Jajamensan, det går att göra, och är inte speciellt svårt att ordna har det visat sig.
graphics.PreferredBackBufferWidth = 240;
graphics.PreferredBackBufferHeight = 400;
graphics.ApplyChanges();
Hemligheten är så klart anropet till ApplyChanges().
För ungefär sex månader sedan introducerades Windows Phone 7 för utvecklarna på MIX konferensen i Las Vegas, jag var där tillsammans med flera svenska utvecklare och tog chansen att lära oss om utvecklingsmodellerna och verktygen. Sedan dess har mer än 300 000 nedladdningar av verktygen skett och twitter, facebook, msdn och massvis med andra sociala communities och medier, dagligen tagit upp applikationer, spel, verktyg och tips och tricks för plattformen.
För en vecka sedan annonserades en diger samling av spel som kommer att finnas tillgängliga på Windows Phone 7 och nu har det även annonserats en lista med företag som kommer med “vanliga” applikationer! Men naturligtvis är den här listan inte komplett, det finns massvis med globala och lokala företag och organisationer som är igång med att bygga för Windows Phone 7 och för dig som också vill haka på tåget så är det här processen:
1. Registrera dig på “marketplace” redan idag!
2. Ladda hem Beta verktygen och börja bygg ditt spel eller din applikation.
3. Ladda hem den slutliga versionen av verktygen för Windows Phone när de släpps den 16:e september.
4. Kompilera om din applikation med de senaste verktygen.
5. Ha din XAP klar för publicering i “marketplace” i början av oktober när den möjligheten öppnas upp.
Naturligtvis så är det också fördelaktigt att ha testa sina applikationer på riktiga enheter och därför genomför jag för närvarande laborationer på Microsoft i Akalla under halvdagar som du kan ta med dig din applikation till och få testa på riktiga enheter. Där kan du också få lite tips och tricks, bolla idéer och ta dialogen om vägen framåt.

Två av kontrollerna som avser att skapa unika upplevelser på Windows Phone 7 är Panorama och Pivot. I korthet kan sägas att ett Panorama är en vy som spänner sig horisontellt över mer yta än vad den fysiska skärmen på telefonen kan visa, medans en Pivot-kontroll bör användas för att byta vyer över “samma” data.
Dessa kontroller finns än inte publicerade i officiella versioner men om det är Silverlight applikationer som du är på väg att bygga så kan den här artikeln vara till stor hjälp för att se vart vi är på väg med kontrollerna.
Inför lanseringen av Windows Phone 7 så vill jag ge dig som utvecklare och primärt partner till Microsoft möjligheten att testa dina applikationer som du bygger för Windows Phone 7 på en riktigt enhet. Dessvärre så har jag inte någon att i det här stadiet låna ut, utan istället så har jag ordnat halvdagar då du har möjlighet att komma till Microsoft och testa din kod på en redan konfigurerad utvecklingsmiljö med en riktig telefon.
Kravet är dock att du redan har kommit en bit i din utveckling och vill testa de förmågor av applikationen som inte lämpar sig att testa i emulatorn (eller inte går). Det är alltså inte meningen att de här halvdagarna kan användas för att påbörja en utveckling eller bara prova på hur det är att koda.
Dessa datum och tider finns att boka:
| Datum | Tid |
| Onsdagen den 25:e augusti | 09.00 – 12.00 |
| Onsdagen den 25:e augusti | 13.00 – 16.00 |
| Torsdagen den 26:e augusti | 09.00 – 12.00 |
| Torsdagen den 26:e augusti | 13.00 – 16.00 |
| Onsdagen den 1:a september | 09.00 – 12.00 |
| Onsdagen den 1:a september | 13.00 – 16.00 |
| Torsdagen den 2:a september | 09.00 – 12.00 |
| Torsdagen den 2:a september | 13.00 – 16.00 |
| Onsdagen den 15:e september | 09.00 – 12.00 |
| Onsdagen den 15:e september | 13.00 – 16.00 |
| Torsdagen den 16:e september | 09.00 – 12.00 |
| Torsdagen den 16:e september | 13.00 – 16.00 |
Boka genom att maila mig på Johan(dot)Lindfors(at)microsoft(dot)com alternativt ringa 08-752 27 80.
Om du fortfarande inte har kommit igång så hittar du alla resurser som du behöver i form av verktyg, emulator, dokumentation, exempel osv här: http://developer.windowsphone.com
Här finns också en rejäl lista med strukturerat och organiserat material som kan hjälpa dig igång: http://indyfromoz.wordpress.com/windows-phone-7-resources/
En dialog som nyss dök upp i en diskussionslista var angående hur det går att agera på förändring i orientering av enheten som då kan uppdatera gränssnittet. Med Windows Phone 7 och Silverlight så kan du markera dina sidor i en applikation till att ha stöd för både Portrait (stående) och Landscape (liggande) eller bara en av dem om så önskas. Med hjälp av de inbyggda panelerna så kommer sedan elementen i din applikation att automatiskt ställa in sig till skärmens orientering, mycket smidigt, men det finns begränsningar.
Exempelvis kalkylatorn i Windows Phone 7, har liksom kalkylatorer i andra plattformar, mer knappar synliga vid liggande orientering än vid stående. Men hur kan vi i våra applikationer förändra ett elements synlighet baserat på orientering?
Databinding och “value-converters” till räddningen.
Genom att helt enkelt databinda det element som vi vill ska kunna synas eller inte, specifikt egenskapen Visibility, till egenskapen på sidan som heter Orientation. Dessvärre så har dessa egenskaper olika typer och det är där en konverterare kommer till sin rätt. Följande kod skapar en en-vägs-konverterare (i och med att jag inte implementerar ConvertBack metoden) som hanterar konverteringen:
public class LandscapeVisibilityConverter : IValueConverter
{
public object Convert(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
var orientation = (PageOrientation)value;
Visibility visibility = Visibility.Collapsed;
switch (orientation)
{
case PageOrientation.Landscape:
case PageOrientation.LandscapeLeft:
case PageOrientation.LandscapeRight:
visibility = Visibility.Visible;
break;
default:
break;
}
return visibility;
}
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
Hoppas att du får användning av den! Det är precis lika enkelt att skapa en PortraitVisibilityConverter, men det fixar du själv va, eller hur 
Som den avslutande presentationen i vårens MSDN TV Live-serie så kommer jag på fredag att presentera hur XNA kan användas för att bygga spel och multimedia-applikationer på Windows Phone 7. Presentationen är en introduktion till XNA men vi kommer också att titta på saker som är specifika för just Windows Phone 7, som exempelvis konfigurerbara shaders.
OBS: Webbsändningen använder Office Live Meeting och kommer att innehålla presentation, demonstration och ljud (via datorn). Innan du går med i webbsändningen så behöver du installera Office Live Meeting-klienten!
Uppdatering!
Presentationen spelades in och finns nu för återspelning på Channel9!
När du börjar utveckla applikationer för Windows Phone 7 med Silverlight så är det naturligtvis viktigt att kontinuerligt ha koll på systemresurser och optimera applikationens olika delar som exempelvis animationer. Allt för att få till en så bra upplevelse som möjligt för användaren.
Då kan det vara bra att slå på följande egenskap:
Application.Current.Host.Settings.EnableFrameRateCounter = true;
UPPDATERING:
I applikationer som väljer att visa SystemTray (som visar batteri osv) så kommer räknarna att hamna bakom denna, det betyder att för att vara säker på att se räknarna så är följande kodrader att föredra:
this.SetValue(Microsoft.Phone.Shell.SystemTray.IsVisibleProperty, false);
Application.Current.Host.Settings.EnableFrameRateCounter = true;
Då kommer du att få fem stycken räknare högst upp i vänsta hörnet som ger följande information:
Render thread frame rate - UI thread frame rate
- Vram used
- # textures used
- # intermediate textures used
Mer information om detta kan du få här: http://live.visitmix.com/MIX10/Sessions/CL60
Vill varmt rekommendera en presentation från TechEd 2010 i New Orleans som har titeln “Occassionally Connected applications with Windows Phone 7” som hölls av Rob Tiffany. Rob pratar om hur vi kan optimera våra applikationer både på servern och klienten för att underlätta kommunikation mellan telefonen och servern med hjälp av exempelvis WCF, REST och JSON. Rob tar också upp en användning av Singelton-mönstret för att skapa en lokal “databas” av objekt som kan serialiseras ned på disk (i IsolatedStorage) för cachning av data samt hantering av tillstånd.
En mycket intressant diskussion med bra kodexempel och pedagogiskt upplägg!
Med Expression Blend 4 kan du utforma gränsnittet och den tänkta användarupplevelsen för din applikation oavsett om den ska köras på desktopen, webben eller mobilen. Under seminariet kommer Danwei Tran att kika på nyheter som PathListBox, använda sig av Windows Phone 7 emulatorn och bygga ett spel i Silverlight med hjälp av Behaviors.
OBS: Webbsändningen använder Office Live Meeting och kommer att innehålla presentation, demonstration och ljud (via datorn). Innan du går med i webbsändningen så behöver du installera Office Live Meeting-klienten!