Download Kwon - CS Course Webpages

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CSCE 315: Android Lectures (2/2)
• Dr. Jaerock Kwon
• Kettering University
App Development for Mobile Devices
Jaerock Kwon, Ph.D. Assistant Professor in Computer Engineering
App Development for Mobile Devices
Kettering University
Jaerock Kwon, Ph.D. Assistant Professor in Computer Engineering
1
Announcement
2
3
Announcement
Lecture 2
Application Fundamentals
Kettering University
Kettering University
2
Today’s Topics
4
5
  Android development tools
  Virtual Device Manager
  Android Emulator
Android Development Tools
  Dalvik Debug Monitoring Service
  Application components
  Activity
  Service
Android Development Tools
  Broadcast receiver
  Content provider
Kettering University
  Intent
  App manifest
  Application resources
Kettering University
Virtual Device Manager
  Create and manage Android Virtual Devices
  Window menu item in Eclipse – Android SDK and AVD Manager
  You can start Android Emulator from the AVD Manager.
Kettering University
6
Android Emulator
  An implementation of the Android virtual machine.
5
Virtual Device Manager
  Use this to test and debug your Android applications.
  Create and manage Android Virtual Devices
  Window menu item in Eclipse – Android SDK and AVD Manager
  You can start Android Emulator from the AVD Manager.
Android Development Tools
Kettering University
7
Kettering University
6
  Written in Java
Dalvik Debug Monitoring Service
8
  The compiled Java code along with resource files and data is
bundled by aapt tool into an Android package.
9
  aapt (Android Asset Packaging Tool)
  Probably you will not use this directly.
  Use the DDMS perspective to monitor and control Dalvik virtual
machines on which you are debugging your apps.
  IDE plugins utilizes this tool to package the apk file.
  Android package:
  A single archive file. Its filename extension is .apk.
  This apk file is the file that users download to their devices.
  Linux process
  Every application runs in its own Linux process.
Android Applications
  Each process has its own virtual machine.
Kettering University
Kettering University
Kettering University
Android Application
10
  Written in Java
  The compiled Java code along with resource files and data is
bundled by aapt tool into an Android package.
  aapt (Android Asset Packaging Tool)
  Probably you will not use this directly.
  IDE plugins utilizes this tool to package the apk file.
  Android package:
  A single archive file. Its filename extension is .apk.
  This apk file is the file that users download to their devices.
  Every application runs in its own Linux process.
Android Applications
  Each process has its own virtual machine.
11
  An application can use elements of other applications (should be
permitted by the apps).
  For this to work, an application process can be started when any part of
it is needed and instantiate the Java objects for that part.
  Therefore, Android apps don’t have a single entry point (like main()
function).
  Rather they have essential components that the system can instantiate
and run as needed.
  Four types of components
  Activities
  Services
  Linux process
Kettering University
9
Central Features of Android
  Broadcast receivers
  Content providers
Kettering University
  No visual interface.
  Application’s presentation layer.
  Every screen in you app is an extension of the Activity class.
12
Activities
  Runs in the background of an indefinite period of time.
13
  Each activity is given a default window to draw in.
  Examples:
  Activities use Views to form GUI.
  Application’s presentation layer.
  Each service extends the Service base class
  Every screen in you app is an extension of the Activity class.
  It is possible to connect to an ongoing service (and start the service
if it is not
already
running).
  Each
activity
is given
a default window to draw in.
  Play background music, fetch data over the network.
  Each view controls a particular rectangular space within the window.
  Views are where the activity’s interaction with the user takes place.
  ContentView is the root view object in the hierarchy of views.
  You can communicate with service through an interface that the service
  Activity.setContentView() method.
exposes.use Views to form GUI.
  Activities
  Activity is equivalent to Form in desktop environment.
Examples:
start, pause,
stop, restart
playback.
   
Each
view controls
a particular
rectangular
space within the window.
  Views are
activity’s
interaction
with the userprocess.
takes place.
  Services
runwhere
in thethe
main
thread
of the application
Application Components
  ContentView
is the root
view components.
object in the hierarchy of views.
 
It is not a sub thread
of other
  University
Activity.setContentView() method.
Kettering
Kettering University
  Activity is equivalent to Form in desktop environment.
