Upload
lenard-johnson
View
213
Download
1
Embed Size (px)
Citation preview
CE53105-3 Applied Communications TechnologyAndroid lecture 2 - Structures
• Android File structure• Resources
• Drawables• Layout• Values
• R Class• Manifest
• Running programs• DDMS ( Dalvik Debug Monitor Server )• Explaining Interesting things in Notes3
Android File StructureSource folder – all java files you create
Your Project – Should be a unique name
Individual Java source files
Generated folder – R class here – leave alone
Resource folder – XML files defining resources
Source objects for Android platform target
The Manifest – Declares all bits of project
Drawable Folders – Picture, image, icons etc
Values folder – In this case a strings XML doc
Layout XML files – Used by Activities to define screens
Drawable Folders• Contains images that will be used in your
programs– Generally three (or one)
• Drawable-hdpi – high resolution screen• Drawable –mdpi – medium resolution• Drawable- ldpi – low resolution
– Means you may need several versions of your image to suit the screen resolution!
• Becoming a problem as sizes proliferate
• Referenced using the R class
Layout folder• Contains XML documents that define the layout of a
particular view.• Activity’s utilise views by the setcontextview statement.
– setContentView(R.layout.tigger1);
• Layouts can be complex and difficult to build– DroidDraw - http://www.droiddraw.org
?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /></LinearLayout>
Values• Files containing tuples of data
– name and value Name – Hello value – Hello World
• Can be simple or complex data items– Arrays, menus etc
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/quit" android:icon="@drawable/ic_quit" android:title="@string/quit" /></menu>
<?xml version="1.0" encoding="utf-8"?><resources> <string name="hello">Hello World, Viewdemo!</string> <string name="app_name">Viewdemo</string> <string-array name="countries_array"> <item>Bahrain</item> <item>Bangladesh</item> <item>Barbados</item> <item>Belarus</item> <item>Belgium</item> <item>Belize</item> <item>Benin</item> </string-array></resources>
The R Class• contains resource IDs for all the
resources in your res/ directory– Generated by aapt (Android Asset Packaging
Tool)
– For each type of resource, there is an R subclass
– for each resource of that type, there is a static integer
– To use the resource simply add it to your code
• R.string.hello or 0x7f040000• R.layout.linearlayoutdemo or
0x7f030000• R.array.countries_array or
0x7f050000
• Means that you can change details without having to change the code!
/* AUTO-GENERATED FILE. DO NOT MODIFY.
package ac.uk.ere1.Viewdemo;
public final class R { public static final class array { public static final int countries_array=0x7f050000; } public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class id { public static final int entry=0x7f060001; public static final int label=0x7f060000; public static final int ok=0x7f060002; } public static final class layout { public static final int linearlayoutdemo=0x7f030000; public static final int list_item=0x7f030001; public static final int main=0x7f030002; public static final int relativelayoutdemo=0x7f030003; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; }}
The DDMS PerspectiveEmulators Running
Emulator controls – can simulate various phone actions eg receiving a call or gaining GPS input
Directory Structure of emulator (can push and pull files)
Log provides useful information on what is happening live!
Android Manifest<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ac.uk.ere1.Viewdemo" android:versionCode="1" android:versionName="1.0“ <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Viewdemo" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="Listview" /> <activity android:name="Linearlayout" /> <activity android:name="Relativelayout" /> <!-- <activity android:name="Tablelayout" /> <activity android:name="Gridview" /> <activity android:name="Tablayout" />--> </application> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.BATTERY_STATS" /> <uses-sdk android:minSdkVersion="3"></uses-sdk></manifest>
Package definition
Intent Filter defines what it can do
Permissions Required
Activities Commented out
Activitie
s
Notepadv3 Key Points<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.demo.notepad3"> <application android:icon="@drawable/icon"> <activity android:name=".Notepadv3" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NoteEdit" /> </application></manifest>
Notepadv3 (cont)1- @overide – places an existing definition of the method.2- super is the root definition and is called to ensure all methods and
properties are properly instantiated.3- setContentview(R.layout.notes_list) –
used to define the view being used by the activity.In this case note_list!
4- a- call to a method defined in this class.b- the method definition.
5- Intent starting a new activity (ACTIVITY_CREATE)Note it expects the activity to return a result!
6- Intent starting a new activity (ACTIVITY_EDIT)Also expecting a result to be returned.Note i.putExtra method – allows data to be transmitted to activity.
7- The method dealing with the result returned.8- Have to create ‘listeners’ for each view item – problematical!