Windows Phone 7 Guide for Android Application Developers

Arya MirMobile - Wireless

Oct 3, 2011 (5 years and 8 months ago)

2,239 views

If you have been developing Android applications and are interested in building your applications for Windows Phone 7, this guide is for you. The guide covers what you need to know to add Windows Phone 7 development to your skill set, while leveraging what you have already learned building Android applications.







Microsoft

6
/
6
/2011

Rev
1
.0


Windows Phone 7
Guide for
Android

Application
Developers


Windows Phone 7 Guide for Android
Application
Developers

2




About this Document

................................
................................
............

4

Target Aud
ience

................................
................................
...................

4

Conventions Used in this Document

................................
........................

4

Chapter 1: Introducing Windows Phone 7 Platform to Android Application
Developers

................................
................................
..........................

5

The Developer Tools

................................
................................
...........

5

Windows Phone 7 Architecture

................................
.............................

5

Comparing t
he Programming Stack of Windows Phone 7 with Android

......

7

Summary

................................
................................
........................

11

Related Resources

................................
................................
............

11

Chapter 2: User Interface Guidelines
................................
.....................

12

Designing the Application Interface

................................
....................

13

Application User Interface

Design

................................
.......................

14

Comparing Windows Phone 7 and Android Navigation

...........................

18

Windows Phone 7 Frame and Page Structure

................................
.......

19

Application Templates

................................
................................
.......

21

Summary

................................
................................
........................

21

Related Resources

................................
................................
............

21

Chapter 3: The Developer and Designer Tools

................................
........

23

A Comparison of Android and Windows Phone 7 Tools

..........................

23

Development Life Cycle and Windows Phone 7 Developer Tools

.............

24

The UI Design Tools

................................
................................
.........

26

Building Applications

................................
................................
........

33

Debugging

................................
................................
......................

34

Summary

................................
................................
........................

38

Chapter 4: C# programming

................................
................................

39

Managed Programming

................................
................................
.....

40

A Comparison between C# Features and Java Classes

..........................

41

A Compari
son of Important Class Libraries

................................
..........

51

The New features of C#

................................
................................
....

54

Comparing API Documentation Tools

................................
..................

58

NDoc

................................
................................
..............................

58

NDocs vs. Javadoc

................................
................................
...........

61

Summary

................................
................................
........................

61

Related Resources

................................
................................
............

62



Windows Phone 7 Guide for Android
Application
Developers

3



Chapter 5: A Comparison of Application Life Cycles in Windows Phone 7 and
Android

................................
................................
.............................

63

Multitas
king in Android and Windows Phone 7

................................
......

63

Tombstoning of Applications in Windows Phone 7

................................
.

6
4

Life Cycle of a Windows Phone 7 Applica
tion

................................
........

64

Role of Handlers in an Application‟s Life Cycle

................................
......

66

Comparing Life
-
cycle Methods

................................
...........................

68

Tombstoning and Windows Phone 7 Life Cycle

................................
.....

69

Summary

................................
................................
........................

74

Related Resources

................................
................................
............

74

Chapter 6: Storing Data and Preferences

................................
...............

75

Isolated Storage in Windows Phone 7

................................
.................

75

Use C
ases

................................
................................
.......................

78

Managing the IsolatedStorage Space

................................
..................

79

Why Windows Phone 7 Does Not Use External Storage

.........................

80

Managing Content across Applications

................................
................

81

Comparing Intent API with Launchers and Choosers API

.......................

82

Summary

................................
................................
........................

85

Related Resources

................................
................................
............

85

Chapter 7: XML Parsing in Windows Phone 7 and Android

........................

86

XML Parsing in Windows Phone 7

................................
.......................

86

XML Namespaces for Windows Phone 7

................................
...............

86

XML Parsing Using X
ML
Re
ader

................................
...........................

86

TRAVERSING XML

................................
................................
............

95

Summary

................................
................................
........................

99

Related Resources

................................
................................
............

99



Windows Phone 7 Guide for Android
Application
Developers

4



About this

Document

If you have been developing
Android

applications and are interested in building
your applications for Windows Phone 7, this guide is for you.

The guide cover
s

what you need to know to add Windows Phone

7 development to
your skill set, while leveraging what you have already learned building
Android

applications.

Target Audience

This document is for
Android application developers willing to develop applications
for Windows Phone 7.

Conventions
U
sed in t
his
D
ocument

Term

Abbreviation

Windows Phone 7

WP
7

Application Programming
Interface

API

Integrated Development
E
nvironment

IDE


Windows Phone 7 Guide for Android
Application
Developers

5


Chapter 1: Introducing Windows
Phone 7 Platform to Android
Application Developers

Ever since the release of Windows Ph
one 7 (WP7) platform, developers from around
the globe rushed to develop applications for this platform. Now, WP7 devices are
available with manufacturers all over the world. A large number of applications are
already available in the WP7 marketplace.

For

WP7, Microsoft went back to the drawing board to figure out what phone users
really want, and built a phone from the ground up. The operating system, the user
experience, and the application development platform have all been engineered
with users in mind
. The revenue opportunities in the Windows Phone marketplace,
accompanied by a great set of development tools, make WP7 a very attractive
destination for developers to build applications and games.

The Developer Tools

Microsoft recommends using these tool
s for WP7 application development. This
toolset is free and can be downloaded from
here
. The toolset includes:

An IDE (for developers): Visual Studio Express for Windows Phone



A user interf
ace design tool (for designers): Express Blend for Windows
Phone



Silverlight for Windows Phone and XNA Game Studio for Windows Phone



Windows Phone 7 emulator to test and debug applications

The tools are designed to let you develop consumer applications, bu
siness
applications, and games.

Windows Phone 7 Architecture

WP7 utilizes a layered architecture. Like Android OS, WP7 runs on multiple phones.
To provide a consistent user experience and features that
you

can rely on, WP7
defines a minimum set of hardwar
e specifications that all phones must meet. They
include:



ARM7 CPU



A DirectX capable GPU



Camera



Multi
-
touch capacitive display



Standard sensors include:

o

A
-
GPS

Windows Phone 7 Guide for Android
Application
Developers

6


o

Accelerometer

o

Compass

o

Proximity and light sensors

There are three standard buttons on the phone:

Back, Start, and Search. As we will
see in a subsequent section, these buttons provide an easy and natural navigation
model for the user.

In WP7, Microsoft provides most of the device driver code. A device manufacturer
has to write very little code

sp
ecific to their device. This
improves the consistency
and quality across various devices. WP7 takes advantage of hardware acceleration
through encapsulation layers, such as DirectX or XNA.


WP7 applications use managed programming and run within sandboxed

environments. For more details about WP7 architecture, watch the
MIX‟10
presentation

by Istvan Cseri, a WP7 architect.



Windows Phone 7 Guide for Android
Application
Developers

7


Comparing the Programming Stack
of
Windows Phone 7
with Android

The Ap
plication Model shown above provides services, such as installation and
update, for managing the application lifecycle. The UI model helps to manage
application user interface. Applications are built using various WP7 frameworks.

