Android Basic Development Day 1 Introduction & ADT
-
Upload
eakapong-kattiya -
Category
Technology
-
view
786 -
download
1
description
Transcript of Android Basic Development Day 1 Introduction & ADT
Basic Programming
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
Android Version
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Application Design
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
Fixed Tab SpinnerNavigation Drawers
Application Structure
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
Scrollable Tabs : Google Play Store
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Stacked Tabs : You Tube
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
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
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
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
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
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
Android Drawables (www.androiddrawables.com)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
Create Android Application
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create Android Application : Step 1
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create Android Application : Step 2
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create Android Application : Step 3
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create Android Application : Step 4
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create Android Application : Step 5
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Activity
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Activity
Setting Activity
Fullscreen Activity
Login Activity
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create New Activity : Step 1
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create New Activity : Step 2
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Create New Activity : Step 3
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
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
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
Menu
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
Menu
Options Menu(< API 10)
Action Bar(> API 11)
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
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
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
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
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
Progress Bar
Progress bars
Activity bar
progressBarStyleHorizontal progressBarStyleLarge
progressBarStyle
by Eakapong Kattiya www.ibluecode.com [email protected] +66 086-673-2111Monday, May 27, 13
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
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
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