Kettering University
Kettering University
Services
14
  No visual interface.
  Runs in the background of an indefinite period of time.
  Examples:
  Play background music, fetch data over the network.
  Each service extends the Service base class
  It is possible to connect to an ongoing service (and start the service
if it is not already running).
  You can communicate with service through an interface that the service
exposes.
  Examples: start, pause, stop, restart playback.
  Services run in the main thread of the application process.
  It is not a sub thread of other components.
Kettering University
Broadcast Receivers
  A Broadcast Receiver receives and reacts to broadcast
announcements.
Services
15
14
  Broadcast examples from the system
  The timezone change, the battery is low, a picture has been taken, and
  Noetc.
visual interface.
 
application
can haveofany
receivers
to respond to
  An
Runs
in the background
an number
indefiniteofperiod
of time.
any announcements.
  Examples:
  BRs
dobackground
not displaymusic,
user interface.
  Play
fetch data over the network.
  BRs
can
start an
activity
response base
to theclass
information they receive.
Each
service
extends
theinService
  It is possible to connect to an ongoing service (and start the service
if it is not already running).
  You can communicate with service through an interface that the service
exposes.
  Examples: start, pause, stop, restart playback.
Kettering University
  Intent Object
  An abstract description of an operation to be performed.
Intents
  Android system finds the appropriate activity, service, or set of
16
broadcast receivers to respond to the intent.
Intents Object and Intent Filters
17
An inter-app message passing framework
  Two groups of intents
  Activities, Services, Broadcast Receivers are activated by Intents, asynchronous
  Explicit intents:
messages.
  They name the target component.
  can
Component
names
are not
known to developers
of other
apps.
  You
broadcast
messages
system-wide
or to a target
Activity
or Service.
  So they are used for application internal messages.
  Then,
the system
  Implicit
intents: will determine the target(s) that will perform any actions as
appropriate.
  They are often used to activate components in other apps.
  Separate methods for activating each type of component.
  For implicit intents
  Activity: Context.startActivty() or Activity.startActivityForResult()
  Need to test the intent object against Intents Filters associated with
  potential
The responding
activity can look at the initial intent that caused it to be launched by
target.
calling getIntent().
  Service: Context.startService()
Kettering
  University
Android calls the service’s onStart() method and passes it the intent object.
  Broadcast: Context.sendBroadcast(), Context.sendOrderedBroadcast(), …
  Android delivers the intent to all interested receivers by calling their onReceive()
Kettering University
Intent Objects
  Intent Object
  An abstract description of an operation to be performed.
  Android system finds the appropriate activity, service, or set of
broadcast receivers to respond to the intent.
  Two groups of intents
  Explicit intents:
  They name the target component.
  Component names are not known to developers of other apps.
  So they are used for application internal messages.
  Implicit intents:
  They are often used to activate components in other apps.
  For implicit intents
  Need to test the intent object against Intents Filters associated with
potential target.
Kettering University
18
Intent Filters
19
A bundle of information
  Intent Objects contains information of component that receives the intent and the
Android system
Intents Object and Intent Filters
  Intent Objects contains
 
 
 
17
  Component name - optional
  Action
  A string naming the action to be performed.
  Examples
Intent
Object
ACTION_CALL:
Initiate aof
phone
call
  An abstract
description
an operation
to be performed.
  ACTION_EDIT: Display data for the user to edit
  ACTION_MAIN:
Start the
up asappropriate
the initial activityactivity,
of a task service, or set of
Android
system finds
  ACTION_BATTERY_LOW:
A WARNINGto
THAT
THEintent.
BATTERIY IS LOW
broadcast
receivers to respond
the
  Data
Two
groups
of intents
  The
URL of the
data to be acted on.
  Explicit
Categoryintents:
 
  They
Examples:
 
name the target component.
CATEGORY_HOME: The activity displays the home screen.
   
Component
names are not known to developers of other apps.
  CATEGORY_LAUNCHER: The activity can be the initial activity and is listed in the top-level
  Soapplication
they are used
for application internal messages.
launcher.
  Implicit intents:
often used to activate components in other apps.
Kettering
  University
They are
  For implicit intents
  Intents should be resolved since implicit intents do not name a
target component.
18
Intent Objects
  Intent filters are generally in the app’s manifest file
A (AndroidManifest.xml)
bundle of information
 
Objects
contains
information
of component
receivesaction
the intent
and the
  Intent