This table gives an overvi
ew of the WP7 frameworks that provide features
comparable to the Android programming layers.


Android
Frameworks

Functionality

Windows Phone 7

Frameworks

Android
A
pplication
F
ramework

Application UI, Device
integration (sensors,
camera)

Windows Phone 7

P
hone
Framework, Silverlight
controls

Android
A
pplication
F
ramework

Graphics, Animation, Media

XNA for games or Silverlight
media and graphics for
others

Android
L
ibraries

Base services, Networking,
Text, XML, storage

Common Base Library

Android runtime
(Dalvik)+ Linux kernel


Windows Phone 7




Windows Phone 7 Guide for Android
Application
Developers

8


Android and
Windows Phone 7

Stacks
S
ide

by
S
ide

This table compares the Android and WP7 Frameworks side by side.

Managed Code

I
n Android, every application runs in its own process, with its own instance of the
Dalvik virtual machine. WP7 only supports “
managed code
” applications using C# or
VB.net; there is no native access available to the system or the phone hardware.

.NET Common Language Runtime (CLR) manages the execution of such code. CLR
provides garbage collection and there is no memory manage
ment to worry about or
pointers to take care of. The WP7 application stack is built on the .NET compact
framework 3.7. As Dalvik virtual machine is optimized for mobile devices, the .NET
compact framework is optimized for resource constrained devices and i
s designed
to be portable across various hardware platforms.



Android Frameworks



Windows Phone 7

Frameworks


Application UI and Phone

Multi
-
tasking




Ja
va




C# or VB.NET



Application
UI and Phone
integration

Application UI


Application UI

Device integration


Device integration

Browser Control


Browser Control

Notifications


Notifications

Peer to Peer
Gaming




Silverlight

Gam
er
Services



XNA


Two Application Types

Controls &
Gestures


Controls &
Gestures


Media

Telephony


Media


Media

Media Framework


Animations


Animations

Animations

Graphics


Graphics

Graphics

O
pen
GL
-
ES


Isolated

Storage

Content


Core Libraries

File System


SQLLite




Base Class
Library

Location


Location

XML


XML, LINQ

Networking


Networking, Windows
Communication Foundation

Libc
, Dalvik VM


CLR Base Classes

Android runtim
e +
Linux kernel


Windows Phone 7

OS

Windows Phone 7 Guide for Android
Application
Developers

9


Base Services

WP7 Base Class Library classes roughly correspond to those provided in the Android
Core Libraries.



Android core libraries include:



Media framework for audio and video codec supp
ort



SQLite

for database



O
pengl
-
ES



SGL

for graphics and animation



Networking stack



L
ibc for embedding with Linux kernel



Dalvik VM

The WP7 Base Class Library layer also includes:



Networking stacks: such as HTTP and the Windows Communication
Foundation (WCF)
. WCF provides an easy interface with XML and SOAP
services across the
Web
, with features supporting the XML data transfer,
serialization, deserialization and XML parsing.



Database support: WP7 does not have a local database, such as SQLLite.
You can writ
e SQL
-
like queries in C# using Language Integrated Query
(LINQ) to query XML data, stored in isolated storage (see below), or in
remote databases such as SQL Azure.

Application UI and Device Integration

You can develop WP7 applications using two librarie
s: Silverlight and XNA.
Silverlight contains the visual components same as Android standard widgets.

Generally, it is recommended that you use Silverlight for consumer or business
applications and XNA for games. However, you can certainly develop great ga
mes
using Silverlight animation.



Windows Phone 7 Guide for Android
Application
Developers

10



Android applications




Windows Phone 7

counterparts


UI using activity(contains
widgets) with navigation
between them



Silverlight applications with pages
connected by flows


2D or 3D games built
with
O
pe
ngl
-
ES





XNA games with 2D / 3D graphics
and Xbox connectivity

XNA for Games

For a high performance game, XNA is the right option. XNA framework, originally
developed for XBOX, provides hardware accelerated 2D and 3D rendering and
bitmap graphics. XNA

also provides gamer services such as authentication and
connectivity with XBOX Live, as well as
P
rofiles and
L
eaderboards.

Silverlight Controls and Media

If you use Android activities and widgets, you will find a large set of Silverlight UI
controls spec
ifically designed for the OS. WP7 UI components are designed for
multi
-
touch. Silverlight uses a declarative language called Extensible Application
Markup Language (XAML) to specify user interfaces. You can use separate code
-
behind files, written in C# or
VB.NET, to respond to events or manipulate the
controls.

Silverlight provides high performance audio and video with variety of CODECs. It
supports both vector and bitmap graphics with hardware acceleration. As opposed
to a file system, Silverlight provide
s sandboxed storage, called isolated Storage, to
store the application
-
specific data. With the isolation of storage, one application
cannot affect other applications that are running on the phone.

Windows Phone Frameworks

If you need to use HTML in your a
pplication, you can use the Internet Explorer
based browser control in your application for HTML UI. Windows Phone Framework
layer also provides interfaces to various sensors, such as the accelerometer or the
Windows Phone 7 Guide for Android
Application
Developers

11


camera. Microsoft provides a push notification
service, called Microsoft Push
Notification Service.

In Android, multitasking is supported. In WP7, support for multitasking will be
provided in the next release. In

Android, you need to use third
-
party platforms like
ADMob to publish advertisements in a
pplications. Microsoft has made this task
easier in WP7 by introducing Microsoft Advertising SDK for WP7.

For more information, visit:

Microsoft

Advertising SDK for Windows Phone 7

Summary

In this chapter we looked at the WP7 architecture and the Android and WP7
programming stacks. Now that you have a high
-
level idea of how the WP7
programming stack maps to the Android stack, we are now going to
go one level
deeper. In the next section, we will look at the user interface guidelines of WP7
applications.

Related Resources

To learn more about the topics covered in this blog,
visit
:



App
Hub


Central
P
lace for
Windows Phone 7

development
. Getting started,
download tools and read all about
Windows Phone 7

development




MIX ‟10 presentation

on
Windows Phone 7

Architecture by Istva
n Cseri



Windows Phone 7
D
evelopment for
A
bsolute
B
eginners
. Video series that will
help aspiring Windows Phone 7 developers get started.



App Hub Jump Start Tutorials




Introduction to WP7 programming

on Codeproject.
com

Other Resources you may find useful:



Overview of the
Windows Phone 7

Application Platform



Windows Phone 7

Team Blog




Windows Phone 7

Programming




Windows Phone 7 Guide for Android
Application
Developers

12


Chapter 2: User Interface Guidelines

Microsoft‟s
Windows Phone 7 (WP7)

uses a novel user interface called Metro. WP7
sets itself apart with its cle
an and simple design and emphasizes on color and
typography.

In contrast to the application
-
focused design of Android, WP7 uses an information
-
centric design. Instead of an array of application icons, the start screen of a WP7
consists of
dynamic tiles

