42
Basic Programming by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111 Monday, May 27, 13

Android Basic Development Day 1 Introduction & ADT

Embed Size (px)

DESCRIPTION

Android Basic Development Day 1 Introduction & ADT by Eakapong Kattiya [email protected] www.ibluecode.com +66 086-673-2111

Citation preview

Page 1: Android Basic Development Day 1 Introduction & ADT

Basic Programming

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 2: Android Basic Development Day 1 Introduction & ADT

Android applications development process

Day 1

Day 1 - 4

Day 5-6

Day 5-6

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 3: Android Basic Development Day 1 Introduction & ADT

Android Version

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 4: Android Basic Development Day 1 Introduction & ADT

Application Design

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 5: Android Basic Development Day 1 Introduction & ADT

UI Overview

1. Main Action Bar (API 11)

2. View Control

3. Content Area

4. Split Action Bar (API 11)

5. Options Menu

5

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 6: Android Basic Development Day 1 Introduction & ADT

Fixed Tab SpinnerNavigation Drawers

Application Structure

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 7: Android Basic Development Day 1 Introduction & ADT

Fixed Tabs : Movies , Twitter

Fixed Tabs- ต้องการเน้นให้ผู้ใช้เห็นข้อมูลหน้าอื่น ๆ - ใช้เมื่อต้องสลับหน้าจอ(View) บ่อย ๆ- จํานวน Top Level View ไม่ควรเกิน 3-5

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 8: Android Basic Development Day 1 Introduction & ADT

Scrollable Tabs : Google Play Store

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 9: Android Basic Development Day 1 Introduction & ADT

Stacked Tabs : You Tube

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 10: Android Basic Development Day 1 Introduction & ADT

GmailHolo Light

SettingHolo Dark

Talk inHolo Light with Dark

action bar

Theme (ice cream sandwich : API 15)

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 11: Android Basic Development Day 1 Introduction & ADT

Metrics and Grid

Button ~48dpGap ~8 dp

Size should be specified in dp (density-independent pixels ) do not use = px (pixel)

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 12: Android Basic Development Day 1 Introduction & ADT

Font

Font size should be sp (scale-independent pixels) do not use = pt (point)

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 13: Android Basic Development Day 1 Introduction & ADT

AndroidManifest.xml

<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" />

<activity android:name="MainActivity" android:label="@string/app_name" android:configChanges = "orientation|keyboard"> <!-- android:screenOrientation ="portrait" --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

<uses-permission android:name="android.permission.INTERNET" />

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 14: Android Basic Development Day 1 Introduction & ADT

Styles and Themes

<TextView    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:textColor="#00FF00"    android:typeface="monospace"    android:text="@string/hello" />

<TextView    style="@style/CodeFont"    android:text="@string/hello" />

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">        <item name="android:layout_width">fill_parent</item>        <item name="android:layout_height">wrap_content</item>        <item name="android:textColor">#00FF00</item>        <item name="android:typeface">monospace</item>    </style></resources>

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 15: Android Basic Development Day 1 Introduction & ADT

icon name

Asset Type Prefix Example

Icons ic_ ic_star.png

Launcher icons ic_launcher ic_launcher_calendar.png

Menu icons and Action Bar icons ic_menu ic_menu_archive.png

Status bar icons ic_stat_notify ic_stat_notify_msg.png

Tab icons ic_tab ic_tab_recent.png

Dialog icons ic_dialog ic_dialog_info.png

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 16: Android Basic Development Day 1 Introduction & ADT

Android Drawables (www.androiddrawables.com)

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 17: Android Basic Development Day 1 Introduction & ADT

Eclipse Shortcuts

Ctrl + Shift + Space : Show method parameterFn + Cmd + F11 : RunCmd + i : Correct Code IndentationRotate Device : Fn(F12) + Control

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 18: Android Basic Development Day 1 Introduction & ADT

Create Android Application

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 19: Android Basic Development Day 1 Introduction & ADT

Create Android Application : Step 1

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 20: Android Basic Development Day 1 Introduction & ADT

Create Android Application : Step 2

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 21: Android Basic Development Day 1 Introduction & ADT

Create Android Application : Step 3

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 22: Android Basic Development Day 1 Introduction & ADT

Create Android Application : Step 4

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 23: Android Basic Development Day 1 Introduction & ADT

Create Android Application : Step 5

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 24: Android Basic Development Day 1 Introduction & ADT

Activity

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 25: Android Basic Development Day 1 Introduction & ADT

