Click here to load reader

Chapter 4

Embed Size (px)

DESCRIPTION

Chapter 4. 手機控制項應用. Component Placement. . 線性佈局共有兩個方向: 垂直( vertical ) 水平( horizontal ) 決定垂直或是水平的屬性為 Orientation android:orientation="vertical". . 線性佈局就是將在 < LinearLayout > 內的元件以線性的方式來呈現. - Example. - PowerPoint PPT Presentation

Citation preview

  • Component Placement

  • verticalhorizontalOrientationandroid:orientation="vertical"

  • < LinearLayout >

  • - Example

  • - Example

    (res/layout/main.xml)

  • - android:orientationandroid:layout_widthfill_parentparentwrap_content

  • - android:layout_heightfill_parentparentwrap_contentandroid:layout_marginview

  • - android: layout_marginBottomviewandroid: layout_marginLeftviewandroid: layout_marginRightviewandroid: layout_marginTopview

  • FrameLayoutFrameLayoutFrameLayoutFrameLayout

  • - This is That is

  • - Example

    -1 (res/layout/main.xml)

  • - Example

    "That is a framelayout example""Thit is"-2(res/layout/main.xml)

  • - ExampleRelativeLayoutLinearLayout

  • - Example

    android:id="@+id/TextView01"

    android:id="@+id/ TextView02" android:layout_below="@id/ TextView01"

    android:id="@+id/ TextView03" android:layout_below="@id/ TextView02"

    TextView01TextView02TextView01TextView03TextView02(res/layout/main.xml)

  • - Example

    (res/layout/main.xml)TextViewTextViewRelativeLayout

  • - android:layout_aboveidandroid:layout_alignBaselineidandroid:layout_alignBottomid

  • - android:layout_alignLeftidandroid:layout_alignParentBottomtrueParentandroid:layout_alignParentLefttrueParent

  • - android:layout_alignParentRighttrueParentandroid:layout_alignParentToptrueParentandroid:layout_alignRightid

  • - android:layout_alignTopidandroid:layout_alignWithParentIfMissingtrueidParentandroid:layout_belowid

  • - android:layout_centerHorizontaltrueParentandroid:layout_centerInParenttrueParentandroid:layout_centerVerticaltrueParentandroid:layout_toLeftOf/toRightOfid/

  • - Examplerow

  • - Example

    />

  • - Exampleandroid:layout_column="0" android:text="\n" android:textSize="22sp" android:layout_marginLeft="60px"/> /> />

    -2(res/layout/main.xml)

  • Text Component

  • TextViewTextViewXMLMethodXMLMethod XML Method

  • TextView android:autoLink setAutoLinkMask(int)android:gravity setGravity(int)Viewxyandroid:height setHeight(int)TextViewandroid:width setWidth(int)TextView

  • TextView android:hint setHint(int)Texthintandroid:lines setLines(int)TextViewLineandroid:maxLength setFilters(InputFilter)TextView

  • TextView android:password setTransformationMethod(Transformation)Textandroid:text setText(CharSequence)android:textStyle setTypeface(Typeface)

  • TextView android:textColor setTextColor(ColorStateList)android:textColorLink setLinkTextColor(int)android:textSize setTextSize(float)

  • TextView Example

  • TextView Example 1

    autoLinkwebautoLinkwebXML(res/layout/main.xml)

  • TextView Example 2

    (res/layout/main.xml) 1(TextView.java)package ncu.bnlab;import android.app.Activity;import android.os.Bundle;import android.text.util.Linkify;import android.view.Gravity;import android.widget.LinearLayout;import android.widget.TextView;

  • TextView Example 2public class TextViewExample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout layout = (LinearLayout)findViewById(R.id.my_layout); TextView tv1 = new TextView(this); tv1.setGravity(Gravity.CENTER); tv1.setAutoLinkMask(Linkify.WEB_URLS); tv1.setText("Google - www.google.com"); layout.addView(tv1); TextView tv2 = new TextView(this); tv2.setGravity(Gravity.CENTER); tv2.setAutoLinkMask(Linkify.WEB_URLS); tv2.setText("Yahoo - www.yahoo.com.tw"); layout.addView(tv2); }} 2(TextView.java)

  • TextView autoLinkandroid:autoLink setAutoLinkMask(int)noneautoLinkall Linkify.ALLemail Linkify. EMAIL_ADDRESSESEmailphone Linkify. PHONE_NUMBERSweb Linkify.WEB_URLS

  • AutoCompleteTextView AutoCompleteTextViewTextTaTa

  • AutoCompleteTextView Example

  • AutoCompleteTextView Example(res/layout/main.xml)

  • AutoCompleteTextView Example(TextView.java)package ncu.bnlab;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;public class AutoCompleteTextViewExample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, TAIWAN); AutoCompleteTextView TaiwanCity = (AutoCompleteTextView)findViewById(R.id.city); TaiwanCity.setAdapter(adapter); }private static final String[] TAIWAN = new String[] { "Keelung", "Taipei", "Taoyuan", "Hsinchu", "Miaoli", "Taichung", "Changhua", "Nantou", "Yunlin", "Chiayi", "Tainan", "Kaohsiung", "Pingtung ", "Yilan", "Hualien", "Taitung" };}

  • Form Component

  • ButtonButtonlayoutwrap_contentlayout_widthwrap_contentbuttonbuttontextfill_parentlayout_widthfill_parentparent

  • Button ExampleXMLButton

  • ImageButtonImageButtonbutton layout:src=""ImageButton

  • ImageButton Example

    (res/layout/main.xml)

  • RadioButtonRadioButtonRadioButton

  • RadioButton Example

  • RadioButton Example

  • RadioButton Example

    -2(res/layout/main.xml)

  • ToggleButtonToggleButtonButton Off Onandroid:textOnandroid:textOffOnOff

  • ToggleButton ExampleTextView

  • ToggleButton Example

    -1(res/layout/main.xml)

  • ToggleButton Example

    -2(res/layout/main.xml)

  • ToggleButton Examplepublic class ToggleButtonExample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView textView01 = (TextView)findViewById(R.id.TextView01); final ToggleButton toggleButton01 = (ToggleButton) findViewById(R.id.ToggleButton01); toggleButton01.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (toggleButton01.isChecked()) { textView01.setText("Now is ON"); } else { textView01.setText("Now is OFF"); } } });-1(ToggleButtonExample.java)

  • ToggleButton Example final TextView textView02 = (TextView)findViewById(R.id.TextView02); final ToggleButton toggleButton02 = (ToggleButton) findViewById(R.id.ToggleButton02); toggleButton02.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (toggleButton02.isChecked()) { textView02.setText("Now is ON"); } else { textView02.setText("Now is OFF"); } } }); }-2(ToggleButtonExample.java)toggleButton01toggleButton02onClickisCheck()toggleButtonTextView01TextView02

  • CheckBoxCheckBoxcheckeduncheckedCheckBox

  • CheckBox Example

  • CheckBox Example-1(res/layout/main.xml)

  • CheckBox Example

    -2(res/layout/main.xml)

  • DatePickerDatePickerbuttonTextViewDatePicker

  • DatePicker

    -1(res/layout/main.xml)

  • DatePickerpublic class DatePickerExample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final DatePicker datePicker = (DatePicker) findViewById(R.id.DatePicker01); final Button myButton = (Button) findViewById(R.id.Button01); final TextView textView = (TextView) findViewById(R.id.TextView01); myButton.setOnClickListener(new OnClickListener(){ public void onClick(View v) { int year = datePicker.getYear(); int month = datePicker.getMonth() + 1; int day = datePicker.getDayOfMonth(); textView.setText( year + "-" + month + "-" + day ); } }); }}

    (DatePickerExample.java)

  • TimePickerTimePickerAMPM

  • TimePicker Example (res/layout/main.xml)

  • TimePicker Examplepublic class TimePickerExample extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TimePicker timePicker = (TimePicker) findViewById(R.id.TimePicker01); final Button myButton = (Button) findViewById(R.id.Button01); final TextView textView = (TextView) findViewById(R.id.TextView01); myButton.setOnClickListener(new OnClickListener(){ public void onClick(View v) { int hour = timePicker.getCurrentHour(); int minute = timePicker.getCurrentMinute(); textView.setText( hour + " : " + minute ); } }); }}(TimePickerExample.java)

  • EditTextEditTextlayout_widthwrap_contentEditTextfill_parentparent

  • EditText Example

  • ProgressBarProgressBarProgressBar

  • ProgressBar Example(res/layout/main.xml)

    styleProgressBar

  • RatingBarRatingBarRatingBar0.5

  • RatingBar Example

  • RatingBar (res/layout/main.xml)

  • RatingBar Example(RatingBarExample.java)public class RatingBarExample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView textView01 = (TextView) findViewById(R.id.TextView01); final TextView textView02 = (TextView) findViewById(R.id.TextView02); final RatingBar ratingBar01 = (RatingBar) findViewById(R.id.RatingBar01); ratingBar01.setOnRatingBarChangeListener(new OnRatingBarChangeListener(){ public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { textView01.setText(Float.toString(ratingBar01.getRating())); }}); final RatingBar ratingBar02 = (RatingBar) findViewById(R.id.RatingBar02); ratingBar02.setOnRatingBarChangeListener(new OnRatingBarChangeListener(){ public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) { textView02.setText(Float.toString(ratingBar02.getRating())); }}); }}

  • Component

  • AlertDialogAlertDialog

  • AlertDialog Example-1(AlertDialogExample.java)public class AlertDialogExample extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button button01 = (Button) findViewById(R.id.Button01); final Button button02 = (Button) findViewById(R.id.Button02); button01.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) { About(); } }); button02.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) { Leave(); } }); } private void About() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("") .setMessage(" Alert Dialog") .show(); }

  • AlertDialog Example-2(AlertDialogExample.java) private void Leave() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("?") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub AlertDialogExample.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } }); AlertDialog about_dialog = builder.create(); about_dialog.show(); } }

  • AlertDialog.Builder - create()AlertDialogsetCancelable(boolean)falsesetIcon(Drawable or int)TitleIconsetTitle(CharSequence or int)Title

  • AlertDialog.Builder - setMessage(CharSequence or int)setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener) ()setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener)()show()AlertDialog

  • ProgressDialogProgressDialogProgressDialog ProgressDialog ProgressDialog

  • ProgressDialog Example 1 ProgressDialog

  • ProgressDialog Example 1(AlertDialogExample01.java)public class ProgressDialogExample extends Activity { int nowProgressStatus = 0; Handler myHandler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ProgressDialog dialog01 = ProgressDialog.show(this, "", "...", false); Thread thread01 = new Thread(new Runnable() { public void run() { while (nowProgressStatus < 100) { try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } nowProgressStatus+=5; } // While myHandler.post(new Runnable() { public void run() { dialog01.cancel(); } }); } }); thread01.start(); }}

    ProgressDialog

  • ProgressDialog Example 2 ProgressDialog

  • ProgressDialog Example 2(AlertDialogExample02.java)public class ProgressDialogExample02 extends Activity { int nowProgressStatus = 0; Handler myHandler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ProgressDialog dialog02 = new ProgressDialog(this); dialog02.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog02.setMessage("..."); dialog02.show(); Thread thread02 = new Thread(new Runnable() { public void run() { while (nowProgressStatus < 100) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } nowProgressStatus+=5; myHandler.post(new Runnable() { public void run() { dialog02.setProgress(nowProgressStatus); } }); } // While myHandler.post(new Runnable() { public void run() { dialog02.cancel(); }}); }}); thread02.start(); }}

  • DatePickerDialogDatePickerDialog

  • DatePickerDialog Example(DatePickerDialogExample.java)public class DatePickerDialogExample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DatePickerDialog dpd = new DatePickerDialog(this,myOnDateSetListener,2009, 10, 05); dpd.show(); } private DatePickerDialog.OnDateSetListener myOnDateSetListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub } };}

  • DatePickerDialog DatePickerDialogpublic DatePickerDialog (Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)public DatePickerDialog (Context context, int theme, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

  • TimePickerDialogTimePickerDialog

  • TimePickerDialog Example(TimePickerDialogExample.java)public class TimePickerDialogExample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TimePickerDialog tpd = new TimePickerDialog(this, myTimeSetListener, 12, 25, false); tpd.show(); } private TimePickerDialog.OnTimeSetListener myTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub } };}

  • TimePickerDialog TimePickerDialogpublic TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)public TimePickerDialog (Context context, int theme, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)

  • Menu Component

  • Options MenuOptions MenumenuIcon MenuMoreExpanded Menu

  • Options Menu Example 1MenuOptionsMenu

  • Options Menu Example 1public class OptionsMenu extends Activity { public static final int aboutBtnID = Menu.FIRST; public static final int exitBtnID = Menu.FIRST + 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, aboutBtnID, 0, "About"); menu.add(0, exitBtnID, 0, "Exit"); return true; }

    -1(OptionsMenuEX.java)

  • Options Menu Example 1public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch( item.getItemId() ) { case aboutBtnID: openDialog(); break; case exitBtnID: finish(); break; } return true; } public void openDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("About OptionsMenu"); builder.setTitle("About"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); }}-2(OptionsMenuEX.java)

  • Options Menu Example 2

  • Options Menu Example 2-1(OptionsMenuEX.java)public class OptionsMenu2 extends Activity { public static final int aboutBtnID = Menu.FIRST; public static final int exitBtnID = Menu.FIRST + 1; public static final int searchBtnID = Menu.FIRST + 2; public static final int addBtnID = Menu.FIRST + 3; public static final int playBtnID= Menu.FIRST + 4; public static final int delBtnID = Menu.FIRST + 5; public static final int openBtnID = Menu.FIRST + 6; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, aboutBtnID, 0, "About"); menu.add(0, exitBtnID, 0, "Exit"); menu.add(0, searchBtnID, 0, "Search"); menu.add(0, addBtnID, 0, "Add"); menu.add(0, playBtnID, 0, "Play"); menu.add(0, delBtnID, 0, "Delete"); menu.add(0, openBtnID, 0, "Open"); return true; }

  • Options Menu Example 2-2(OptionsMenuEX2.java)public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch( item.getItemId() ) { case aboutBtnID: openDialog(); break; case exitBtnID: finish(); break; } return true; } public void openDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("About OptionsMenu"); builder.setTitle("About"); builder.setPositiveButton(OK, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); }}

  • Options Menu

  • Options Menu Example 3setIcon()(OptionsMenuEX.java)public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, aboutBtnID, 0, "About").setIcon(R.drawable.icon); menu.add(0, exitBtnID, 0, "Exit").setIcon(R.drawable.icon); return true;}

  • Context MenuAndroidContext MenuViewContext Menu

  • Context Menu Example

  • Context Menu Example(ContextMenuEX.java)public class ContextMenu extends Activity { public String checkedItem = ""; public static final int newBtnID = Menu.FIRST; public static final int openBtnID = Menu.FIRST + 1; public static final int closeBtnID = Menu.FIRST + 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button fileBtn = (Button)findViewById(R.id.fileBtn); Button editBtn = (Button)findViewById(R.id.editBtn); registerForContextMenu(fileBtn); registerForContextMenu(editBtn); }public void onCreateContextMenu(android.view.ContextMenu conMenu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(conMenu, v, menuInfo); conMenu.setHeaderTitle("Context Menu"); conMenu.add(0, newBtnID, 0, "New").setNumericShortcut('1'); conMenu.add(0, openBtnID, 0, "Open").setCheckable(true); conMenu.add(0, closeBtnID, 0, "Close").setIcon(R.drawable.icon); } public boolean onContextItemSelected(MenuItem item) { super.onContextItemSelected(item); return false; }}

  • Sub Menu

  • Sub Menu Example

  • Sub Menu Examplepublic class SubMenus extends Activity {public String checkedItem = ""; public static final int newBtnID = Menu.FIRST;public static final int openBtnID = Menu.FIRST + 1;public static final int closeBtnID = Menu.FIRST + 2;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button fileBtn = (Button)findViewById(R.id.fileBtn);Button editBtn = (Button)findViewById(R.id.editBtn);registerForContextMenu(fileBtn);registerForContextMenu(editBtn);}-1(SubMenuEX.java)

  • Sub Menu Examplepublic void onCreateContextMenu(android.view.ContextMenu conMenu, View v, ContextMenuInfo menuInfo) {super.onCreateContextMenu(conMenu, v, menuInfo);/*conMenu.setHeaderTitle("Context Menu");conMenu.add(0, newBtnID, 0, "New").setNumericShortcut('1'); //conMenu.add(0, openBtnID, 0, "Open").setCheckable(true); //checkboxconMenu.add(0, closeBtnID, 0, "Close").setIcon(R.drawable.icon); //ContextMenuicon*/ SubMenu sub = conMenu.addSubMenu("Submenu");sub.add("Add...");sub.add("Delete...");}public boolean onContextItemSelected(MenuItem item){super.onContextItemSelected(item);return false;}}-2(SubMenuEX.java)

  • SpinnerSpinnerwidgetSpinner

  • Spinner Example

  • Spinner Example-1(res/layout/main.xml)

    main.xml

  • Spinner (res/value/strings.xml)(res/value/arrays.xml)

  • Spinner Example-1(SpinnerEX.java)package ncu.bnlab.SpinnerExample;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class SpinnerEX extends Activity { /** Called when the activity is first created. */ @SuppressWarnings("unchecked")@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner s = (Spinner)findViewById(R.id.spinner); SpinnerJAVAonCreate()

  • Spinner Example

    /* createFromResource */ ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.cards, android.R.layout.simple_spinner_item); /* */ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); /* Adapter */ s.setAdapter(adapter); }}

    -2(SpinnerEX.java)

  • Notifying Component

  • Toast NotificationService

  • Toast NotificationStatus Bar Notification

  • Toast NotificationToastmaketextToastshow()

  • Toast NotificationToastsetGravity(int, int, int)ToastToast(x-postion)Toast(y-postion)

  • Toast Notification Example

  • Toast Notification Example(ToastNotificationEX.java)public class ToastNotification extends Activity{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* makeText */ Context context1 = getApplicationContext(); CharSequence text1 = "Short Toast"; int duration1 = Toast.LENGTH_SHORT; // Toast toast = Toast.makeText(context1, text1, duration1); toast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 0); //Toast toast.show(); /* makeText */ Context context2 = getApplicationContext(); CharSequence text2 = "Long Toast"; int duration2 = Toast.LENGTH_LONG; // Toast.makeText(context2, text2, duration2).show(); }}

  • Status Bar NotificationAndroidIntent

  • Status Bar NotificationDialog Notification

  • Status Bar Notification

  • Status Bar Notification

  • Status Bar Notification Example

  • Status Bar Notification Example(StatusBarNotificationEX.java)public class StatusBarNotification extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); int icon = R.drawable.icon; // CharSequence tickerText = "Hello!!!"; // ticker-text long when = System.currentTimeMillis(); // Context context = getApplicationContext(); // CharSequence contentTitle = ""; // CharSequence contentText = ""; // Intent notificationIntent = new Intent(this, StatusBarNotification.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); Notification notification = new Notification(icon, tickerText, when); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); final int HELLO_ID = 1; mNotificationManager.notify(HELLO_ID, notification); // }}

  • Dialog Notification

  • Dialog Notification

  • Display Component

  • ImageViewImageView()

  • ImageView - android:adjustViewBounds setAdjustViewBounds(boolean)ImageViewdrawabletrueandroid:cropToPaddingandroid:maxHeight setMaxHeight(int)

  • ImageView - android:maxWidth setMaxWidth(int)android:scaleType setScaleType(ImageView.ScaleType)ImageViewandroid:src setImageResource(int)ImageViewandroid:tint setColorFilter(int,PorterDuff.Mode)

  • ImageView Example

  • ImageView Example-1(ImageViewEX.java)public class ImageViewEX extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ImageView imageView = new ImageView(this); imageView.setImageResource(R.drawable.christmas); setContentView(imageView); }}

    drawableimageView

  • ListViewAndroid CheckBoxRadioButton ListView

  • ListView Example

  • ListView -1(ListViewEX.java)public class ListViewEX extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] Data = {"","",""}; ListView listView = new ListView(this); // ListView : // ListView.CHOICE_MODE_SINGLE // ListView.CHOICE_MODE_MULTIPLE listView.setChoiceMode( ListView.CHOICE_MODE_SINGLE ); ArrayAdapter vArrayData = new ArrayAdapter( this , android.R.layout.simple_list_item_single_choice , Data ); // ListView listView.setAdapter( vArrayData ); // ListView ContentView setContentView(listView); }}

  • ListView Example 2 -2(ListViewEX.java)public class ListViewEX2 extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] Data = { "","","" }; ListView listView = this.getListView(); listView.setChoiceMode( ListView.CHOICE_MODE_SINGLE ); // ListView this.setListAdapter( new ArrayAdapter( this , android.R.layout.simple_list_item_single_choice , Data )); }}

  • GridViewGridView

  • GridView Example

  • public class GridViewEX extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this)); }}

    GridView GridView-1(GridViewEX.java)

  • GridView Examplepublic class ImageAdapter extends BaseAdapter{ private Context mContext; public ImageAdapter(Context c) { mContext = c; } public int getCount() { return mThumbIds.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; }ImageAdapter-1(ImageAdapter.java)

  • GridView Examplepublic View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position]); return imageView; } private Integer[] mThumbIds = { R.drawable.icon, R.drawable.christmas, R.drawable.favorite, R.drawable.ipod };}ImageAdapter-2(ImageAdapter.java)

  • SurfaceView

    handlerViewViewSurfaceViewgetHolder()SurfaceHolderSurfaceHolderCanvas

  • SurfaceView Example

  • SurfaceView Examplepublic class SurfaceViewEX extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } // class MyView extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder holder; public MyView(Context context) { super(context); holder = this.getHolder();//Holder holder.addCallback(this); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { }-1(SurfaceViewEX.java)

  • SurfaceView Example

    @Overridepublic void surfaceCreated(SurfaceHolder holder){ new Thread(new MyThread()).start();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder){}//class MyThread implements Runnable{ @Override public void run() { Canvas canvas = holder.lockCanvas(null);// Paint mPaint = new Paint(); mPaint.setColor(Color.BLUE); canvas.drawRect(new RectF(40,60,80,80), mPaint); holder.unlockCanvasAndPost(canvas);// }} }}-2(SurfaceViewEX.java)

  • WebView

    WebviewwebWebkit

  • WebView Example

  • WebView Example

    WebViewInternetwebAndroidManifest.xmlINTERNETmain.xml(res/layout/main.xml)

  • WebView Example

    (WebViewEX.java)public class WebViewEX extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView webview; webview = (WebView) findViewById(R.id.webview); webview.getSettings().setJavaScriptEnabled(true); webview.loadUrl("http://www.google.com"); }}

    Google

  • MapView

    Google MapGoogle Map API

  • MapView Example

  • MapView Example

    AndroidManifest.xmlGoogle Map APIAndroidManifest.xml

  • MapView Example

    android:apiKeyGoogle(res/layout/main.xml)

  • MapView Example

    (MapViewEX.java)public class MapViewEX extends MapActivity { /** Called when the activity is first created. */ @Override protected boolean isRouteDisplayed() { return false; } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mv = (MapView) findViewById(R.id.mapview); MapController controller = (MapController)mv.getController(); GeoPoint p = new GeoPoint((int) (25 * 1000000),(int)(121.5 * 1000000)); controller.animateTo(p); controller.setZoom(15); }}

  • Customized Component

  • Customized ComponentAndroidAndroidButtonTextView EditTextListViewCheckBoxRadioButtonAutoCompleteTextViewImageSwitcher TextSwitcherLayout

  • Customized ComponentOK

  • Customized ComponentAndroidViewXMLonMeasure()onDraw()onMeasure()100x100on...

  • Customized ComponentonDraw()Canvas2D3D3DViewSurfaceView

  • Customized ComponentonMeasure()onMeasure()setMeasuredDimension()

  • Customized ComponentonMeasure()onMeasure()(widthMeasureSpecheighMeasureSpec)onMeasure()setMeasuredDimension(int width, int height)

  • After-Class ExerciseLayout

    RadioButton

    ProgressBar

  • After-Class ExerciseOptions Menu

    ContextMenu?

    Toast

    StatusBarNotification

    ListView

    MapViewAndroidManifest.xml

    *LayoutLinearLayoutFrameLayoutRelativeLayoutTableLayout****setContentViewmain.xmlres/layout/main.xml****FrameLayoutFrameLayoutFrameLayoutFrameLayout****id**RelativeLayoutidTextView01idTextView02idTextView01Relativeandroid:layout_below="@id/ TextView01"

    *******TableLayoutrowcolumnTableLayout**layout_column=""********TextView"Google www.google.com""Yahoo - www.yahoo.com.tw"TextViewautoLink(ex. )*TextViewautoLinkwebautoLinkallphone**findViewByIdxmlLinearLayoutid my_layoutlayoutfindViewByIdxmlidTextViewtv1tv2setMethodlayout.addViewtv1tv2layout

    ***TAIWANTaipeiTaichungAutoCompleteTextViewTaTAIWANTa*******android:srcdrawableheartlightningstar****RadioButtonRadio GroupRadio Groupandroid:orientationhorizontalRadioButtonRadioButtonandroid:checkedtrueGroupRadioButton*****main.xmlTextViewToggleButtonToggleButtonExample.javafindViewByIdtoggleButton01toggleButton02onClickisCheck()toggleButtonTextView01TextView02********buttonOnClickListenerbuttononClickdatePickertextViewdatePickermonth0~11getMonth()+1*TimePickerAMPMTextView517AM5:17PM17:17**timePicker.getCurrentHour()0~23buttonOnClickListenerclickTimerPickerTextView****ProgressBarPregressBarPregressBarProgressBarXML1. style="?android:attr/progressBarStyleHorizontal"2. style="?android:attr/progressBarStyleSmall" 3. style="?android:attr/progressBarStyle"4. style="?android:attr/progressBarStyleLarge"styleProgressBarstyleProgressBar

    ****RatingBar3RatingBarTextViewratingBar01ratingBar02OnRatingBarChangeListenerratingtextView01textView02***ButtonButtonAbout()Leave()MethodAlertDialogAlertDialog.Builderbuilderbuilder.set*****builder4.4.1show()DialogAbout()builder".show()"DialogLeave()builderbuilder createshow()******ProgressDialogProgressDialognowProgressStatus100handlerProgressDialogcancelProgressDialogProgressDialog**ProgressDialogsetProgressStyledialog02.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

    STYLE_SPINNERProgressDialogSTYLE_HORIZONTALProgressDialogSTYLE_HORIZONTALProgressDialogsetProgress()MethodhandlerserProgress()

    **DatePickerDialog2009/11/050-111011myOnDateSetListenerDatePickerDialogSetonDateSet()*public DatePickerDialog (Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)contextDialogcallBacksetyearmonthOfYear0-11dayOfMonthpublic DatePickerDialog (Context context, int theme, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)contextDialogthemeDialogthemecallBacksetyearmonthOfYear0-11dayOfMonth

    **TimePickerDialog1225OnTimeSetListenerTimePickerDialogSetonTimeSet ()*public TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)contextDialogcallBacksethourOfDayminuteis24HourView24AM/PMpublic TimePickerDialog (Context context, int theme, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)contextDialogthemeDialogthemecallBacksethourOfDay

    **onCreateOptionsMenu()XMLJAVAadd()MenuItemMenuItem**MenuItemitemIDonCreateOptionsMenu() add()itemIDadd()groupID, itemID, order, titleGroupIDMenu ItemitemIDMenuItemordertitle

    **MenuMenuItemMore IconMenuItem*****Context MenuonCreateContextMenu() onContextItemSelected()onCreateContextMenu()add()Menu ItemXMLregisterForContextMenu()ViewContextMenu******addSubMenu()SubMenuadd()

    *******************NotificationNotificationManagerAndroidNotificationManagergetSystemService()NotificationManagernotify()*NotificationNotificationManagerAndroidNotificationManagergetSystemService()NotificationManagernotify()**********ListViewActivityListActivity

    listView.setChoiceMode( ListView.CHOICE_MODE_SINGLE )ListViewListView.CHOICE_MODE_SINGLEListView.CHOICE_MODE_MULTIPLE

    android.R.layout.simple_list_item_single_choiceCheckBoxandroid.R.layout.simple_list_item_multiple_choiceRadioButton

    *ListActivityListView

    *ListActivityListView

    *ListActivityListView

    *GridViewImageAdapterGridView*ImageAdapterBaseAdapterGridView*drawable

    ****SurfaceView

    ******Google Map API

    ***MapActivityMapViewGoogle Map

    2.0Google**********