that display critical information at a glance to the user.
The tiles are dynamic and they continuously display the up
-
to
-
date status of the
applica
tions. For example, they show you the next appointment on your calendar,
or the number of new emails waiting for your attention. Users can personalize their
phones by pinning the tiles that they care most about.

WP7 introduces a new paradigm called hubs.
Hubs bring related information
together. There are six hubs, People, Pictures, Music + Videos, Marketplace, Office,
and Games. The
People hub
, in the instance

shown below, aggregates your address
book contacts and Facebook friends.




Windows Phone 7 Guide for Android
Application
Developers

13


Designing the Application Interface

While the design of the WP7 user interface is different from that of the Android, the
core design principles are very similar. Like Android,
in
WP7
you

need

to keep in
mind the compact screen, lower CPU, and limited memory while designing the
applications. In WP7, users use one application at a time, with just one screen
visible.

Similar Application Design Goals

Usability and UI design are not

after thoughts, but are the primary goals behind
applications on both the Android and WP7. Applications need to be simple and focus
on key scenarios that most users care about.

Visual Elements and Direct Manipulation

Like Android, visual elements and dir
ect manipulation of objects by touch are the
key characteristics of the WP7 application. WP7 provides a complete set of UI
controls designed for the phone.

WP7 utilizes the same set of core multi
-
touch gestures as the Android with similar
semantics, these

include: tap, double tap, pan, flick, touch and hold, and pinch and
stretch.

Implications of the
S
imilarities for the
D
evelopers

For the most part, the application planning process is similar on both the platforms.
While designing your WP7 application, yo
u will focus on the same information that
is critical to the user. Your key design principles from the Android application will
get carried over
:

metaphors and direct manipulation with multi
-
touch. The need for
immediate feedback and aesthetic appeal remai
ns the same.



Windows Phone 7 Guide for Android
Application
Developers

14


Application User Interface Design

While there are similarities in the design principles of the applications on both
platforms, pay close attention to the user interface of the application for the WP7. It
is best to take advantage of the uni
que features and strengths of WP7 platform.

For the interface to provide a consistent experience across applications, applications
on WP7 need to adopt the new
Metro design guidelines.

XML and
XAML

Android uses XML for mapping purposes. A part of the compilation reads the XML,
performs translations, and generates Java. For example, in layout XMLs of Android,
you need to set it as content view in Activity, after defining the whole UI.

In WP7,
XA
ML

act as an instantiation language. XAML does not act as a mapping
medium in WP7 as XML does in Android. The XML in a
XAML

document in WP7
contains the actual code needed for UI and needs not be transformed into code, as
in case of Android.

Controls and
the Application Interface

The
WP7 development tools and SDK

include a rich collection of Silverlight controls
that are designed specifically for usability and aesthetics. While you can creat
e your
own controls, it is best to use the standard controls wherever possible. These
standard controls respond to theme changes and provide a consistent user
interface.

The following table shows the mapping between WP7 Silverlight controls and
correspon
ding Android controls.

Android control

Windows Phone 7

control

Border

Border

ButtonView

Button

AbsoluteLayout

Canvas

CheckBox

CheckBox

GridView

Grid


HyperlinkButton

ImageView

Image

ListView

ListBox

MediaController

MediaElement

Windows Phone 7 Guide for Android
Application
Developers

15


Android control

Windows Phone 7

control


MultiScaleImage

ViewGroup

Panel

EditText

PasswordBox

ProgressBar

ProgressBar

RadioButton,
RadioGroup

RadioButton

ScrollView

ScrollViewer

SeekBar

Slider

LinearLayout

StackPanel

EditText

TextBlock

EditText

TextBox

MapView

Map

WebView

WebBrowser


Panorama


Pivot

TimePicker

Timepicker

DatePicker

Datepicker

ExpandableListView


Gallery


ImageSwitcher


Spinner


TableLayout


TextSwitcher


ViewFlipper


Windows Phone 7 Guide for Android
Application
Developers

16


Android control

Windows Phone 7

control

ZoomControl


T
abHost


SlidingDrawer


RatingBar


Toggle button

ToggleSwitch*

* ToggleSwitch and Datepicker/Timepicker control are part of the Silverlight for
Windows Phone Toolkit available on Codeplex:
http://silverlight.codeplex.com/releases/view/55034

As you can see, WP7 offers controls that correspond to almost all Android controls.
While the look and feel is different, they provide similar functionality.

New Controls

in Windows Phone 7

WP7 intr
oduces a few novel controls that have no counterpart on the Android. Here
are some of the examples:



A multi
-
scale image, with image data at various resolutions, is appropriate
for allowing the user when zooming into a photo.



Panorama control is a multi
-
s
creen page and allows a page to span
horizontally beyond the width of the phone.



The people hub is another great example. It allows a large amount of related
information to be presented.



Pivot control, a novel control that is useful to manage views and d
isplay
information that is logically divided in sections.

Windows Phone 7 Guide for Android
Application
Developers

17





Notifications

Both Android and WP7 have notification services, but notifications play a key role in
WP7. The tiles are used to display non
-
critical information without disrupting what
the use
r is doing. If you are using status bar notifications in Android, you can use
tile notification as a replacement in WP7 to show critical information.

The notification service also display toast notifications that provide time sensitive
information, such a
s an SMS. The toast notifications are shown for about 10
seconds, but the user may choose to ignore them. These are the same as Android
toast notification.

Android

Functionality

Windows Phone
7

Status bar
notification

Non
-
critical information that user
ma
y not respond to. That is
informative to user

Tile notifications

Toast
notification

Time sensitive data that user may
not respond to

Toast Notifications

Alerts

Modal alerts that the user must
respond to

Application
notifications


Windows Phone 7 Guide for Android
Application
Developers

18



Tool and Tab
B
ar vs.
Application
B
ar

WP7

features a versatile
application bar. The application bar can include up to 4 of
the most common views or application tasks. You can also use application bar
menus for additional context
-
sensitive tasks. If you are using action sheets
in your
Android application, application bar menus give you
similar functionality.

Android

Functionality

Windows Phone 7

Status bar

Information about
device

Status bar

Title bar: to show title
of application or activity

Navigation, Title,
Buttons for vi
ews or
actions

Back button for back
navigation

Page title

View and actions on
Application bar

Comparing
Windows Phone 7

and Android Navigation

WP7 application is a collection of multiple pages. Like on the Android, the user
navigates through differe
nt Activities using widgets such as buttons and links.

Like

Android,
on
WP7 the
Back

button

on the phone

allows the user to navigate
back between pages within an application, or across applications. It behaves much
like the
Back

button in a browser. The
B
ack

button also closes menus and dialogs.
As a developer, you should consider what the
Back

button means to your user and
plan to override it appropriately. For example, you may decide to pause a game
by
using the
Back

button

on the Phone
.

The other two ha
rdware buttons on the WP7 phone, namely, Search and Home,
have fixed behavior.



Windows Phone 7 Guide for Android
Application
Developers

19


Windows Phone 7

