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

Android 2

  • 1.
  • 2.
  • 3.
    How to createxml 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. <LinearLayoutandroid: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 (invalues 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 (invalues 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 createjava file Right click (on the folder) 8
  • 9.
    How to overridea method Right click on the code pane 9
  • 10.
    How to overridea method cont. Select the method to overridem eg, onCreate 10
  • 11.
    The strings.xml (invalues 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 fromresource 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 Activityclass 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 Activityclass 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 Activityin 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
  • 16.
  • 17.
    Using View todraw 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 PaintmPaint=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 inonDraw() 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(newRectF(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 onTouchEventmethod 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 publicclass 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 Activitycont. 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. Implementthe 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