SlideShare a Scribd company logo
1 of 24
Introducing
Activity and
Intent

1
Memory
TextView

ListView

2

LinearLayout,
weight=2

LinearLayout,
weight=1
How to create xml file

Right click
(on the
folder)

3
The menu.xml
<?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">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="2">

<TextView android:id="@+id/TextView01" android:layout_width="wrap_content”
android:layout_height="wrap_content“ android:textSize="@dimen/screen_title_size"
android:text="@string/menu" android:layout_gravity="center"

android:shadowColor="@android:color/white"
android:textColor="@color/title_color" />
</LinearLayout>

4
The menu.xml cont.
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent“ android:layout_weight="1">

<ListView android:layout_height="wrap_content" android:id="@+id/list_menu"
android:layout_width="fill_parent" android:layout_gravity="center_horizontal"

android:divider="@drawable/divider"
android:listSelector="@drawable/textured">
</ListView>
</LinearLayout>
</LinearLayout>

5
The dimens.xml (in values
folder)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen
name="logo_size">24pt</dimen>
<dimen
name="version_size">5pt</dimen>
<dimen
name="version_spacing">3pt</dimen>
<dimen
name="screen_title_size">16pt</dimen>
<dimen
name="menu_item_size">16pt</dimen>
<dimen
name="game_question_size">10pt</dimen>
<dimen
name="help_text_size">7pt</dimen>
<dimen
name="help_text_padding">20px</dimen>
</resources>
6
The colors.xml (in values
folder)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name="logo_color">#FFFF0F</color>
<color
name="version_color">#f0f0f0</color>
<color
name="version_bkgrd">#1a1a48</color>
<color
name="title_color">#f0f0f0</color>
<color
name="title_glow">#F00</color>
<color
name="menu_color">#FFFF0F</color>
<color
name="menu_glow">#F00</color>
<color
name="error_color">#F00</color>
</resources>
7
How to create java file
Right click
(on the
folder)

8
How to override a method

Right click
on the code
pane

9
How to override a method cont.

Select the
method to
overridem
eg, onCreate

10
The strings.xml (in values
folder)
<Resources>
….
<string name="menu">Memory</string>
<string name="menu_item_settings">Settings</string>
<string name="menu_item_play">Play Game</string>
<string name="menu_item_scores">View Scores</string>
<string name="menu_item_help">Help</string>
…
</Resources>

11
Create ListView from resource
ListView menuList = (ListView) findViewById(R.id.list_menu);
String[] items = { getResources().getString(R.string.menu_item_play),
getResources().getString(R.string.menu_item_scores),
getResources().getString(R.string.menu_item_settings),
getResources().getString(R.string.menu_item_help) };
ArrayAdapter<String> adapt = new ArrayAdapter<String>
(this,R.layout.menu_item, items);
menuList.setAdapter(adapt);

12
Starting an Activity class
public class Memory extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.menu);
ListView menuList = (ListView) findViewById(R.id.list_menu);
String[] items = { getResources().getString(R.string.menu_item_play),
getResources().getString(R.string.menu_item_scores),
getResources().getString(R.string.menu_item_settings),
getResources().getString(R.string.menu_item_help) };
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,R.layout.menu_item, items);
menuList.setAdapter(adapt);
menuList.setSelection(-1);
13
Starting an Activity class
menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View itemClicked, int position, long id)
{
// Note: if the list was built "by hand" the id could be used.
// As-is, though, each item has the same id
TextView textView = (TextView) itemClicked;
String strText = textView.getText().toString();

if (strText.equalsIgnoreCase(
getResources().getString(R.string.menu_item_play))) {
startActivity(new Intent(Memory.this, MemoryPlayGame.class));
} else if (strText.equalsIgnoreCase(getResources().getString(R.string.menu_item_help))) {
//

startActivity(new Intent(Memory.this, MemoryHelp.class));
}
}
});

}
}
14
Include the Activity in the
manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.plearn" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Memory" 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=".PlayGame" android:label="@string/app_name">
</activity>
</application>
</manifest>
15
Introducing
Graphics