Frame and Page Structure

Each WP7 application has a single frame, and it includes areas for:



A page where application content is rendered. This is the conte
nt where
widgets or graphics are rendered.



A reserved space for the system tray and application bar. It also exposes
certain properties, such as orientation to the application.


System Tray and Application Bar

On WP7, the system tray includes indicators

for various system
-
level status
information. The application bar includes the area for the most common application
menus, which may include various data views or tasks.




Windows Phone 7 Guide for Android
Application
Developers

20


Page Structure of
Windows Phone 7

Application

The following diagram shows the
structure of a typical WP7 data
-
bound application,
which resembles a navigation
-
based Android application.


When the user first starts the application, he or she is presented with a splash
screen, designed to welcome the user, as well as to create the pe
rception of fast
response. Splash screens are usually an image file of the entire size of the display.

Usually the application starts with the home page, the main navigation page, with
links for search, and other page widgets. Consider an application that
shows
information about baseball teams and their players. The primary content page,
marked as the widgets page in the above diagram
, have the content of interest.

For
example,

a list of all baseball teams. However, depending on requirement, the
home page c
an also be the primary content page.

This is a possible
application
usage scenario:



A user clicks one of the team links to visit the team details page (

W
idget
D
etails
P
age

) which can provide multiple views. The team details page may
employ a pivot cont
rol or panorama to display different views such as the
team summary and the list of all players (

L
ist of
G
adgets

P
age

) from that
team




A user selects one of the baseball players

and the application
takes the user
to the page with player statistics (

Gadg
et Details page

). The player
statistics page uses controls such as textblocks, multi
-
scale images, or other
multimedia using a MediaElement control




A user can also use the search widget to search and directly access the team
page (

Widget D
etails

P
age

)
or the player page (

G
adget
D
etails

P
age

)

Windows Phone 7 Guide for Android
Application
Developers

21


Application Templates

Eclipse does not provide the project templat
e for Android applications. But

Visual
Studio provides numerous templates
for WP7 application development

to make
your life easier.

Functionality

Visual Studio Template

Eclipse

Information drilldown
applications

Data
-
bound applications

Not available

Utility applications. For
example, Bubble Level

Windows Phone 7

utility
applications

Not available

Games

Windows Phone 7

Game
(XNA) applications

No
t available

Flexible template to design
any application

General
Windows Phone 7

applications

Not available

You can choose the Windows Phone application template to either create an
application with functionality similar to the view
-
based or the window
-
b
ased
Android application type. Lastly, the XNA based games application template gives
you functionality
like

the OpenGL
-
ES application.

Summary

In this chapter we looked at t
he similarities between the application design goals of
the Android platform and t
he WP7 platform. When you plan your WP7 application,
you will be able to leverage your existing work on Android applications.

We also looked at the

application interface design to make sure you are taking
advantage of the WP7 metro design that uses WP7 in
terface guidelines. You will
find that the WP7 tools offer a large library of controls and gestures that have close
counterparts on the Android.

This chapter also showed you the
use of innovative controls like panorama, and
explore the use of live tiles t
o build an engaging WP7 experience.

Related Resources

To go deeper into the topic discussed,
visit
:



Windows Phone 7

User Interface Guidelines




Windows Phone 7

Developer Tools



Silverlight for Windows Phone toolkit

on CodePlex



Design resources for Windows Phone


Windows Phone 7 Guide for Android
Application
Developers

22


Other Resources that you may find useful:



Application Page Model for
Windows Phone 7



Frame and Page Navigation Overview for Windows Phone



Windows Phone 7 Guide for Android
Application
Developers

23


Chapter 3:
The
Developer and
Designer Tools

With the release of the Windows Phone 7 (WP7) developer tools, Microsoft brings
the user
-
friendly, high productivity Visual Studio
D
evelopment environment to WP7.
As

Android application developers
you

are familiar with Eclipse
, and you
can quickly
migrate to WP7 developer tools and work with ease.

A Comparison of Android and
Windows Phone 7

Tools

Visual Studio 2010 Express for Windows
Phone is a full
-
featured Integrated
Development Environment (IDE). Visual Studio 2010 facilitates designing,
developing, and debugging of Windows Phone 7 applications. The other WP7 tools
that help you in the development cycle of the Windows Phone applicat
ion are:



Expression Blend



XNA Game Studio



Windows Phone Emulator

The WP7 developer tools offer the complete functionality that is provided by the
Android application developer tools. The following table gives an overview of the
functionality of each of the
se tools. The table also indicates the equivalent tools you
use for Android application development.

Functionality

Audience

Android
tools

Windows Phone 7

tools

Primary UI
design: Colors,
gradients, and
animation

UI designers

Defined in
XML, any XML
tool

E
xpression Blend

UI design

UI designers
and
programmer
s



ADT UI
plug
-
in



Third
-
party tool
like
DroidDraw

Visual Studio 2010 Express


and Expression Blend

for
Windows Phone

Application
development
(coding)

Programmers

Eclipse

Visual Studio 2010 Express

for Windows Phone


Game
development
Programmers

Eclipse

XNA Game Studio

Windows Phone 7 Guide for Android
Application
Developers

24


You can use the Android team structure and overall development process t
o build
applications for Windows Phone 7. The WP7 toolset ensures that the entire team of
designers, developers, and testers familiar with Android development tools will find
it easy to migrate to the WP7 toolset
.

Development Life
C
ycle and
Windows Phone 7

Developer
Tools

Expression Blend 4 and Visual Studio facilitate a close collaboration between
designers and developers.

Both these tools share the same file structure and source files. Expression Blend
uses XAML for UI design and the XAML is consumed by V
isual Studio. This system
allows separation of responsibilities between the designer and the developer while
allowing them to work together seamlessly.


Project Management

for Windows Phone 7

Like Eclipse, Visual Studio 2010 Express for WP7 is a full
y
-
featured IDE. Visual
Studio 2010 Express allows
you

to:



Manage the entire structure of the development project, the
source,

and the
resource files



Configure the application codebase, known as Visual Studio Solution, as a
collection of projects in a separ
ate functional unit

With Visual Studio 2010 Express,
you

can manage source files, share code, and
manage the work among team members. Visual Studio integrates a compiler and a
(coding)

Testing /
Emulation

Testers

Android
Emulator

Windows Phone Emulator in
Visual Studio 2010 Express

Windows Phone 7 Guide for Android
Application
Developers

25


debugger. You can access both the compiler and the debugger either from the GUI
or the command line.

To create a sample application, do the following:

1.

Start Visual Studio Express for WP7 from
Start

menu.

2.

In Visual Studio Express, click
File
.

3.

Click
New Project
.

4.

In the
New Project
dialog box, select
Windows Phone Application
.

5.

In the
Nam
e of the project

text box, enter ShoppingList as the name of
the project, and click
OK
. Visual
Studio Expre
ss creates

the new project
.

The
Solution Explorer

pane

displays the solution that you created. This
example
solution has only