Most
apps
have
a way
to start
fresh. The that
following
and
Android
system
category are default values of an Android project.
  Intent Objects contains
<intent-filter>
  Component name - optional
<action android:name="android.intent.action.MAIN" />
  Action
<category android:name="android.intent.category.LAUNCHER" />
  A string naming the action to be performed.
</intent-filter>
  Examples
  ACTION_CALL: Initiate a phone call
  ACTION_EDIT: Display data for the user to edit
  ACTION_MAIN: Start up as the initial activity of a task
  ACTION_BATTERY_LOW: A WARNING THAT THE BATTERIY IS LOW
  Data
Kettering
  University
The URL of the data to be acted on.
  Category
  Examples:
Note Pad Example
20
Yourcan
program
have
something
  You
shareshould
your data
and
you canlike…
access shared data of other
String number = "tel:810-555-1234”;
apps.
<activity android:name="NotesList" android:label="@string/title_notes_list”>
…
</activity>
<activity android:name="NoteEditor” ...
…
</activity>
<activity android:name="TitleEditor” ...
…
</activity>
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(number));
startActivity(callIntent);
  Apps do not call ContentProver methods directly. Rather they use
a ContentResolver
object
and callfor
itsphone
methods
  Do
not forget to add the
permission
callinstead.
in your App
Manifest XML file.
  ContentProviders are activated when they are targeted by a
uses-permission android:name="android.permission.CALL_PHONE"
request
from a ContentResolvers.
  Each activity has intent-filters. Followings are from NotesList activity.
 
A Simple Dialer
  ContentProvider base class should be extended to implement a
standard set of methods.
  There are three activities: NotesList, NoteEditor, and TitleEditor
 
  A CP makes a specific set of the app’s data available to other
apps.
21
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
</intent-filter>
Kettering University
  The second intent filter declares that the activity can VIEW, EDIT, PICK
in the data URI.
Kettering University
Content Providers
Kettering University
22
  A CP makes a specific set of the app’s data available to other
apps.
21
A Simple Dialer
  ContentProvider base class should be extended to implement a
standard set of methods.
Shutting down Components
  An activity can be shut down by calling its finish() method.
  A service can be stopped by calling its stopSelf() or
Context.stopService().
  Your
program
have
something
You can
shareshould
your data
and
you canlike…
access shared data of other
String number = "tel:810-555-1234”;
apps.
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(number));
startActivity(callIntent);
  Apps
do not call ContentProver methods directly. Rather they use
a
ContentResolver
object
and callfor
itsphone
methods
  Do not forget to add the
permission
callinstead.
in your App
Manifest XML file.
  ContentProviders are activated when they are targeted by a
uses-permission android:name="android.permission.CALL_PHONE"
request
from a ContentResolvers.
Kettering University
Kettering University
23
<intent-filter . . . >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
App Manifest
24
App Manifest - Intent Filters
25
  IFs declare the capabilities of its parent component.
  What
an activity
orincludes
service a
can
do and
what
types of broadcasts
  Each
Android
project
manifest
file,
AndroidManifest.xml
foraall
apps
(samecan
name).
receiver
handle.
  A structured XML file.
  Action “android.intent.action.MAIN” and category
“android.intent.category.LAUNCHER”
is the
most
common
  The
principal task of it is to inform Android about the
app’s
components.
 
<activity>, <service>, <receiver> elements
combination.
<?xml version="1.0" encoding="utf-8"?>
  Note: application launcher: the screen listing apps where users can
<manifest . . . >
launch
an app.
<application . . . >
<activity android:name=”edu.kettering.project.FreneticActivity"
  The activity is theandroid:icon="@drawable/small_pic.png"
entry point for the app.
android:label="@string/freneticLabel"
Kettering University
. . . >
</activity>
. . .
</application>
</manifest>
<intent-filter . . . >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Activity, Tasks, and Processes
  IFs declare the capabilities of its parent component.
  What an activity or service can do and what types of broadcasts a
receiver can handle.
  Action “android.intent.action.MAIN” and category
“android.intent.category.LAUNCHER” is the most common
combination.
Kettering University
  Note: application launcher: the screen listing apps where users can
launch an app.
  The activity is the entry point for the app.
Kettering University
Kettering University
26
Activities, Tasks, and Processes
  One activity can start another including one in a different app.
  Example:
  Your activity needs to display a street map.
  Assuming there is an activity that can do this.
  You activity put together an Intent object and pass it to
