android app anatomyandroid application – in parts from studio's “android” view. of the...
TRANSCRIPT
![Page 1: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/1.jpg)
Android App Anatomy
EECS 4443 – Mobile User Interfaces
Scott MacKenzieYork University
© Scott MacKenzie
![Page 2: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/2.jpg)
Android UIStatus Bar
Action Bar
Content Area
Navigation Bar
2© Scott MacKenzie
![Page 3: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/3.jpg)
Android Application – In PartsFrom Studio's“Android” viewof the project…
• Project
• Module
• Manifest
• Package
• Source files
• Images (for app)
• XML layout
• String constants
• Build script
3© Scott MacKenzie
![Page 4: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/4.jpg)
Source (.java) Files
4© Scott MacKenzie
![Page 5: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/5.jpg)
Android Application – In PartsFrom Studio's“Android” viewof the project…
• Project
• Module
• Manifest
• Package
• Source files
• Images (for app)
• XML layout
• String constants
• Build script
5© Scott MacKenzie
![Page 6: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/6.jpg)
Layout (.xml) Files
6© Scott MacKenzie
![Page 7: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/7.jpg)
Layout (.xml) Files
7© Scott MacKenzie
![Page 8: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/8.jpg)
Android Application – In PartsFrom Studio's“Android” viewof the project…
• Project
• Module
• Manifest
• Package
• Source files
• Images (for app)
• XML layout
• String constants
• Build script
8© Scott MacKenzie
![Page 9: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/9.jpg)
String (.xml) Constants
9© Scott MacKenzie
![Page 10: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/10.jpg)
Android Application – In PartsFrom Studio's“Android” viewof the project…
• Project
• Module
• Manifest
• Package
• Source files
• Images (for app)
• XML layout
• String constants
• Build script
10© Scott MacKenzie
![Page 11: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/11.jpg)
What the heck is "manifest"?
• This is a reasonable question if you are new to Android programming
• Here's a simple way to answer this question (and other questions like this)
• Go to
and type "AndroidManifest.xml" in the search field ( )
© Scott MacKenzie11
developer.android.com
![Page 12: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/12.jpg)
Manifest (.xml) File
12© Scott MacKenzie
No! (next slide)
![Page 13: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/13.jpg)
minSDK, targetSDK
• Android projects are built to run on devices supporting a range of API levels
• API level determined in the project setup• Varies by IDE• Eclipse:
– Specified in AndroidManifest.xml via <uses-sdk> element (previous slide)
• Studio:– Specified in build.gradle (next slide)
© Scott MacKenzie13
![Page 14: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/14.jpg)
Android Application – In PartsFrom Studio's“Android” viewof the project…
• Project
• Module
• Manifest
• Package
• Source files
• Images (for app)
• XML layout
• String constants
• Build script
14© Scott MacKenzie
![Page 15: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/15.jpg)
build.gradle (Demo_Android)
© Scott MacKenzie15
![Page 16: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/16.jpg)
API Levels (partial list)
© Scott MacKenzie16
http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
![Page 17: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/17.jpg)
Changing minSDK & targetSDK
• How do you change the min/target API levels for an Android project using Studio?
1. Edit build.gradle2. Sync Project with Gradle Files ( )
• Or (preferred) …1. Right click on your project file ("app")2. Select "Open Module Settings"3. Go to the "Properties" tab and edit settings
1. A better question… How do you figure out stuff like this? (next slide)
© Scott MacKenzie17
![Page 18: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/18.jpg)
StackOverflow to the Rescue
© Scott MacKenzie18
http://stackoverflow.com/questions/19465049/changing-api-level-android-studio
![Page 19: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/19.jpg)
Android Package (.apk file)
19© Scott MacKenzie
From Studio's“Project” viewof the project…
![Page 20: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/20.jpg)
Activities
20© Scott MacKenzie
![Page 21: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/21.jpg)
Minimum Implementation
21© Scott MacKenzie
![Page 22: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/22.jpg)
Activity Lifecycle
“Running”
22© Scott MacKenzie
![Page 23: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/23.jpg)
ActivityLifecycle(more detail)
23© Scott MacKenzie
![Page 24: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/24.jpg)
Activity Lifecycle Callbacks (1 of 2)
24© Scott MacKenzie
![Page 25: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/25.jpg)
Activity Lifecycle Callbacks (2 of 2)
25© Scott MacKenzie
![Page 26: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/26.jpg)
UI – Overview
26© Scott MacKenzie
![Page 27: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/27.jpg)
UI – Overview
Examples:LinearLayoutRelativeLayoutTableLayout
Examples:TextViewButtonViewGroup
27© Scott MacKenzie
![Page 28: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/28.jpg)
UI – Layout
28© Scott MacKenzie
![Page 29: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/29.jpg)
UI – Layout
29© Scott MacKenzie
![Page 30: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/30.jpg)
Layout Example (main.xml)
…30© Scott MacKenzie
![Page 31: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/31.jpg)
Layout Example (main.xml)
…
Esc Let’s find out.
What’s the difference?
31© Scott MacKenzie
![Page 32: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/32.jpg)
UI – Input Controls
32© Scott MacKenzie
![Page 33: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/33.jpg)
UI – Input Events
33© Scott MacKenzie
![Page 34: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/34.jpg)
UI – Event Listeners
34© Scott MacKenzie
![Page 35: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/35.jpg)
Event Listener Example (onClick)
Note: main.xml has a Button element with android:id="@+id/mybutton" tag
35© Scott MacKenzie
![Page 36: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/36.jpg)
Two Buttons!
36© Scott MacKenzie
![Page 37: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/37.jpg)
Button Callbacks
• Two ways to setup… 1. Code (previous slide)
• Add implements OnClickListener to the signature of the activity
• Invoke setOnClickListener(this) on the Button instance
• Implement onClick(View v)• Example: Demo_Android, Demo_Layout
2. XML• Add android:onClick="buttonClick" as tag to
Button element in XML• Implement buttonClick(View v)• Example: Demo_Buttons
37© Scott MacKenzie
![Page 38: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/38.jpg)
Demo Android
EscLet’s have a look.
38© Scott MacKenzie
![Page 39: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/39.jpg)
Homework
• Review all notes in these slides– Do this by reading from the Android Developer
API Guide:
• Continue with Lab #1– Task 2, Task 3, …
© Scott MacKenzie39
http://developer.android.com/guide/index.html
![Page 40: Android App AnatomyAndroid Application – In Parts From Studio's “Android” view. of the project… • Project • Module • Manifest • Package • Source files • Images](https://reader035.vdocuments.net/reader035/viewer/2022070718/5ede3e9bad6a402d66699022/html5/thumbnails/40.jpg)
The End(Actually, this is just the beginning!)
40© Scott MacKenzie