the ShoppingList projec
t. The project contains the sources,
resources, and properties.


Note
:

Visual Studio Express for WP7 does not provide integration with source
control systems. The Visual Studio Professional edition provides features such as
integration with various source

control systems like Subversion. You can also use
Visual Studio Team System, which is designed for greater communication and
collaboration among the development teams.



Windows Phone 7 Guide for Android
Application
Developers

26


The UI Design Tools

The WP7 developer tools include:



Expression Blend



Visual Studio UI

Designer

WP7 uses Silverlight and a specific

XML markup language for the UI specification.

Visual Studio UI design tool is equivalent to the Eclipse ADT UI plug
-
in.
As
Android
application developers

you are

familiar with
E
clipse ADT UI plug
-
in
and you
wil
l find
it easy to use this tool. In our example, the main page for the ShoppingList
solution, MainPage.xaml, is alread
y open in the Visual Studio UI D
esigner tool for
editing.

To change the titles of the application and the current page, do the following:

1.

Right
-
click the title MY APPLICATION and select
Properties
.

2.

In the
Properties

window, select
Text

and enter SHOPPING LIST.

You can also change the title of the page by entering my list in the
Text

property of
the title.

To change the title of a page, do
the following:




1.

Drag a Text box from the
Toolbox
and place it above the textblock.

2.

Update the Text box‟s
Text

property to delete any existing entry.

Windows Phone 7 Guide for Android
Application
Developers

27


3.

Below
Properties
, click
TextBox1
, and enter
txtItem

to change the ID of
the textbox to
txtItem
.

4.

Resize

the Text box by dragging its lower right corner so that its width is
300.

5.

Drag a
Button

to the right of the
TextBox
.

6.

Change the button‟s
Content
property to
Add
, and its
ID

to
btnAdd
.

7.

Resize the button so that its width is 140.

8.

Drag another
TextBox

and p
lace it underneath the
txtItem

textbox.

9.

Resize the new
TextBox

so that it covers the rest of the phone screen.

10.
Update the
ID

of the new TextBox to
txtList
.

11.
Update the
Text
property of the new TextBox to
Nothing here yet!.


Your application looks as shown b
elow:



12.
To start debugging, compile the application and launch
,

press
F5

or click
Debug


The application starts the WP7 emulator,
deploys,

and runs

the ShoppingList
application. You can click
Add.
But the application does not respond
because

there
is no
code for the button you inserted in the previous steps.

Windows Phone 7 Guide for Android
Application
Developers

28



Note
: You can use the context menus to add the event handlers or to set the
control properties. The emulator‟s integration with Visual Studio allows for a direct
manipulation of controls and makes
it easy to add logic to the UI controls.

Expression Blend for
Windows Phone 7

Expression Blend for WP7 is a visual UI design tool that is suitable for designers.
There is no exact equivalent to Expression Blend in Android development toolset.
Expression Bl
end is
like

VS Design. With Expression Blend, you can:



Drag and drop UI elements to design the UI



You can layout the controls accurately up to pixels. You can easily create
and use color palettes and gradients



Add special effects, such as reflections and s
hadows



Import Photoshop files and Android application resources to the Windows
Phone application



Create fine application behavior and animations without any programming


Windows Phone 7 Guide for Android
Application
Developers

29



Expression Blend is for UI designers and Visual Studio Design is for programmers.
Pr
ogrammers can also use Visual Studio Design

to integrate the application logic to
the UI design. You can also use the Visual Studio UI design tool to design UI for
applications.

Both Expression Blend and Visual Studio Design have:



A single control set that

provides accurate fidelity to their run
-
time visual
representation. This feature allows you to easily visualize the application.



Same project structure and share the same source files for designers and
developers.



Use or produce XAML, which is a Silverlig
ht XML declarative markup
language used for interface design. This feature allows a designer to work on
the design using Expression Blend while the developer uses Visual Studio to
design the logic behind the application. You can establish a smooth design
a
nd development workflow.



Windows Phone 7 Guide for Android
Application
Developers

30


Visual Studio

Visual Studio has a simple to use, full
-
featured, and a configurable source editor.
The editor tool has various features that are familiar to Eclipse users. The features
of the editor include:



Flexible search



Rich edi
ting



Format code



Auto
-
completion of code



Outline or hide code

To add logic to the application, do the following:

1.

To stop the running application, click
Debug
.

2.

Click
Stop Debugging
.

3.

Double click
Add
. The dialog displays
MainPage.xaml.cs

with a method
btnAd
d
.

4.

Click the
MainPage

class.


5.

To add logic to the items that are added to the shopping list, edit the
btnAdd_click

method
.

6.

Enter the following code
: string tStr = txtItem.Text
;
.

Note
: When you enter t for txtItem, Visual Studio displays the auto
-
completi
on
dialog box. The Visual Studio equivalent for Eclipse auto
-
completion is called
content assistant.


Windows Phone 7 Guide for Android
Application
Developers

31



7.

Enter the following code in the
btnAdd_click

method:


if (!String.IsNullOrEmpty(tStr))

Note:

When you type String, Visual Studio displays the
auto
-
completion dialog box.
When you type Is, Visual Studio displays the class methods of the String class.



VS IntelliSense in Visual Studio

VS IntelliSense is a feature of the IDE which uses history, code context, and .NET
reflection for intelligent au
to
-
completion. VS IntelliSense can suggest and complete
variable names, parameters, classes, and method names. VS IntelliSense can also
generate appropriate code where needed, as shown in the
code

below:


To complete the event hookup, Visual Studio genera
tes an empty stub for the event
handler
button1_click

method.




Windows Phone 7 Guide for Android
Application
Developers

32


Code Snippets in Visual Studio

Code Snippets in Visual Studio is equivalent to code templates in Eclipse. Code
Snippets allows you to insert code fragments with a few clicks. Visual Studio
c
ontains a large number of snippets. These snippets help
you

to create their own
snippets. You can also create an index and search for the
code snippets by using
the self
-
defined terms.

To use a code snippet, do the following:

1.

To start the
Insert Snippet

prompt, press
CTRL+K

CTRL+X

2.

To insert a code snippet for an if statement in the code, select
Visual C#

followed by

i



The inserted snippet shows the parts of the code that
you need

to complete.

private void

btnAdd_Click(
object

sender, RoutedEventArgs e
)