Activity

Setting Activity

Fullscreen Activity

Login Activity

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 26: Android Basic Development Day 1 Introduction & ADT

Create New Activity : Step 1

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 27: Android Basic Development Day 1 Introduction & ADT

Create New Activity : Step 2

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 28: Android Basic Development Day 1 Introduction & ADT

Create New Activity : Step 3

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 29: Android Basic Development Day 1 Introduction & ADT

Create New Activity : Step 4

Add 3 Blank Activity

- FirstActivity- WebViewActivity- DialogActivity

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 30: Android Basic Development Day 1 Introduction & ADT

Login Activity

Add New Login Activity

-LoginActivity.java-activity_login.xml

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 31: Android Basic Development Day 1 Introduction & ADT

Settings Activity

Add New Settings Activity

-SettingsActivity.java-activity_settings.xml

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 32: Android Basic Development Day 1 Introduction & ADT

Menu

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 33: Android Basic Development Day 1 Introduction & ADT

Menu

Options Menu(< API 10)

Action Bar(> API 11)

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 34: Android Basic Development Day 1 Introduction & ADT

Menu : edit main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="always" android:title="@string/action_settings"/> <item android:id="@+id/action_login" android:orderInCategory="90" android:showAsAction="ifRoom" android:title="Login"/> <item android:id="@+id/action_about" android:icon="@drawable/ic_launcher" android:orderInCategory="91" android:showAsAction="ifRoom" android:title="About"/></menu>

android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 35: Android Basic Development Day 1 Introduction & ADT

Menu : Add Custom Menu : MainActivity.java

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

//add custom menumenu.add("Save")

.setIcon(android.R.drawable.ic_menu_save) .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

menu.add("Search") .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

menu.add("Gallery") .setIcon(android.R.drawable.ic_menu_gallery) .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

return true;}

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 36: Android Basic Development Day 1 Introduction & ADT

Menu : edit MainActivity.java

public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {

case R.id.action_settings: startActivity(new Intent(this, SettingsActivity.class)); return true;

case R.id.action_login: startActivity(new Intent(this, LoginActivity.class)); return true;

case R.id.action_about: startActivity(new Intent(this, WebViewActivity.class)); return true;

default: return super.onOptionsItemSelected(item); } }

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 37: Android Basic Development Day 1 Introduction & ADT

Menus

Floating context menu Contextual action bar Checkable menu Popup Menu

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 38: Android Basic Development Day 1 Introduction & ADT

WebView

Add New Blank Activity

-WebViewActivity.java-activity_webview.xml

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 39: Android Basic Development Day 1 Introduction & ADT

Progress Bar

Progress bars

Activity bar

progressBarStyleHorizontal progressBarStyleLarge

progressBarStyle

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 40: Android Basic Development Day 1 Introduction & ADT

Add Permission : AndroidManifest.xml

WebView : activity_webview.xml

<WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_centerVertical="true" />

<ProgressBar android:id="@+id/progressBar1"

style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true"/>

style="?android:attr/progressBarStyle"style="?android:attr/progressBarStyleSmall"style="?android:attr/progressBarStyleLarge"style="?android:attr/progressBarStyleHorizontal"

<uses-permission android:name="android.permission.INTERNET"/>

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 41: Android Basic Development Day 1 Introduction & ADT

WebView : WebViewActivity.java

String urlString = "http://www.ibluecode.com" ;

WebView webView = (WebView) findViewById(R.id.webView1);webView.loadUrl(urlString);

WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true);

final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar1); webView.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { progressBar.setProgress(0); progressBar.setVisibility(View.VISIBLE); }

@Override public void onPageFinished(WebView view, String url) { progressBar.setProgress(100); progressBar.setVisibility(View.GONE); }

@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });}

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13

Page 42: Android Basic Development Day 1 Introduction & ADT

WebView : WebViewActivity.java

String urlString = "http://www.ibluecode.com" ;//Intent intent = getIntent();if( intent.getExtras() != null){ urlString = intent.getExtras().get("url").toString() ; }//WebView webView = (WebView) findViewById(R.id.webView1);

webView.loadUrl(urlString);

WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true);

final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar1); webView.setWebViewClient(new WebViewClient(){

@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) { progressBar.setProgress(0); progressBar.setVisibility(View.VISIBLE);

}

@Override public void onPageFinished(WebView view, String url) { progressBar.setProgress(100); progressBar.setVisibility(View.GONE); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });}

Get Data from Intent

by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13