16
Using View to draw graphics
public class GraphicsExample extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new ViewGraphics(this));
}
class ViewGraphics extends View{
public ViewGraphics(Context context){
super(context);
}
public void onDraw(Canvas canvas){ // canvas to draw on
}
}
}
17
Paint contains drawing
properties
Paint mPaint=new Paint(); // Paint contains properties to use when drawing
Typeface mTypeFace;
public ViewGraphics(Context context){
super(context);
mPaint.setStrokeWidth(3);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setTextSize(30);
mPaint.setTypeface(Typeface.create(Typeface.SERIF,
Typeface.BOLD_ITALIC));
mFace = Typeface.createFromAsset(getContext().getAssets(),
"fonts/gigi.ttf");
//copy a font file in to Assets/fonts folder
}
18
Drawing primitives in onDraw()
public void onDraw(Canvas canvas){
canvas.drawColor(Color.WHITE);
mPaint.setColor(Color.BLUE);
canvas.drawText(“Android Graphics", 10, 70, mPaint);
mPaint.setStyle(Style.STROKE);
float x1=100, y1=200, x2=x1+170, y2=y1+150; //top-left, bottomright
canvas.drawRect(x1,y1,x2,y2, mPaint); //RectF : Rectangle
//with flaoting number
canvas.drawLine(x1,x2,y1,y2, mPaint);
mPaint.setColor(Color.MAGENTA);
canvas.drawOval(new RectF(x1,y1,x2,y2), mPaint);
19
}
Drawing primitives cont.
mPaint.setStyle(Style.FILL);
canvas.drawArc(new RectF(x1,y1,x2,y2), 90, 100, true, mPaint);
(start angle, num angle, use radius)
mPaint.setTypeface(mFace);
mPaint.setColor(Color.BLACK); mPaint.setTextSize(40);
canvas.drawText("Custom Fontface from assets", 10, 150, mPaint);
// Draw a Drawable (image file)
Drawable mDrawable =
mContext.getResources().getDrawable(R.drawable.cherry);
mDrawable.setBounds(new Rect(100, 400, 250, 550));
mDrawable.draw(canvas);
20
The onTouchEvent
The onTouchEvent method occurred when the user touch the screen.
The (getX(), getY()) is the coordinate (x,y) axis where the screen is touched.
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
float x = event.getX();
float y = event.getY();
return true;
}

21
The PlayGame Activity
public class PlayGame extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
GameView gameView = new GameView(this);
setContentView(gameView);
}
}

22
The PlayGame Activity cont.
public class PlayGame extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
GameView gameView = new GameView(this);
setContentView(gameView);
}
}

class GameView extends View {
public GameView(Context context){
}
public void onDraw(Canvas canvas) {
}
public boolean onTouchEvent(MotionEvent event) {
}
}
23
Assignment 6
1. Implement the graphic primitives in the onDraw() method

of the PlayGame Activity.
2. Implement the TouchEvent method to show the
coordinate (x,y) using the Toast.makeText().

24

More Related Content

What's hot

Londroid Android Home Screen Widgets
Londroid Android Home Screen WidgetsLondroid Android Home Screen Widgets
Londroid Android Home Screen Widgets
Richard Hyndman
 
android layouts
android layoutsandroid layouts
android layouts
Deepa Rani
 
Android Development project
Android Development projectAndroid Development project
Android Development project
Minhaj Kazi
 
follow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlightfollow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlight
QIRIS
 

What's hot (11)

Londroid Android Home Screen Widgets
Londroid Android Home Screen WidgetsLondroid Android Home Screen Widgets
Londroid Android Home Screen Widgets
 
Android UI
Android UIAndroid UI
Android UI
 