{


string

tStr = txtItem.Text;


if

(!String.IsNullOrEmpty(tStr))


{



if

(
true
)



{



}


}

3.

To complete writing the code for the method, enter the required code so
that the body of the method is complete as follows:


string

tStr = txtItem.Text;


if

(
!Str
ing
.IsNullOrEmpty(tStr))


{



if

(txtList.Text == “Nothin here yet”)



{




txtList.Text = “”;



}



txtList.Text += txtItem.Text + “
\
n”;



txtItem.Text = “”;


}

Visual Studio supports various refactoring mechanisms. You can select any piece of
code and ri
ght
-
click the code to access the refactoring menu.

Windows Phone 7 Guide for Android
Application
Developers

33


Visual Studio
E
ditor

Visual Studio editor is customizable. Visual Studio editor allows you to define
various keyboard shortcuts or create your own macros. Macros help you to
automate repetitive actions b
y combining a series of commands and instructions.
You

can easily customize Visual Studio
E
ditor to use shortcuts and keyboard
combinations with which they are familiar.

Instead of opening a separate window for each file, as in Eclipse, the default view i
n
Visual Studio uses tabbed windows. You can change this behavior to suit your need.
You can change the way in which various windows are docked within Visual Studio
Shell.

Building Applications

Visual Studio Express for WP7 allows you to build the Visual

Studio solution on
demand. It allows you to separately build each project to make a part of the
complete solution.

Visual Studio uses an XML based, declarative build system called MSBuild. MSBuild

is equivalent to Ant and Nant. You can access the builds e
ither from the GUI or by
using the command line for batch processing. MSBuild is flexible and allows you to
create a specific target either as a debug build or as a release build.


Windows Phone 7
Emulator

T
he
WP7 Emulator
provides a virtualized environm
ent in which you can deploy,
debug, and test applications. The
WP7 Emulator
is designed to provide a
comparative performance of an actual device and meets the peripheral
specifications required for application development.

To access the WP7 Emulator

from
Visual Studio
,
do
any of the following:



From
Deploy

menu, click
Deploy Solution



Press
F5

in the key board
, this start
s

the Emulator

along with the debugger



Press
CTRL+F5
,

this

start only the Emulator

Windows Phone 7 Guide for Android
Application
Developers

34


The
WP7 E
mulator

is
like

the Android
S
imulator.
However,

these differences are
there:



I
n
A
ndroid emulator you can have access to all the system application
like

Phone Dialer, Contacts, Mail,
and
Media Gallery
. But the
WP7 E
mulator

the
system

applications

are not directly accessible to
you
. Though it can be
acce
ssed by
the L
aunchers and
C
hoosers.



A
ndroid
supports
various display height and width
. Likewise, you can
customize the
Android
emulator
for parameters
like
S
creen
H
eight,
W
idth,
RAM

size,
and Sensors
. As WP7 have specific hardware requirements
, you
cannot
modify the
WP7 E
mulator

for these hardware parameters.

Debugging

Visual Studio Express Phone 7 includes a symbolic debugger that you can use with
the
WP7 EMULATOR
or with a remote device. Once the application loads in the
debugger, you can view the variabl
es in the application and control their execution.

To work with debugger, do the following:

1.

To
start

the debugger, press
F5

2.

In
Textbox

you previously created, enter
napkins

and click
Add
. Refer to
the image below.


Note
:
napkins

is added after Nothing her
e yet!

3.

In Visual Studio, click the light blue area to the left of the string tStr =
txtItem.Text; line.


Visual Studio inserts a breakpoint at that line.

Windows Phone 7 Guide for Android
Application
Developers

35



4.

Launch the debugger again using
F5
.
When the application loads into the
debugger, rest the mouse
pointer over
txtItem

in the code

5.

Click
+

in the pop
-
up to view the variable
txtItem
.

Tracking Variables

You can view the details of the variable
s

such as the
T
ype,
Fi
elds, and
P
roperties.
The
dialog

below shows how you can
scroll

up and down the
T
ype
H
iera
rchy to
inspect the objects.


You can set a watch on certain variables to keep them under observation
continuously.

To track variables, do the following:

1.

Right
-
click
txtList
, and click
Add Watch.

The watch window displays the variable
txtList
.

2.

Click
+ ic
on
near txtList
,

to expand txtList.

Windows Phone 7 Guide for Android
Application
Developers

36



3.

To ensure that the control does not enter the if statement, press F10 to step
through the code.

if

(txtList.Text == "Nothing here yet")


{


txtList.Text = "";


}


You
can observe in the
Watch

window that the value of txtList.Text is
Nothing here
yet.

But it gets compared with
Nothing here yet

(with no exclamation point.) This is
a bug in the code.

Change the statement as shown below to add the exclamation point:

if

(txt
List.Text == "Nothing here yet!")


Note
: While in the debugger, you can use the VS immediate mode where you can
write the managed code instructions to modify or view the variables or execute
code to help with debugging.


4.

Update the code and re
-
launch th
e debugger by pressing
F5
.

5.

To test the application, add items to the
shopping list
.

Windows Phone 7 Guide for Android
Application
Developers

37



A Note about Debugging

You will observe that you can easily debug a WP7 application using the managed
programming environment.
Like

Eclipse, the debugging in WP7 applicat
ion is done
entirely at the application level using the C# code and types.

Note
: The .NET framework includes two classes called Debug and Trace, which help
you to write run
-
time debug messages to the output window. C# also supports an
assert statement, whi
ch is evaluated at run time. If the statement returns true,
Visual Studio does not respond. But if the statement returns false, th
e program
enters the debugger.



Windows Phone 7 Guide for Android
Application
Developers

38


Summary

In this chapter we looked at
t
he Windows Phone 7 Developer Toolset
. The Toolset

incl
udes the rich tools that are designed to support every step in the entire
application development lifecycle. The design, development, and the testing tools
are equivalent to the existing Android team roles and processes. The tight
integration between the W
P7 tools help
s

you to streamline the design, develop the
workflow, and test the workflow. These tools provide an end
-
to
-
end functionality
and are highly customizable.

Windows Phone 7 Guide for Android
Application
Developers

39


Chapter 4: C# programming

This chapter discusses the C# features that map to the most c
ommon Java
features. This chapter includes the code snippets, which help you to work faster
with C# code. It describes important C# features that help you write safe code and
enhance productivity.

The chapter discusses the following features of C# programm
ing:



Managed Programming



Class Declaration



Strong Typing



Class Constructors



Properties



Parameter Types



Access Privileges



Methods with multiple Parameters



Inheritance



Protected Access



Instance vs. Class Level Access



Abstract Classes



Interfaces



Polymorphism



Structs



Object Lifecycle: Creation and Deletion of Objects



Type Checking vs. Reflection



Exception Handling



Windows Phone 7 Guide for Android
Application
Developers

40


Managed Programming

WP7 supports
managed programming

in C# and VB.NET.


The C# compiler (and similarly, the VB compiler) compiles the C# (or VB.NET) code
in an intermediate language (IL) byte code and metadata. The Common Language
Runtime (CLR) executes the bytecode. The C# uses metadata to manage type
safety, exception han
dling, and array bounds. CLR also manages memory and
performs garbage collection. In Android, the Java code is compiled in a .class file,
and the file is converted to a .
dex

file. The .
dex

file is optimized for low foot print
on memory. The .
dex

file is th
en converted to an
apk

file, which is executed on an
android platform.



Windows Phone 7 Guide for Android
Application
Developers

41


A Comparison between C# Features and Java Classes

Class Declaration

Like Java, C# does not separate class definition from class implementation. The
compiler derives the metadata abou
t the classes from class implementation. As in
Java we can define multiple

class definition in same file.

C# also defines the
multiple classes in same file
.

using System; // In java this is similar to import

namespace FirstApplication // scop
e for classes. Same like package declaration in Java

{

class
Person



// only uses class implementation

{


private
DateTime

birthDate; // a private field accessible to this class


private int ageOn(
DateTime

date)
// a private method



{


TimeSpan

span = date.Subtract(birthDate); //uses a .notation to invoke


return span.Days;


}


public int age
// this is a property.



{


Get // just a getter; i
t’s a read
-
only property


{


return this.ageOn(
DateTime
.Now);





}


}



public Person(
DateTime

dob) // instance constructor. Same like Java


{





// it combines allocation and initialization



birthDate = dob;




}

}

class
Program

//
Same like Java, another class in the same file.

{


static void Main(string[] args) // main entry point into the program


{


Person

p = new
Person
(new
DateTime
(1973,11,12));
//construc
t an instance


System.
Console
.WriteLine(
"The age is is"
+ p.age.ToString());


DateTime

dt = p.birthDate; //error in compilation birthDate is private



}


}

}


The following example shows the public signature of the class Person

that consists
of property, age, and constructor.

Instead of using the
import

statement in Java, C# employs a
using

statement to
refer to the metadata of other classes. The namespace declaration that is shown at
the top of the file is used to declare the
scope and to organize the code. You can
access classes in other namespaces by referring to a fully
-
qualified name. You can
refer to System.Console.WriteLine in the example above, where the console is in
the System namespace.

C# uniformly uses the “ ” notat
ion for referring to all methods, fields, and
properties.

Strong Typing

Windows Phone 7 Guide for Android
Application
Developers

42


C# is a strongly typed language
like

Java. The types must be specified for variables
and input/output parameters. The compiler enforces the types. In the section on
generics, you
can see how C# uses strong typing for collection classes.

Strong typing works similarly for all classes. The code example below shows the
strong typing for primitive types.


int

a = 5;

int

b = a + 2;
//OK


bool

test =
true
;
// OK

int

c = a

+ test;
// Error. Operator '+' cannot mix type 'int' and
'bool'.

Class Constructors

Like Java, C# uses instance constructors to create and initialize instances. For
example: p is an instance of the Person class. You can construct and initialize p
with a g
iven birthdate, in a single statement.

Person

p =
new

Person
(new
DateTime
(1973,11,12));

Properties

You

often need to decide about whether to implement a member as a property or a
method. In this case, the design pattern is identical for both Java and C
#. As a
general rule, use properties when you need to access data. To take any action on
the data, use methods.

Properties helps to abstract away from directly accessing the members of a class.
This technique is similar to using accessors (getters) and mod
ifiers (setters) in
Java. You can make the property read
-
only by providing the getter, write
-
only by
providing the setter, or read
-
write by providing both getter and setter.

Parameter Types

Like

Java, C# uses the value parameters by default. C# does not ha
ve pointers. But
C# allows the passing of parameters by using the ref modifier. Instead of pointers,
you can use parameters with ref where you want to achieve an additional
functionality in a method. In some cases, you need to use the reference parameters
for better efficiency since they avoid data copying.



void

Foo

(
ref

int x, int y)

{


x =
0
;


y = 0;

}

..

Windows Phone 7 Guide for Android
Application
Developers

43


int a = 5;

int b = 8;

Foo (
ref

a, b);

//a is zero and b is still 8

C# also provides the parameters with an out modifier. This out modifier represent
s
the parameters that must be initialized by the called method before returning. This
design pattern is often used to return the error in addition to the value of the
function.

Access Privileges

Like Java, C# allows the access privileges on fields (for exa
mple, birthDate),
properties (for example, age) and methods (for example, ageOn). C# uses public,
private, and protected as modifiers to denote the three different levels of access
privileges.