startActivity().
Activity, Tasks, and Processes
  Definitions
  Activity
  The… Android ‘Activity’
  Task
  A stack of activities
  Process
  A standard Linux
process and Processes
Activity,
Tasks,
Kettering University
Kettering University
27
26
.apk Package
.apk Package
Activities,
Tasks, and Processes
Process
Activity
Task
Process
.apk Package
Content Provider
.apk Package
Content Provider
Process
Activity
Activities, Tasks, and Processes
.apk Package
.apk Package
Process
Process
ProcessActivity
Service
Activity
Task
Process
Activity
Activity
Service
Content Provider
Content Provider
Content Provider
Content Provider
Process
Kettering University
29
Activity
Activity
Activity
28
Service
Process
Service
Service
Kettering University
Service
Kettering University
30
Process and Thread
Android Activity Lifecycle
31
  An activity has three states:
  Application components are Linux processes.
29a
  When the first of an app’s components needs to be run, Android starts
Activities,
and
Processes
Linux process forTasks,
it with a single
thread
of execution.
  Active, or running:
Process
Thread
  When it is and
in the foreground
of the screen.
30
  Paused:
  Process
  When it lost focus but is still visible to the user.
  It is controlled by the Manifest file.
  Application
  Stopped: components are Linux processes.
  Thread
.apk Package
.apk Package
  User interface
should
always
be
quick
to
respond
Processto user actions.
Process
Task
  Anything that may not be completed quickly should be assigned to a
different Activity
thread.
Activity
Activity
  Threads are created in code using standard Java Thread objects.
  Android also provides many convenient classes
forProvider
managing threads.
Content
Content Provider
Process
Kettering University
Service
Service
   
When
the
first
of an app’s
components
needsactivity.
to be run, Android starts a
When
it is
completely
obscured
by another
Linux process for it with a single thread of execution.
  It still remains all state and member information.
  It may be killed by the system when memory is needed elsewhere.
  Process
  It is controlled by the Manifest file.
  Note: When an activity is paused or stopped, the system can drop it
from memory or simply kill its process.
  Thread
  User interface should always be quick to respond to user actions.
  Anything that may not be completed quickly should be assigned to a
different thread.
Kettering University
  Threads are created in code using standard Java Thread objects.
Android Activity Lifecycle
32
  Since the system can shut down an activity, the user may expect to
return to the activity and find it in its previous state.
33
Android Activity Lifecycle
  onSaveInstanceState()
  Android calls this method before making the activity to being destroyed.
  onRestoreInstanceState()
  Entire life time of an activity
void onCreate(Bundle savedInstanceState)
void onStart()
  Android calls onRestoreInstanceState()
after calling onStart().
void onRestart()
  onCreate() – onDestrory()
void onResume()
  Note that these two methods are
not
lifecycle methods.
void
onPause()
  Visible life time
void onStop()
  They are not called in a proper lifecycle step.
void onDestroy()
  onStart() – onStop()
  You cannot rely on these methods to save some persistent data.
  Foreground life time
  onResume() – onPause()
Kettering University
Kettering University
Kettering University
Android Activity Lifecycle
34
35
Saving Activity State
  Since the system can shut down an activity, the user may expect to
return to the activity and find it in its previous state.
33
Android Activity Lifecycle
  onSaveInstanceState()
  Android calls this method before making the activity to being destroyed.
  onRestoreInstanceState()
  Entire life time of an activity
void onCreate(Bundle savedInstanceState)
void onStart()
  Android calls onRestoreInstanceState()
after calling onStart().
void onRestart()
  onCreate() – onDestrory()
Application Resources
void onResume()
  Note that these two methods are
not
lifecycle methods.
void
onPause()
  Visible life time
void onStop()
  They are not called in a proper lifecycle step.
void onDestroy()
  onStart() – onStop()
  You cannot rely on these methods to save some persistent data.
  Foreground life time
  onResume() – onPause()
Kettering University
Kettering University
  Place resources in a specific subdirectory of your project’s res/
directory.
36
Resource Externalization
  Resource directories supported inside project res/ directory.
Directory
  To specify configuration-specific alternatives for a set of resources:
  Create a new directory in res/ named in the form <resources_name>-<config_qualifier>.
  <resources_name> Resource