A comprehensive guide on developing responsive and common react filter component
A comprehensive guide on developing responsive and common react filter componentA comprehensive guide on developing responsive and common react filter component
A comprehensive guide on developing responsive and common react filter component
 
STYLISH FLOOR
STYLISH FLOORSTYLISH FLOOR
STYLISH FLOOR
 
Chapt 04 user interaction
Chapt 04 user interactionChapt 04 user interaction
Chapt 04 user interaction
 
android layouts
android layoutsandroid layouts
android layouts
 
Android Development project
Android Development projectAndroid Development project
Android Development project
 
Introduction to Silverlight for Windows Phone
Introduction to Silverlight for Windows PhoneIntroduction to Silverlight for Windows Phone
Introduction to Silverlight for Windows Phone
 
follow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlightfollow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlight
 
Learning Appcelerator® Alloy™
Learning Appcelerator® Alloy™Learning Appcelerator® Alloy™
Learning Appcelerator® Alloy™
 
Different types of sticker apps
Different types of sticker appsDifferent types of sticker apps
Different types of sticker apps
 

Viewers also liked

Mface presentation english
Mface presentation englishMface presentation english
Mface presentation english
Saly Man
 

Viewers also liked (7)

Livery Presentation - AirAsia
Livery Presentation - AirAsiaLivery Presentation - AirAsia
Livery Presentation - AirAsia
 
Mfc系统教学
Mfc系统教学Mfc系统教学
Mfc系统教学
 
MFACE INDIA Presentation- Earn Big Money With MBI International MFACE
MFACE INDIA Presentation- Earn Big Money With MBI International MFACEMFACE INDIA Presentation- Earn Big Money With MBI International MFACE
MFACE INDIA Presentation- Earn Big Money With MBI International MFACE
 
Mobility Beyond Imagination (MBI)
Mobility Beyond Imagination (MBI)Mobility Beyond Imagination (MBI)
Mobility Beyond Imagination (MBI)
 
沃客国际说明
沃客国际说明沃客国际说明
沃客国际说明
 
Mface
MfaceMface
Mface
 
Mface presentation english
Mface presentation englishMface presentation english
Mface presentation english
 

Similar to Android 2

Making it fit - DroidCon Paris 18 june 2013
Making it fit - DroidCon Paris 18 june 2013Making it fit - DroidCon Paris 18 june 2013
Making it fit - DroidCon Paris 18 june 2013
Paris Android User Group
 
Custom UI Components at Android Only 2011
Custom UI Components at Android Only 2011Custom UI Components at Android Only 2011
Custom UI Components at Android Only 2011
Johan Nilsson
 
View groups containers
View groups containersView groups containers
View groups containers
Mani Selvaraj
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
OSCON Byrum
 
03 layouts & ui design - Android
03   layouts & ui design - Android03   layouts & ui design - Android
03 layouts & ui design - Android
Wingston
 

Similar to Android 2 (20)

Making it fit - DroidCon Paris 18 june 2013
Making it fit - DroidCon Paris 18 june 2013Making it fit - DroidCon Paris 18 june 2013
Making it fit - DroidCon Paris 18 june 2013
 
Custom UI Components at Android Only 2011
Custom UI Components at Android Only 2011Custom UI Components at Android Only 2011
Custom UI Components at Android Only 2011
 
Android Development Made Easy - With Sample Project
Android Development Made Easy - With Sample ProjectAndroid Development Made Easy - With Sample Project
Android Development Made Easy - With Sample Project
 
View groups containers
View groups containersView groups containers
View groups containers
 
Android Development for Beginners with Sample Project - Day 1
Android Development for Beginners with Sample Project - Day 1Android Development for Beginners with Sample Project - Day 1
Android Development for Beginners with Sample Project - Day 1
 
Chapter 5 - Layouts
Chapter 5 - LayoutsChapter 5 - Layouts
Chapter 5 - Layouts
 