In the above example, the compiler gives an error response on
p.birthDate since
that variable is private. Therefore p.birthDate is not accessible from the Program
class. Similarly, the ageOn method is also private and inaccessible from the
Program class.

Methods with
Multiple P
arameters

Both Java and C# support me
thods with multiple parameters. While C# traditionally
uses positional and unnamed parameters, the latest version of C# has introduced
the named parameters. The following example shows the comparative syntax for
Java and C#.

Java

C#

void addEmployee(stri
ng name, int
id, int age);

void addEmployee(string name, int
id, int age);


Off.addEmployee("Phil",2345, 23);

Off.addEmployee("Phil",2345, 23);

Off.addEmployee(name: "Phil",
age:23, id:2345);

Like Java, C# explicitly supports method overloading. C# diffe
rentiates between the
methods that have the same name by using information about the parameter
types. The following code sample shows how C# differentiates between methods
that have the same name.

void

insert (myClass obj,
int

index);

void

insert (myClas
s obj, myClass before);

The method insert may be called with both these signatures:

list.insert (my
Obj1
,
4)
;

list.
insert (myClass obj, myClass before);

Windows Phone 7 Guide for Android
Application
Developers

44


The following code sample shows another example of method overloading:

using

System;

namespac
e

SecondApplication

{


struct

Point

// In contrast Java where struct not
supported, C# structs are closer


{
// classes.


public

double

x;
// struct fields ca
n also have access
modifiers


public

double

y;


public

Point(
double

p1,
double

p2)
//a constructor for the struct


{


x = p1;


y = p2;


}


}


interface

IThreeDShape

// an interface,
like an Java interface


{
// defines the behavior


double

volume


{


get
;
// Volume is a read
-
only property. no
setter


}


}


abstract

class

Shape


// this class is marked abstract, i.e. may
not be instantiated.


{


protected

Point

origin;
//only derived classes may access


protected

static

int

counter = 0;
// Similar to protected variables in Java



public

string

ID;


protected

Shape()
//a constructor. Same name as the class
name

{


counter++;
// class variable being updated


}


public

Point

Origin

// similar to Java class

variables


{


set


{


origin =
value
;


}


}


public

abstract

double

Area
//denotes that this property must be
overridden


{

// in a derived class


get
;


}


public

abstract

bool

contains(
Point

p);
// this method must also be
overridden


}



class

Rectangle

:
Shape

//Similar to Java, s
ingle iinheritance


{


public

double

length;
//field accessible from others


public

double

width;


public

Rectangle(
Point

o,
double

l,
double

w)
//a public constructor


{


ID =
"Rectangle_"

+ counter.ToS
tring();


origin = o;


length = l; width = w;


}

Windows Phone 7 Guide for Android
Application
Developers

45



public

Rectangle(
double

l,
double

w)
// one constructor using another
constructor

//creates a rectangle at the origin


:
this
(
new

Point
(0, 0), l, w)


{


}


public

override

double

Area
// unlike Java, overridden method must


{
// use override keyword


get


{


return

length * width;


}


}


public

override

bool

contains(
Point

p)


{


if

((origin.x < p.x && origin.x + length > p.x) || (origin.x > p.x &&
origin.x
-

length < p.x))


if

((origin.y < p.y && origin.y + length > p.y) || (origin.y > p.y &&
origi
n.y
-

length < p.y))


return

true
;


return

false
;


}


}


class

Square

:
Rectangle


{


public

double

side;


public

Square(
double

s)


:
base
(s, s)
//constructor


{


ID
=
"Square_"

+ counter.ToString();


side = s;


}


}

class

Cube

:
Shape
,
IThreeDShape

//similar to Java, class implements
interface


{


public

double

side;


public

Cube(
double

s)


{


ID =
"Cub
e_"

+ counter.ToString();


side = s;


}


public

override

double

Area


{


get


{


return

6 * side * side;


}


}


public

double

volume


{


get



{


return

side * side * side;


}


}


public

override

bool

contains(
Point

p)





}


class

SecondProgram


{


static

void

printVolume(
IThreeDShape

tdShape)


{


Console
.WriteLin
e(
"The volume is "

+ tdShape.volume);

Windows Phone 7 Guide for Android
Application
Developers

46



}


}


static

void

Main(
string
[] args)


{


Rectangle

r =
new

Rectangle
(5.0, 3.0);


Cube

c =
new

Cube
(4.0);


SecondProgram
.printVolume(c);


double

a = r
.Area;


Console
.WriteLine(
"The area of rectangle "

+ r.ID +
" is "

+
a.ToString());


bool

b = r.contains(
new

Point
(1, 2));


Console
.WriteLine(
"The point is in "

+ b.ToString());
// will print
TRUE



}


}

}