is the directory name ofTypes
the corresponding default resources.
Grouping
  <qualifier> is a name that specifies an individual configuration for which these resources.
  You can append more than one <qualifier>. Separate each one with a dash.
  Save the respective alternative resources in this new directory. The resource files must be
named
exactly the in
same
as the default
resource files.of your project’s res/
  Place
resources
a specific
subdirectory
Type
  Externalizing
resources
such
as animation
images and strings
anim/
Define
tween
directory.
  color/
You can maintain Define
them separately
your actual code.
a state list from
of colors
  For example, here are some default and alternative resources:
  drawable/
This allows you to provide
alternative
resources
Bitmap files
or XML files
that that support different
languages, different screen sizes.
layout/
Define user interface layout
  This is extremely important because Android-powered devices become
menu/
Optionsconfigurations.
Menu, Context Menu, or Sub Menu
available with different
  Resource directories supported inside project res/ directory.
raw/
Arbitrary files to save in their raw form
values/
Strings, integers, colors
xml/
Arbitrary XML files
Kettering University
res/
drawable/
icon.png
Directory
Type
layout/
Define user interface layout
background.png
anim/
Define tween animation
drawable-hdpi/
color/ icon.png
Define a state list of colors
background.png
drawable/
Bitmap files or XML files that
Kettering University
menu/
Options Menu, Context Menu, or Sub Menu
raw/
Arbitrary files to save in their raw form
values/
Strings, integers, colors
xml/
Arbitrary XML files
Kettering University
Kettering University
Providing Alternative Resources
37
38
Creating Resources
39
Simple Values
  To specify configuration-specific alternatives for a set of resources:
  Create a new directory in res/ named in the form <resources_name>-<config_qualifier>.
 
 
 
 
<resources_name> is the directory name of the corresponding default resources.
<qualifier> is a name that specifies an individual configuration for which these resources.
You can append more than one <qualifier>. Separate each one with a dash.
Save the respective alternative resources in this new directory. The resource files must be
named exactly the same as the default resource files.
  String
  <string name=“your_name”>Kettering</string>
Providing Alternative Resources
  Color
 
  For example, here are some default and alternative resources:
res/
drawable/
icon.png
background.png
drawable-hdpi/
icon.png
background.png
Kettering University
38
  <color name=“transparent_blue”>#770000FF</color>
  Format
  #RGB
#RRGGBB
To specify
configuration-specific alternatives for a set of resources:
  #ARGB
  Create a new directory in res/ named in the form <resources_name>-<config_qualifier>.
  #AARRGGBB
  <resources_name> is the directory name of the corresponding default resources.
  Dimensions
  <qualifier> is a name that specifies an individual configuration for which these resources.
 
  <dime name=“border”>5dp</dimen>
  You can append more than one <qualifier>. Separate each one with a dash.
  Scale identifier
   
Save
the respective alternative resources in this new directory. The resource files must be
px (screen pixels)
named exactly the same as the default resource files.
  in (physical inches)
  pt (physical points)
For example, here are some default and alternative resources:
  mm (physical millimeters)
res/
  dp (density independent pixels relative to a 160-dpi screen)
drawable/
  sp
(scale independent pixels)
icon.png
Kettering University
background.png
drawable-hdpi/
  Create different bitmaps
 
 
 
 
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
Supporting Different Screens
40
  This means that if you generate a 200x200 image for xhdpi devices, you should
  Four
general
categorized
generate
the same
resource indevice
150x150 screens:
for hdpi, 100x100 for mdpi, and 75x75 for
ldpi
devices.
 
Sizes:
small, normal, large, xlarge
  Densities:
low(ldpi),
medium
(mdpi),
high(hdpi),
extra high (xhdpi).
  Then
place the
files in the
appropriate
drawable
directories
MyProject/   Create
different layouts
res/  
 
 
 
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
MyProject/ res/ drawable-­‐xhdpi/ awesomeimage.png drawable-­‐hdpi/ awesomeimage.png drawable-­‐mdpi/ awesomeimage.png drawable-­‐ldpi/ awesomeimage.png Kettering University
Kettering University
42
  Drawable
41
  Drawable resources include bitmaps and NinePatch (stretchable PNG)
Supporting
Different Screens
images.
  Layouts
  Layout