Layouts in android
Layouts in androidLayouts in android
Layouts in android
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
Android App Dev Manual-1.doc
Android App Dev Manual-1.docAndroid App Dev Manual-1.doc
Android App Dev Manual-1.doc
 
Android 3
Android 3Android 3
Android 3
 
Anko試食会
Anko試食会Anko試食会
Anko試食会
 
Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
 
Ap quiz app
Ap quiz appAp quiz app
Ap quiz app
 
03 layouts & ui design - Android
03   layouts & ui design - Android03   layouts & ui design - Android
03 layouts & ui design - Android
 
Android Custom views
Android Custom views   Android Custom views
Android Custom views
 
Advance Android application development workshop day 2
Advance Android application development workshop day 2Advance Android application development workshop day 2
Advance Android application development workshop day 2
 
Layout
LayoutLayout
Layout
 
A mobile web app for Android in 75 minutes
A mobile web app for Android in 75 minutesA mobile web app for Android in 75 minutes
A mobile web app for Android in 75 minutes
 
TinyMCE: WYSIWYG editor 2010-12-08
TinyMCE: WYSIWYG editor 2010-12-08TinyMCE: WYSIWYG editor 2010-12-08
TinyMCE: WYSIWYG editor 2010-12-08
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Android 2

  • 3. How to create xml file Right click (on the folder) 3
  • 4. The menu.xml <?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"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="2"> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content” android:layout_height="wrap_content“ android:textSize="@dimen/screen_title_size" android:text="@string/menu" android:layout_gravity="center" android:shadowColor="@android:color/white" android:textColor="@color/title_color" /> </LinearLayout> 4
  • 5. The menu.xml cont. <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent“ android:layout_weight="1"> <ListView android:layout_height="wrap_content" android:id="@+id/list_menu" android:layout_width="fill_parent" android:layout_gravity="center_horizontal" android:divider="@drawable/divider" android:listSelector="@drawable/textured"> </ListView> </LinearLayout> </LinearLayout> 5
  • 6. The dimens.xml (in values folder) <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="logo_size">24pt</dimen> <dimen name="version_size">5pt</dimen> <dimen name="version_spacing">3pt</dimen> <dimen name="screen_title_size">16pt</dimen> <dimen name="menu_item_size">16pt</dimen> <dimen name="game_question_size">10pt</dimen> <dimen name="help_text_size">7pt</dimen> <dimen name="help_text_padding">20px</dimen> </resources> 6
  • 7. The colors.xml (in values folder) <?xml version="1.0" encoding="utf-8"?> <resources> <color name="logo_color">#FFFF0F</color> <color name="version_color">#f0f0f0</color> <color name="version_bkgrd">#1a1a48</color> <color name="title_color">#f0f0f0</color> <color name="title_glow">#F00</color> <color name="menu_color">#FFFF0F</color> <color name="menu_glow">#F00</color> <color name="error_color">#F00</color> </resources> 7
  • 8. How to create java file Right click (on the folder) 8
  • 9. How to override a method Right click on the code pane 9
  • 10. How to override a method cont. Select the method to overridem eg, onCreate 10
  • 11. The strings.xml (in values folder) <Resources> …. <string name="menu">Memory</string> <string name="menu_item_settings">Settings</string> <string name="menu_item_play">Play Game</string> <string name="menu_item_scores">View Scores</string> <string name="menu_item_help">Help</string> … </Resources> 11
  • 12. Create ListView from resource ListView menuList = (ListView) findViewById(R.id.list_menu); String[] items = { getResources().getString(R.string.menu_item_play), getResources().getString(R.string.menu_item_scores), getResources().getString(R.string.menu_item_settings), getResources().getString(R.string.menu_item_help) }; ArrayAdapter<String> adapt = new ArrayAdapter<String> (this,R.layout.menu_item, items); menuList.setAdapter(adapt); 12
  • 13. Starting an Activity class public class Memory extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.menu); ListView menuList = (ListView) findViewById(R.id.list_menu); String[] items = { getResources().getString(R.string.menu_item_play), getResources().getString(R.string.menu_item_scores), getResources().getString(R.string.menu_item_settings), getResources().getString(R.string.menu_item_help) }; ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,R.layout.menu_item, items); menuList.setAdapter(adapt); menuList.setSelection(-1); 13
  • 14. Starting an Activity class menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View itemClicked, int position, long id) { // Note: if the list was built "by hand" the id could be used. // As-is, though, each item has the same id TextView textView = (TextView) itemClicked; String strText = textView.getText().toString(); if (strText.equalsIgnoreCase( getResources().getString(R.string.menu_item_play))) { startActivity(new Intent(Memory.this, MemoryPlayGame.class)); } else if (strText.equalsIgnoreCase(getResources().getString(R.string.menu_item_help))) { // startActivity(new Intent(Memory.this, MemoryHelp.class)); } } }); } } 14
  • 15. Include the Activity in the manifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.plearn" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Memory" 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=".PlayGame" android:label="@string/app_name"> </activity> </application> </manifest> 15
  • 17. Using View to draw graphics public class GraphicsExample extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new ViewGraphics(this)); } class ViewGraphics extends View{ public ViewGraphics(Context context){ super(context); } public void onDraw(Canvas canvas){ // canvas to draw on } } } 17
  • 18. Paint contains drawing properties Paint mPaint=new Paint(); // Paint contains properties to use when drawing Typeface mTypeFace; public ViewGraphics(Context context){ super(context); mPaint.setStrokeWidth(3); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setTextSize(30); mPaint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.BOLD_ITALIC)); mFace = Typeface.createFromAsset(getContext().getAssets(), "fonts/gigi.ttf"); //copy a font file in to Assets/fonts folder } 18
  • 19. Drawing primitives in onDraw() public void onDraw(Canvas canvas){ canvas.drawColor(Color.WHITE); mPaint.setColor(Color.BLUE); canvas.drawText(“Android Graphics", 10, 70, mPaint); mPaint.setStyle(Style.STROKE); float x1=100, y1=200, x2=x1+170, y2=y1+150; //top-left, bottomright canvas.drawRect(x1,y1,x2,y2, mPaint); //RectF : Rectangle //with flaoting number canvas.drawLine(x1,x2,y1,y2, mPaint); mPaint.setColor(Color.MAGENTA); canvas.drawOval(new RectF(x1,y1,x2,y2), mPaint); 19 }
  • 20. Drawing primitives cont. mPaint.setStyle(Style.FILL); canvas.drawArc(new RectF(x1,y1,x2,y2), 90, 100, true, mPaint); (start angle, num angle, use radius) mPaint.setTypeface(mFace); mPaint.setColor(Color.BLACK); mPaint.setTextSize(40); canvas.drawText("Custom Fontface from assets", 10, 150, mPaint); // Draw a Drawable (image file) Drawable mDrawable = mContext.getResources().getDrawable(R.drawable.cherry); mDrawable.setBounds(new Rect(100, 400, 250, 550)); mDrawable.draw(canvas); 20
  • 21. The onTouchEvent The onTouchEvent method occurred when the user touch the screen. The (getX(), getY()) is the coordinate (x,y) axis where the screen is touched. public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); float x = event.getX(); float y = event.getY(); return true; } 21
  • 22. The PlayGame Activity public class PlayGame extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); GameView gameView = new GameView(this); setContentView(gameView); } } 22
  • 23. The PlayGame Activity cont. public class PlayGame extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); GameView gameView = new GameView(this); setContentView(gameView); } } class GameView extends View { public GameView(Context context){ } public void onDraw(Canvas canvas) { } public boolean onTouchEvent(MotionEvent event) { } } 23
  • 24. Assignment 6 1. Implement the graphic primitives in the onDraw() method of the PlayGame Activity. 2. Implement the TouchEvent method to show the coordinate (x,y) using the Toast.makeText(). 24