Inheritance

Like Java, C# also uses a single inheritance mechanism. Inheritance is specified by
listing the parent class after the class name as shown below. In this example, the
class Rectangle inherits from the class Shape, whereas the class Square inher
its
from the class Rectangle.

class

Rectangle : Shape

class

Square : Rectangle

In C#, the constructor of the base class is automatically invoked when you
construct an instance of a derived class. However, a derived class can invoke a
specific constructo
r of the base class if needed. This you can see in the constructor
of the Square class.

public

Square(
double

s):
base
(s, s)
//constructor. Calls parent
constructor explicitly

Like Java, a C# derived class may not override a method by redefining it. The c
lass
must use the keyword override in its method definition.

p
ublic

override bool

contains(
Point

p)

{



}

Protected Access

Like

Java, in C#, you can use protected modifier to control access to fields,
properties, and methods. You can implement protected

variables in C# by using the
protected access modifier, as shown in the code sample below:

protected
Point

origin
;

protected static int

counter=0;

Instance
vs.

Class Level Access

Windows Phone 7 Guide for Android
Application
Developers

47


Like

Java, C# uses a static modifier to denote class level methods, field
s, and
properties. Everything else is at an instance level. In the above code example, the
counter is a class level variable.


protected static int
counter=0
;

Abstract Classes

The abstract classes are classes that cannot be instantiated. Java provides a
syntax
for an abstract class. The class Shape defined in the above C# code sample is an
abstract class. The abstract classes requires that both Area and the method it
contains must be overridden in any derived classes.

abstract class
Shape


{


public a
bstract double

Area


{



get
;


}


public abstract bool

contains(
Point

p);

Interfaces

The Java and the C# interfaces are similar. In the sample code shown below,
IThreeDShape defines an interface that is implemented by the Cube class.


interface
IThreeD
S
hape


{


double

volume


{



...


c
lass

Cube
:

Shape
,

IThreeDShape

Polymorphism

The working of polymorphism is the same in both Java and C#. You can pass a C#
derived class as a parameter to a method that expects a base class. Similarly, you
can pass a

class that implements a particular interface, as a parameter to the
method. The following sample code shows how to pass an object of the class Cube
as a parameter, where the method expects an object of the class IThreeDShape.

static void
printVolume(
ITh
reeDS
hape

tdShape)


{


Console
.WriteLine(
“The volume is ”

+ tdShape.volume)
;


}




Windows Phone 7 Guide for Android
Application
Developers

48



Cube
c =

new

Cube
(4.0);


SecondProgram
.printVolume(c);

Structs

C# structs are
like

classes. C# structs can access modifiers and have constructors,
methods, and properti
es. While a struct is a value, a class is a reference.

struct

Point


{


public double

x;


public double

y;



Windows Phone 7 Guide for Android
Application
Developers

49


Object Lifecycle: Creation and Deletion of Objects

The memory management in both Java and C# are similar. Both Java and C#
performs automatic

memory management. Instead of allocating memory, C# allows
you to use the new operator to create objects and initialize them. When a code no
longer accesses an object, the object becomes eligible for garbage collection. The
.NET CLR garbage collector in C
#

periodically frees up the memory for such objects.
With C#, you don‟t have to track the free memory usage.

In rare circumstances, you may need to perform a cleanup at the time the object is
destroyed. C# allows the use of destructors, but in practice th
is is rare.

Type Checking vs. Reflection

Java Reflection is a versatile feature that you can find both in C# and Java. You can
use reflection to:



Get information type from an existing object



Dynamically create an instance of a type



Bind the type to an exi
sting object, access its methods, and access its fields
and properties.

The following table maps the dynamic type checking in Java with its corresponding
C# reflection features.


Java Reflection

Explanation

C# Reflection

Class1 instanceOf
BaseClass

Is Ob
ject a subclass
or member?

type.IsSubclassOf(typeof(BaseClass))

object.getClass()

Is Object a member
of

object.getType() or typeof

search from

Method[] methods =
c.getMethods();

Does the object
implement the
method?

type.GetMethod(MethodName)


Does the

class
respond to the
method?

type.GetMethod(MethodName)

Method.invoke(..)

Invoke a method

type.InvokeMember(…)

Exception Handling

Exception handling is similar in both C# and Java. You use a use block to handle
exceptions. You can also use either catch
specific exceptions or a catch
-
all
statements. The syntax for exception handling is similar in Java and C#.


Windows Phone 7 Guide for Android
Application
Developers

50


try


{



//block of code



}


//Most specific:


catch

(
ArgumentNullException

e)


{



Console
.WriteLine(
“{0}First exception caught.”
, e);


}


//Le
ast specific


catch

(
Exception

e)


{



Console
.WriteLine(
“{0}First exception caught.”
, e);


}



Windows Phone 7 Guide for Android
Application
Developers

51


A Comparison of Important Class Libraries

Strings

C# provides a comprehensive string class, which offers you all the features that you
associate with this class.


Java
Feature

C#

Notes

String

String greeting = “Hello WP7!”;

Int length = greeting.Length;



Comparison

String color = “pink”;

If (color == “red”)

System.Console.WriteLine(“Matchin
g colors!”);

string name = “Joe”;

if (string.compare(name, “Jack”)
> 0)


System.Console.WriteLine(name +
“ comes later”);

Strings are compared using ==.
They are compared
lexicographically using
compare
.

Concatenation

System.Console.WriteLine
(greeting + " You rock!")

Strings can be concatenated
with the „+‟ operator. (This