resources
let you decouple your app’s presentation layer.
  Create
different
bitmaps
xhdpi: 2.0 user interfaces in XML rather than constructing them in code.
   
Designing
  hdpi: 1.5
  mdpi: 1.0 (baseline)
  ldpi: 0.75
  This means that if you generate a 200x200 image for xhdpi devices, you should
generate the same resource in 150x150 for hdpi, 100x100 for mdpi, and 75x75 for
ldpi devices.
MyProject/ res/ drawable-­‐xhdpi/ Kettering
University
awesomeimage.png drawable-­‐hdpi/   Create different bitmaps
  Then place the files in the appropriate drawable directories
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }   Then place the files in the appropriate drawable directories
41
  This means that if you generate a 200x200 image for xhdpi devices, you should
generate the same resource in 150x150 for hdpi, 100x100 for mdpi, and 75x75 for
ldpi devices.
  drawable-­‐xhdpi/ MyProject/
awesomeimage.png res/
drawable-­‐hdpi/ layout/
awesomeimage.png main.xml
drawable-­‐mdpi/ layout-large/
awesomeimage.png main.xml"
drawable-­‐ldpi/ awesomeimage.png   Simply
Kettering
Universityreference the layout file in your app as usual.
Creating Resources
Supporting Different Screens
Accessing Resources
43
  You can refer a resource via its ID.
  R class
Creating
  All resource IDs Resources
are defined in your project’s R class.
42
  The R class is automatically generated by the aapt tool.
  Resource ID
  Drawable
  A resource ID has a unique name and is composed of:
Resourceresources
type:
   
Drawable
include bitmaps and NinePatch (stretchable PNG)
  string, drawable, layout, etc.
images.
  Resouce name:
  Layouts
  Either the filename (excluding the extension) or the value in the XML
android.name attribute, if the resource is a simple value such as a string,
  Layout
resources let you decouple your app’s presentation layer.
a color.
  Designing user interfaces in XML rather than constructing them in code.
  Accessing a resouce: string is a resource type. hello is a resource name
  In code: R.string.hello
  In XML: @string/hello
Kettering University
Layout Definition
44
  When you compile your source code, each XML layout file is
compiled into a View resource.
XML for Resource
  You should load it in your Activity.onCreate().
  Layout is an architecture about user interfaces in an Activity
  XML file: res/layout/*.xml
  Only
one
element
that should
Viewcan
or abe
ViewGroup.
  If the
xmlroot
file name
is main.xml,
thenbe
thealayout
accessed by
  Two ways of definition of layouts
  Add child elements to the root view.
R.layout.main in your source code.
  XML
  Use resource editor to make layout.
  ADT provides the preview of an XML file.
  The best way is to make a layout is using both the XML editor and the
XML graphical editor.
  In code
  Create Views and ViewGroups in runtime.
Kettering University
XML Resource Load
  When you compile your source code, each XML layout file is
compiled into a View resource.
XML for Resource
  You should load it in your Activity.onCreate().
  XML file: res/layout/*.xml
  Only
one
element
that should
Viewcan
or abe
ViewGroup.
  If the
xmlroot
file name
is main.xml,
thenbe
thealayout
accessed by
R.layout.main in your source code.
  Add child elements to the root view.
<?xml version="1.0" encoding="utf-8"?>
public void
onCreate(Bundle savedInstanceState) {
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
super.onCreate(savedInstanceState);
android:layout_height="fill_parent"
setContentView(R.layout.main);
android:orientation="vertical" >
}
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
Kettering University
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
45
<?xml version="1.0" encoding="utf-8"?>
public void
onCreate(Bundle savedInstanceState) {
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
super.onCreate(savedInstanceState);
android:layout_height="fill_parent"
setContentView(R.layout.main);
android:orientation="vertical" >
}
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
Kettering University
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
Kettering University
46
ID of Element
  Any View object has a unique ID.
45
  In your XML code, the ID is defined with a string.
  android:id=“@+id/myButton”
  @ indicates the rest of the string should be identified as an ID resource.
  + means adding new resource name.
  In your source code, the ID can be referred by an integer.
  Button myButton = (Button)findViewById(R.id.myButton);
  Example:
In XML …
<Button android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_button_text"/>
In source code …
Button myButton = (Button) findViewById(R.id.myButton);
Kettering University
47
48
Questions?
Kettering University