Kinphoo 发表于 2013-1-14 18:09:28

Android开发之《Android应用开发揭秘》UI事件汇总

/*

* Android开发之《Android应用开发揭秘》UI事件汇总

* 北京Android俱乐部群:167839253

* Created on: 2011-12-01

* Author: blueeagle

* Email: liujiaxiang@gmail.com

*/

思想跑毛是很可怕的,最近去尝试了下创业,结果碰了一鼻子灰,公司乱七八糟的项目搞的焦头烂额。各种没有心情。还好,现在沉淀下来,继续 android开发的征程。

以下是Android应用开发揭秘这本书第四章的关于UI的事件处理的总结。基本上都是可以复用的代码。存着日后方便。

1.EditView控件的setOnKeyListener方法。点击上下左右键或者中间键的时候可以出发该方法。代码如下。
Java代码

   1.      myEditView.setOnKeyListener(new EditText.OnKeyListener(){
   2.   
   3. @Override
   4. public boolean onKey(View v, int keyCode, KeyEvent event) {
   5.         myTextView.setText("文本框中内容是:"+myEditView.getText().toString());
   6.         return false;// TODO Auto-generated method stub
   7. }
   8.      });

myEditView.setOnKeyListener(new EditText.OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { myTextView.setText("文本框中内容是:"+myEditView.getText().toString()); return false;// TODO Auto-generated method stub } });

2.RadioButton控件和RadioGroup控件的组合使用,代码如下:
Java代码

   1.      myRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
   2.   
   3. @Override
   4. public void onCheckedChanged(RadioGroup group, int checkedId) {
   5.   // TODO Auto-generated method stub
   6.   if(checkedId == myRadioButton3.getId())
   7.   {
   8.         DisplayToast("正确答案:"+myRadioButton3.getText()+"恭喜你回答正确");
   9.   }
10.   else
11.   {
12.         DisplayToast("回答错误");
13.   }
14. }
15. );

myRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub if(checkedId == myRadioButton3.getId()) { DisplayToast("正确答案:"+myRadioButton3.getText()+"恭喜你回答正确"); } else { DisplayToast("回答错误"); } } });


3.CheckBox控件的使用,代码如下:
Java代码

   1. myCheckBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
   2.   @Override
   3.   public void onCheckedChanged(CompoundButton buttonView,
   4.             boolean isChecked) {
   5.         // TODO Auto-generated method stub
   6.         if(myCheckBox1.isChecked()){
   7.             DisplayToast("你选择了:"+myCheckBox1.getText());
   8.         }            
   9.   }            
10.       });

myCheckBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(myCheckBox1.isChecked()){ DisplayToast("你选择了:"+myCheckBox1.getText()); } } });

4.Button控件的使用,代码如下:
Java代码

   1.      myButton1.setOnClickListener(new Button.OnClickListener(){
   2. @Override
   3. public void onClick(View v) {
   4. }            
   5.      });

myButton1.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { } });


4.Spinner控件的使用,代码如下:
Java代码

   1. //Spinner控件需要跟ArrayAdapter绑定使用。
   2.   private static final String[] m_Countries = {"A型","B型","O型","AB型","未知类型"};
   3.   private Spinner mySpinner;
   4.   private ArrayAdapter<String> myAdapter;
   5.         mySpinner = (Spinner)findViewById(R.id.mySpinner1);         
   6.         myAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m_Countries);
   7.         //设置下拉列表风格
   8.         myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
   9.         //将adapter添加到mySpinner中
10.         mySpinner.setAdapter(myAdapter);
11.         //添加事件监听
12.         mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
13.             @Override
14.             public void onItemSelected(AdapterView<?> arg0, View arg1,
15.                     int arg2, long arg3) {
16.               // TODO Auto-generated method stub
17.               myTextView.setText("你的血型是"+ m_Countries);
18.               arg0.setVisibility(View.VISIBLE);
19.             }
20.             @Override
21.             public void onNothingSelected(AdapterView<?> arg0) {
22.               // TODO Auto-generated method stub
23.               DisplayToast("你什么也没选!");
24.             }            
25.         });

//Spinner 控件需要跟ArrayAdapter绑定使用。 private static final String[] m_Countries = {"A型","B型","O型","AB型","未知类型"}; private Spinner mySpinner; private ArrayAdapter<String> myAdapter; mySpinner = (Spinner)findViewById(R.id.mySpinner1); myAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m_Countries); //设置下拉列表风格 myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //将adapter添加到mySpinner中 mySpinner.setAdapter(myAdapter); //添加事件监听 mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub myTextView.setText("你的血型是"+ m_Countries); arg0.setVisibility(View.VISIBLE); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub DisplayToast("你什么也没选!"); } });

5.AutoCompleteTextView的使用,代码如下:
Java代码

   1. private static final String[] autoString = {"abcd1","abcd212","32123","32open","32add","android","windows","iphone","linux","mydirve","msnbmw","wocaonimalegebi"};
   2.   private ArrayAdapter<String> myAdapter1;
   3.   private AutoCompleteTextView myAutoCompleteTextView;
   4.         myAdapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,autoString);
   5.         myAutoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.myAutoCompleteTextView);
   6.         myAutoCompleteTextView.setAdapter(myAdapter1);
   7. 6.DatePicker、TimePicker以及Button的使用,代码如下:
   8.         myCalendar1 = Calendar.getInstance();
   9.         myTextView = (TextView)findViewById(R.id.myTextView);
10.         myDatePicker = (DatePicker)findViewById(R.id.datePicker1);
11.         myTimePicker = (TimePicker)findViewById(R.id.timePicker1);
12.         myButton1 = (Button)findViewById(R.id.button1);
13.         myButton2 = (Button)findViewById(R.id.button2);
14.         
15.         //将日历初始化为当前系统时间,并设置其事件监听
16.         myDatePicker.init(myCalendar1.get(Calendar.YEAR), myCalendar1.get(Calendar.MONTH), myCalendar1.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
17.               
18.             @Override
19.             public void onDateChanged(DatePicker view, int year, int monthOfYear,
20.                     int dayOfMonth) {
21.               // 当日期更改时,在这里处理。
22.               // myCalendar1.set(year, month, day);
23.             }
24.         });
25.         //获取TimePicker对象设置为24小时显示。
26.         myTimePicker.setIs24HourView(true);
27.         //监听时间改变
28.         myTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
29.               
30.             @Override
31.             public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
32.               // TODO Auto-generated method stub
33.               // 当时间改变时,在这里处理。
34.               //myCalendar1.set(year, month, day, hourOfDay, minute);
35.             }
36.         });
37.         //-----------按钮事件---------//
38.         myButton1.setOnClickListener(new Button.OnClickListener(){
39.             @Override
40.             public void onClick(View v) {
41.               // 下面的NEW 是新建了一个调整日历的对话框
42.               new DatePickerDialog(AndroidUnleashed001Activity.this,new DatePickerDialog.OnDateSetListener(){
43.                     @Override
44.                     public void onDateSet(DatePicker view, int year,
45.                           int monthOfYear, int dayOfMonth) {
46.                         // TODO Auto-generated method stub
47.                         //设置日历
48.                     }            
49.               },myCalendar1.get(Calendar.YEAR),myCalendar1.get(Calendar.MONTH), myCalendar1.get(Calendar.DAY_OF_MONTH)).show();
50.             }
51.         });         
52.         myButton2.setOnClickListener(new Button.OnClickListener(){
53.             @Override
54.             public void onClick(View v) {
55.               //下面的NEW 是新建了一个调整时间的对话框      
56.               new TimePickerDialog(AndroidUnleashed001Activity.this, new TimePickerDialog.OnTimeSetListener() {
57.                     
58.                     @Override
59.                     public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
60.                         // TODO Auto-generated method stub                        
61.                     }
62.               }, myCalendar1.get(Calendar.HOUR_OF_DAY), myCalendar1.get(Calendar.MINUTE),true).show();
63.             }            
64.         });
65. }

private static final String[] autoString = {"abcd1","abcd212","32123","32open","32add","android","windows","iphone","linux","mydirve","msnbmw","wocaonimalegebi"}; private ArrayAdapter<String> myAdapter1; private AutoCompleteTextView myAutoCompleteTextView; myAdapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,autoString); myAutoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.myAutoCompleteTextView); myAutoCompleteTextView.setAdapter(myAdapter1); 6.DatePicker、TimePicker以及Button的使用,代码如下: myCalendar1 = Calendar.getInstance(); myTextView = (TextView)findViewById(R.id.myTextView); myDatePicker = (DatePicker)findViewById(R.id.datePicker1); myTimePicker = (TimePicker)findViewById(R.id.timePicker1); myButton1 = (Button)findViewById(R.id.button1); myButton2 = (Button)findViewById(R.id.button2); //将日历初始化为当前系统时间,并设置其事件监听 myDatePicker.init(myCalendar1.get(Calendar.YEAR), myCalendar1.get(Calendar.MONTH), myCalendar1.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // 当日期更改时,在这里处理。 // myCalendar1.set(year, month, day); } }); //获取TimePicker对象设置为24小时显示。 myTimePicker.setIs24HourView(true); //监听时间改变 myTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub // 当时间改变时,在这里处理。 //myCalendar1.set(year, month, day, hourOfDay, minute); } }); //-----------按钮事件---------// myButton1.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // 下面的NEW 是新建了一个调整日历的对话框 new DatePickerDialog(AndroidUnleashed001Activity.this,new DatePickerDialog.OnDateSetListener(){ @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub //设置日历 } },myCalendar1.get(Calendar.YEAR),myCalendar1.get(Calendar.MONTH), myCalendar1.get(Calendar.DAY_OF_MONTH)).show(); } }); myButton2.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { //下面的NEW 是新建了一个调整时间的对话框 new TimePickerDialog(AndroidUnleashed001Activity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub } }, myCalendar1.get(Calendar.HOUR_OF_DAY), myCalendar1.get(Calendar.MINUTE),true).show(); } }); }


7.Menu的使用,代码如下:

1.XML方式实现

XML代码可以写成:
Html代码

   1. <menu xmlns:android="http://schemas.android.com/apk/res/android">
   2. <item android:id="@+id/style_submenu" android:title="笔迹样式">
   3.<menu>
   4.<group android:id="@+id/style_group" android:checkableBehavior="single">
   5.   <item android:id="@+id/style" android:orderInCategory="1" android:title="铅笔" />   
   6.   <item android:id="@+id/style" android:orderInCategory="2" android:title="钢笔" />   
   7.   <item android:id="@+id/style" android:orderInCategory="3" android:title="毛笔" />   
   8.   </group>
   9.   </menu>
10.   </item>
11.<item android:id="@+id/color_submenu" android:title="笔迹颜色">
12.<menu>
13.<group android:id="@+id/color_group" android:checkableBehavior="single">
14.   <item android:id="@+id/color" android:orderInCategory="0" android:title="蓝色" />   
15.   <item android:id="@+id/color" android:orderInCategory="1" android:title="绿色" />   
16.   <item android:id="@+id/color" android:orderInCategory="2" android:title="青色" />   
17.   <item android:id="@+id/color" android:orderInCategory="3" android:title="红色" />   
18.   </group>
19.   </menu>
20.   </item>
21.<item android:id="@+id/width_submenu" android:title="笔迹粗细">
22.<menu>
23.<group android:id="@+id/width_group" android:checkableBehavior="single">
24.   <item android:id="@+id/width" android:orderInCategory="1" android:title="较细" />   
25.   <item android:id="@+id/width" android:orderInCategory="2" android:title="细" />   
26.   <item android:id="@+id/width" android:orderInCategory="3" android:title="中等" />   
27.   <item android:id="@+id/width" android:orderInCategory="4" android:title="粗" />   
28.   <item android:id="@+id/width" android:orderInCategory="5" android:title="较粗" />   
29.   </group>
30.   </menu>
31.   </item>
32.   <item android:id="@+id/write" android:title="书写" />   
33.   <item android:id="@+id/erase" android:title="清除" />   
34.   <item android:id="@+id/clear" android:title="清屏" />
35.   </menu>

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/style_submenu" android:title="笔迹样式"> <menu> <group android:id="@+id/style_group" android:checkableBehavior="single"> <item android:id="@+id/style" android:orderInCategory="1" android:title="铅笔" /> <item android:id="@+id/style" android:orderInCategory="2" android:title="钢笔" /> <item android:id="@+id/style" android:orderInCategory="3" android:title="毛笔" /> </group> </menu> </item> <item android:id="@+id/color_submenu" android:title="笔迹颜色"> <menu> <group android:id="@+id/color_group" android:checkableBehavior="single"> <item android:id="@+id/color" android:orderInCategory="0" android:title="蓝色" /> <item android:id="@+id/color" android:orderInCategory="1" android:title="绿色" /> <item android:id="@+id/color" android:orderInCategory="2" android:title="青色" /> <item android:id="@+id/color" android:orderInCategory="3" android:title="红色" /> </group> </menu> </item> <item android:id="@+id/width_submenu" android:title="笔迹粗细"> <menu> <group android:id="@+id/width_group" android:checkableBehavior="single"> <item android:id="@+id/width" android:orderInCategory="1" android:title="较细" /> <item android:id="@+id/width" android:orderInCategory="2" android:title="细" /> <item android:id="@+id/width" android:orderInCategory="3" android:title="中等" /> <item android:id="@+id/width" android:orderInCategory="4" android:title="粗" /> <item android:id="@+id/width" android:orderInCategory="5" android:title="较粗" /> </group> </menu> </item> <item android:id="@+id/write" android:title="书写" /> <item android:id="@+id/erase" android:title="清除" /> <item android:id="@+id/clear" android:title="清屏" /> </menu>


JAVA代码:
Java代码

   1.    @Override
   2. public boolean onCreateOptionsMenu(Menu menu){
   3.   MenuInflater inflater = getMenuInflater();
   4.   inflater.inflate(R.menu.menu, menu);
   5.   return true;
   6. }
   7.    @Override
   8. public boolean onOptionsItemSelected(MenuItem item){
   9.   int item_id = item.getItemId();
10.   switch (item_id)
11.   {
12.   case R.id.about1:
13.         Intent intent = new Intent();
14.         
15.         intent.setClass(AndroidUnleashed001Activity.this, Activity02.class);
16.         startActivity(intent);
17.         AndroidUnleashed001Activity.this.finish();
18.         break;
19.   case R.id.about2:
20.         AndroidUnleashed001Activity.this.finish();
21.         break;
22.   }
23.   return true;
24. }
25. .Menu.add 方法实现
26. public boolean onCreateOptionsMenu(Menu menu){
27.   //MenuInflater inflater = getMenuInflater();
28.   //inflater.inflate(R.menu.menu, menu);
29.   menu.add(0,0,0,R.string.app_name);
30.   menu.add(0,1,1,R.string.hello);
31.   return true;
32. }

@Override public boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ int item_id = item.getItemId(); switch (item_id) { case R.id.about1: Intent intent = new Intent(); intent.setClass(AndroidUnleashed001Activity.this, Activity02.class); startActivity(intent); AndroidUnleashed001Activity.this.finish(); break; case R.id.about2: AndroidUnleashed001Activity.this.finish(); break; } return true; } 1.Menu.add方法实现 public boolean onCreateOptionsMenu(Menu menu){ //MenuInflater inflater = getMenuInflater(); //inflater.inflate(R.menu.menu, menu); menu.add(0,0,0,R.string.app_name); menu.add(0,1,1,R.string.hello); return true; }

8.弹出对话框的使用,代码如下:

这个功能为弹出对话框,点击确定后弹出登录对话框,然后点击登录后弹出多线程对话框。
Java代码

   1. Dialog dialog = new AlertDialog.Builder(AndroidUnleashed001Activity.this).setTitle(" 登录提示").setMessage("这里需要登录").setPositiveButton("确定", new DialogInterface.OnClickListener() {      
   2.             @Override
   3.             public void onClick(DialogInterface dialog, int which) {
   4.               // 点击确定转向登陆框
   5.               LayoutInflater factory = LayoutInflater.from(AndroidUnleashed001Activity.this);
   6.               //得到自定义对话框
   7.               final View DialogView = factory.inflate(R.layout.pop, null);
   8.               //创建对话框
   9.               AlertDialog dlg = new AlertDialog.Builder(AndroidUnleashed001Activity.this).setTitle(" 登录框").setView(DialogView).setPositiveButton("确定", new DialogInterface.OnClickListener() {                  
10.                     private ProgressDialog myProgressDialog;
11.                     @Override
12.                     public void onClick(DialogInterface dialog, int which) {
13.                         // 当输入完成后,点击确定开始登录。
14.                         myProgressDialog = ProgressDialog.show(AndroidUnleashed001Activity.this, "请等待", "正在为您登陆",true);
15.                         new Thread(){
16.                           public void run(){
17.                                 try{
18.                                     sleep(3000);
19.                                 }
20.                                 catch(Exception e){
21.                                     e.printStackTrace();
22.                                 }
23.                                 finally{
24.                                     myProgressDialog.dismiss();
25.                                 }
26.                           }
27.                         }.start();                        
28.                     }
29.               }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
30.                     
31.                     @Override
32.                     public void onClick(DialogInterface dialog, int which) {
33.                         // TODO Auto-generated method stub
34.                         AndroidUnleashed001Activity.this.finish();
35.                     }
36.               }).create();
37.               dlg.show();               
38.             }
39.         }).setNegativeButton("退出", new DialogInterface.OnClickListener() {
40.               
41.             @Override
42.             public void onClick(DialogInterface dialog, int which) {
43.               // TODO Auto-generated method stub
44.               AndroidUnleashed001Activity.this.finish();
45.             }
46.         }).create();
47.         dialog.show();

Dialog dialog = new AlertDialog.Builder(AndroidUnleashed001Activity.this).setTitle("登录提示").setMessage("这里需要登录").setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击确定转向登陆框 LayoutInflater factory = LayoutInflater.from(AndroidUnleashed001Activity.this); //得到自定义对话框 final View DialogView = factory.inflate(R.layout.pop, null); //创建对话框 AlertDialog dlg = new AlertDialog.Builder(AndroidUnleashed001Activity.this).setTitle("登录框").setView(DialogView).setPositiveButton("确定", new DialogInterface.OnClickListener() { private ProgressDialog myProgressDialog; @Override public void onClick(DialogInterface dialog, int which) { // 当输入完成后,点击确定开始登录。 myProgressDialog = ProgressDialog.show(AndroidUnleashed001Activity.this, "请等待", "正在为您登陆",true); new Thread(){ public void run(){ try{ sleep(3000); } catch(Exception e){ e.printStackTrace(); } finally{ myProgressDialog.dismiss(); } } }.start(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub AndroidUnleashed001Activity.this.finish(); } }).create(); dlg.show(); } }).setNegativeButton("退出", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub AndroidUnleashed001Activity.this.finish(); } }).create(); dialog.show();


9.ImageView的使用,代码如下:
Java代码

   1. myImageButton1.setImageDrawable(getResources().getDrawable(R.drawable.logo2));
   2.         
   3.         myImageButton1.setOnClickListener(new Button.OnClickListener(){
   4.   
   5.             @Override
   6.             public void onClick(View v) {
   7.               // TODO Auto-generated method stub
   8.               Dialog mydialog = new AlertDialog.Builder(AndroidUnleashed003Activity.this).setTitle(" 提示")
   9.               .setMessage("我是ImageButton1").setPositiveButton("确定",new DialogInterface.OnClickListener() {
10.                     
11.                     @Override
12.                     public void onClick(DialogInterface dialog, int which) {
13.                         // TODO Auto-generated method stub
14.                           
15.                     }
16.               }).create();
17.               mydialog.show();
18.             }   
19.         });

myImageButton1.setImageDrawable(getResources().getDrawable(R.drawable.logo2)); myImageButton1.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Dialog mydialog = new AlertDialog.Builder(AndroidUnleashed003Activity.this).setTitle("提示") .setMessage("我是ImageButton1").setPositiveButton("确定",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create(); mydialog.show(); } });

注意:如果要去掉ImageButton后面的背景色,使得ImageButton看起来更漂亮一些而不是有个边,则需要做:在XML文件中的属性里添加:“android:background="#00000000"”

10.Gallery的使用,拖动效果很炫,代码如下:
Java代码

   1.Gallery myGallery = (Gallery)findViewById(R.id.myGallery);         
   2.         //添加ImageAdapter给Gallery对象         
   3.         myGallery.setAdapter(new ImageAdapter(this));
   4.         myGallery.setBackgroundResource(R.drawable.background);
   5.         myGallery.setOnItemClickListener(new OnItemClickListener(){
   6.             @Override
   7.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
   8.                     long arg3) {
   9.               // TODO Auto-generated method stub
10.               Toast.makeText(AndroidUnleashed003Activity.this, "你选择了"+(arg2+1)+" 号图片 ", Toast.LENGTH_SHORT).show();
11.             }            
12.         });                  
13.   }
14. //另外,需要存放图片,存放图片的容器,需要使用一个类实现,这个类是ImageAdapter,继承于 BaseAdapter。
15. public class ImageAdapter extends BaseAdapter{
16.   private Context myContext;
17.   private Integer[] mImageIds = {
18.             R.drawable.ic_launcher,
19.             R.drawable.icon,
20.             R.drawable.logo,
21.             R.drawable.logo2,
22.             R.drawable.logo,
23.             R.drawable.ic_launcher,
24.             R.drawable.icon,
25.             R.drawable.logo,
26.   };
27.   public ImageAdapter(Context c){
28.         myContext = c;
29.   }
30.   @Override
31.   //获取图片的个数
32.   public int getCount() {
33.         // TODO Auto-generated method stub
34.         return mImageIds.length;
35.   }
36.   @Override
37.   //获取图片在库中的位置
38.   public Object getItem(int arg0) {
39.         // TODO Auto-generated method stub
40.         return arg0;
41.   }
42.   
43.   @Override
44.   //获取图片在库中的位置
45.   public long getItemId(int arg0) {
46.         // TODO Auto-generated method stub
47.         return arg0;
48.   }
49.   @Override
50.   public View getView(int position, View arg1, ViewGroup arg2) {
51.         // TODO Auto-generated method stub
52.         //return null;
53.         ImageView myImageView = new ImageView(myContext);
54.         //给ImageView设置资源
55.         myImageView.setImageResource(mImageIds);
56.         //设置布局图片以120*120显示
57.         //myImageView.setLayoutParams(new Gallery.LayoutParams(120,120));
58.         //设置显示比例类型
59.         //myImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
60.         return myImageView;
61.   }
62. }

Gallery myGallery = (Gallery)findViewById(R.id.myGallery); //添加ImageAdapter给Gallery对象 myGallery.setAdapter(new ImageAdapter(this)); myGallery.setBackgroundResource(R.drawable.background); myGallery.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(AndroidUnleashed003Activity.this, "你选择了"+(arg2+1)+" 号图片 ", Toast.LENGTH_SHORT).show(); } }); } //另外,需要存放图片,存放图片的容器,需要使用一个类实现,这个类是ImageAdapter,继承于BaseAdapter。 public class ImageAdapter extends BaseAdapter{ private Context myContext; private Integer[] mImageIds = { R.drawable.ic_launcher, R.drawable.icon, R.drawable.logo, R.drawable.logo2, R.drawable.logo, R.drawable.ic_launcher, R.drawable.icon, R.drawable.logo, }; public ImageAdapter(Context c){ myContext = c; } @Override //获取图片的个数 public int getCount() { // TODO Auto-generated method stub return mImageIds.length; } @Override //获取图片在库中的位置 public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } @Override //获取图片在库中的位置 public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int position, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub //return null; ImageView myImageView = new ImageView(myContext); //给ImageView设置资源 myImageView.setImageResource(mImageIds); //设置布局图片以120*120显示 //myImageView.setLayoutParams(new Gallery.LayoutParams(120,120)); //设置显示比例类型 //myImageView.setScaleType(ImageView.ScaleType.FIT_CENTER); return myImageView; } }

11.ImageSwitcher的使用,代码如下:
Java代码

   1. //首先需要实现接口:
   2. extends Activity implements OnClickListener,ViewFactory
   3. //具体操作:
   4.         LinearLayout myMainView = new LinearLayout(this);
   5.         //创建ImageSwitcher对象
   6.         mySwitcher = new ImageSwitcher(this);
   7.         myMainView.addView(mySwitcher);
   8.         mySwitcher.setId(BUTTON_SWITCHER_ID);
   9.         mySwitcher.setFactory(this);
10.         mySwitcher.setImageResource(mImageIds);
11.         
12.         setContentView(myMainView);
13.         
14.         Button next = new Button(this);
15.         next.setId(BUTTON_DOWN_ID);
16.         next.setText("下一张");
17.         next.setOnClickListener(this);
18.         //LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(200,200);
19.         myMainView.addView(next);
20.         
21.         Button pre = new Button(this);
22.         pre.setId(BUTTON_UP_ID);
23.         pre.setText("上一张");
24.         pre.setOnClickListener(this);
25.         myMainView.addView(pre);
26.         
27.   }
28.   
29.   private ImageSwitcher mySwitcher;
30.   private static int index = 0;
31.   //上一页,下一页的按钮索引和Switcher的对象ID
32.   private static final int BUTTON_DOWN_ID = 0x123456;
33.   private static final int BUTTON_UP_ID = 0x123457;
34.   private static final int BUTTON_SWITCHER_ID = 0x123458;
35.   
36. //实现OnClickListener接口的函数
37.   @Override
38.   public void onClick(View v) {
39.         // TODO Auto-generated method stub
40.         switch(v.getId()){
41.         case BUTTON_DOWN_ID:
42.             index++;
43.             if(index>= mImageIds.length){
44.               index = 0;
45.             }
46.             mySwitcher.setImageResource(mImageIds);
47.             break;
48.         case BUTTON_UP_ID:
49.             index--;
50.             if(index<0){
51.               index = mImageIds.length-1;
52.             }
53.             mySwitcher.setImageResource(mImageIds);
54.             break;
55.             default:
56.               break;
57.         }
58.   }
59.   
60.   //实现View.Factory接口的函数
61.   @Override
62.   public View makeView() {
63.         // TODO Auto-generated method stub
64.         return new ImageView(this);
65.   }

//首先需要实现接口: extends Activity implements OnClickListener,ViewFactory //具体操作: LinearLayout myMainView = new LinearLayout(this); //创建ImageSwitcher对象 mySwitcher = new ImageSwitcher(this); myMainView.addView(mySwitcher); mySwitcher.setId(BUTTON_SWITCHER_ID); mySwitcher.setFactory(this); mySwitcher.setImageResource(mImageIds); setContentView(myMainView); Button next = new Button(this); next.setId(BUTTON_DOWN_ID); next.setText("下一张"); next.setOnClickListener(this); //LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(200,200); myMainView.addView(next); Button pre = new Button(this); pre.setId(BUTTON_UP_ID); pre.setText("上一张"); pre.setOnClickListener(this); myMainView.addView(pre); } private ImageSwitcher mySwitcher; private static int index = 0; //上一页,下一页的按钮索引和Switcher的对象ID private static final int BUTTON_DOWN_ID = 0x123456; private static final int BUTTON_UP_ID = 0x123457; private static final int BUTTON_SWITCHER_ID = 0x123458; //实现OnClickListener接口的函数 @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case BUTTON_DOWN_ID: index++; if(index>= mImageIds.length){ index = 0; } mySwitcher.setImageResource(mImageIds); break; case BUTTON_UP_ID: index--; if(index<0){ index = mImageIds.length-1; } mySwitcher.setImageResource(mImageIds); break; default: break; } } //实现View.Factory接口的函数 @Override public View makeView() { // TODO Auto-generated method stub return new ImageView(this); }

12.GridView的使用,代码如下:
Java代码

   1. //这个和Gallery的使用相似,也需要存图片在BaseAdapter中。
   2.         GridView myGridView = (GridView)findViewById(R.id.gridView1);
   3.         myGridView.setAdapter(new ImageAdapter(this));
   4.         
   5.         myGridView.setBackgroundResource(R.drawable.background);
   6.         myGridView.setOnItemClickListener(new OnItemClickListener(){
   7.   
   8.             @Override
   9.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
10.                     long arg3) {
11.               // TODO Auto-generated method stub
12.               Toast.makeText(AndroidUnleashed003Activity.this, "你选择了"+(arg2+1)+" 号图片 ", Toast.LENGTH_SHORT).show();
13.             }
14.               
15.         });
16.   }

//这个和Gallery的使用相似,也需要存图片在BaseAdapter中。 GridView myGridView = (GridView)findViewById(R.id.gridView1); myGridView.setAdapter(new ImageAdapter(this)); myGridView.setBackgroundResource(R.drawable.background); myGridView.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(AndroidUnleashed003Activity.this, "你选择了"+(arg2+1)+" 号图片 ", Toast.LENGTH_SHORT).show(); } }); }

12.ScrollView的使用,代码如下:
Java代码

   1. //要垂直滚动,使用ScrollView要水平滚动使用HorizontalScrollView。
   2.         myLayout = (LinearLayout)findViewById(R.id.myLayout);
   3.         myScllorView = (ScrollView)findViewById(R.id.myScrollView);
   4.         Button myButton = (Button)findViewById(R.id.myButton);
   5.         
   6.         myButton.setOnClickListener(new Button.OnClickListener(){
   7.             private int mIndex = -1;
   8.             @Override
   9.             public void onClick(View v) {
10.               // TODO Auto-generated method stub
11.               TextView myTextView = new TextView(ScrollerViewActivity.this);
12.               myTextView.setText("Text View"+mIndex);
13.               LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
14.               //增加一个TextView到现行布局中
15.               myLayout.addView(myTextView,p);
16.                  
17.               Button myButtonView = new Button(ScrollerViewActivity.this);
18.               myButtonView.setText("Button "+mIndex++);
19.               //增加一个Button到线性布局中
20.               myLayout.addView(myButtonView,p);
21.               //改变默认焦点切换
22.               //myButtonView.setOnKeyListener(newButtonKeyListener);
23.               //投递一个消息进行滚动
24.               //myHandler.post(myScolltoBottom);
25.             }
26.               
27.         });
28.   }

//要垂直滚动,使用ScrollView要水平滚动使用HorizontalScrollView。 myLayout = (LinearLayout)findViewById(R.id.myLayout); myScllorView = (ScrollView)findViewById(R.id.myScrollView); Button myButton = (Button)findViewById(R.id.myButton); myButton.setOnClickListener(new Button.OnClickListener(){ private int mIndex = -1; @Override public void onClick(View v) { // TODO Auto-generated method stub TextView myTextView = new TextView(ScrollerViewActivity.this); myTextView.setText("Text View"+mIndex); LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); //增加一个TextView到现行布局中 myLayout.addView(myTextView,p); Button myButtonView = new Button(ScrollerViewActivity.this); myButtonView.setText("Button "+mIndex++); //增加一个Button到线性布局中 myLayout.addView(myButtonView,p); //改变默认焦点切换 //myButtonView.setOnKeyListener(newButtonKeyListener); //投递一个消息进行滚动 //myHandler.post(myScolltoBottom); } }); }

13.ProgressBar的使用,代码如下:

ProgressBarStyleHorizontal(长形进度条)

ProgressBarStyleLarge(圆形进度条)
Java代码

   1. public class ProgressBarA extends Activity {
   2.   protected static final int GUI_STOP_NOTIFIER = 0x108;
   3.   protected static final int GUI_THREADING_NOTIFIER = 0x109;
   4.   private ProgressBar myProgress1;
   5.   private ProgressBar myProgress2;
   6.   private Button myButton;
   7.   private int intCounter;
   8.   /** Called when the activity is first created. */
   9.   @Override
10.   public void onCreate(Bundle savedInstanceState) {
11.         super.onCreate(savedInstanceState);
12.         //设置窗口模式,因为需要显示进度条在标题栏
13.         requestWindowFeature(Window.FEATURE_PROGRESS);
14.         setProgressBarVisibility(true);
15.         setContentView(R.layout.main);
16.         //取得ProgressBar
17.         myProgress1 = (ProgressBar)findViewById(R.id.myProgressBar01);
18.         myProgress2 = (ProgressBar)findViewById(R.id.myProgressBar02);
19.         myButton = (Button)findViewById(R.id.myButton);
20.         
21.         myProgress1.setIndeterminate(false);
22.         myProgress2.setIndeterminate(false);
23.         
24.         myButton.setOnClickListener(new Button.OnClickListener(){
25.   
26.             @Override
27.             public void onClick(View v) {
28.               // TODO Auto-generated method stub
29.               myProgress1.setVisibility(View.VISIBLE);
30.               myProgress2.setVisibility(View.VISIBLE);
31.                  
32.               myProgress1.setMax(100);
33.               myProgress1.setProgress(0);
34.               myProgress2.setProgress(0);
35.                  
36.               //通过线程来改变Progress的值
37.                  
38.               new Thread(new Runnable(){
39.   
40.                     @Override
41.                     public void run() {
42.                         // TODO Auto-generated method stub
43.                         for(int i=0;i<10;i++){
44.                           try{
45.                                 intCounter=(i+1)*20;
46.                                 Thread.sleep(1000);
47.                                 if(i==4){
48.                                     Message m = new Message();
49.                                     m.what = ProgressBarA.GUI_STOP_NOTIFIER;
50.                                     ProgressBarA.this.myMessageHandler.sendMessage(m);
51.                                     break;
52.                                 }
53.                                 else{
54.                                     Message m = new Message();
55.                                     m.what = ProgressBarA.GUI_THREADING_NOTIFIER;
56.                                     ProgressBarA.this.myMessageHandler.sendMessage(m);
57.                                 }
58.                           }
59.                           catch(Exception e){
60.                                 e.printStackTrace();
61.                           }
62.                         }
63.                     }
64.                     
65.               }).start();
66.             }
67.               
68.         });
69.   }
70.   Handler myMessageHandler = new Handler(){
71.         public void handleMessage(Message msg){
72.             switch(msg.what){
73.             case ProgressBarA.GUI_STOP_NOTIFIER:
74.               //myProgress1.setVisibility(View.GONE);
75.               //myProgress2.setVisibility(View.GONE);
76.               //Thread.currentThread().interrupt();
77.               break;
78.             case ProgressBarA.GUI_THREADING_NOTIFIER:
79.               if(!Thread.currentThread().isInterrupted()){
80.               myProgress1.setProgress(intCounter);
81.               myProgress1.setProgress(intCounter);
82.               setProgress(intCounter*100);//设置标题栏中前景的一个进度条进度值
83.               //setSecondaryProgress(intCounter*100);//设置标题栏中后面的一个进度条进度值
84.               //Thread.currentThread().interrupt();
85.               }
86.               break;
87.         }
88.             super.handleMessage(msg);
89.   }
90.   };
91. }

public class ProgressBarA extends Activity { protected static final int GUI_STOP_NOTIFIER = 0x108; protected static final int GUI_THREADING_NOTIFIER = 0x109; private ProgressBar myProgress1; private ProgressBar myProgress2; private Button myButton; private int intCounter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置窗口模式,因为需要显示进度条在标题栏 requestWindowFeature(Window.FEATURE_PROGRESS); setProgressBarVisibility(true); setContentView(R.layout.main); //取得ProgressBar myProgress1 = (ProgressBar)findViewById(R.id.myProgressBar01); myProgress2 = (ProgressBar)findViewById(R.id.myProgressBar02); myButton = (Button)findViewById(R.id.myButton); myProgress1.setIndeterminate(false); myProgress2.setIndeterminate(false); myButton.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub myProgress1.setVisibility(View.VISIBLE); myProgress2.setVisibility(View.VISIBLE); myProgress1.setMax(100); myProgress1.setProgress(0); myProgress2.setProgress(0); //通过线程来改变Progress的值 new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++){ try{ intCounter=(i+1)*20; Thread.sleep(1000); if(i==4){ Message m = new Message(); m.what = ProgressBarA.GUI_STOP_NOTIFIER; ProgressBarA.this.myMessageHandler.sendMessage(m); break; } else{ Message m = new Message(); m.what = ProgressBarA.GUI_THREADING_NOTIFIER; ProgressBarA.this.myMessageHandler.sendMessage(m); } } catch(Exception e){ e.printStackTrace(); } } } }).start(); } }); } Handler myMessageHandler = new Handler(){ public void handleMessage(Message msg){ switch(msg.what){ case ProgressBarA.GUI_STOP_NOTIFIER: //myProgress1.setVisibility(View.GONE); //myProgress2.setVisibility(View.GONE); //Thread.currentThread().interrupt(); break; case ProgressBarA.GUI_THREADING_NOTIFIER: if(!Thread.currentThread().isInterrupted()){ myProgress1.setProgress(intCounter); myProgress1.setProgress(intCounter); setProgress(intCounter*100);//设置标题栏中前景的一个进度条进度值 //setSecondaryProgress(intCounter*100);//设置标题栏中后面的一个进度条进度值 //Thread.currentThread().interrupt(); } break; } super.handleMessage(msg); } }; }


14.SeekBar的使用,代码如下:
Java代码

   1. implements SeekBar.OnSeekBarChangeListener
   2. //实现OnSeekBarChangeListener接口
   3.   public void onProgressChanged(SeekBar seekBar, int progress,
   4.             boolean fromUser) {
   5.         // TODO Auto-generated method stub
   6.         myProgressText.setText("当前值:"+ progress);
   7.   }
   8.   @Override
   9.   public void onStartTrackingTouch(SeekBar seekBar) {
10.         // TODO Auto-generated method stub
11.         myTrackingText.setText("正在调节");
12.   }
13.   @Override
14.   public void onStopTrackingTouch(SeekBar seekBar) {
15.         // TODO Auto-generated method stub
16.         myTrackingText.setText("停止调节");
17.   }
18. }

implements SeekBar.OnSeekBarChangeListener //实现OnSeekBarChangeListener接口 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub myProgressText.setText("当前值:"+ progress); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub myTrackingText.setText("正在调节"); } @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub myTrackingText.setText("停止调节"); } }

15.Notification、NotificationManager的使用,代码如下:
Java代码

   1.      myIntent = new Intent(Notification01.this,Notification02.class);
   2.      //主要是设置点击通知时显示内容的类
   3.      myPendingIntent = PendingIntent.getActivity(Notification01.this, 0, myIntent, 0);
   4.      //构造Notification对象
   5.      myNotification = new Notification();
   6.      myButton1.setOnClickListener(newButton.OnClickListener(){
   7. @Override
   8. public void onClick(View v) {
   9.   // TODO Auto-generated method stub
10.   //设置通知在状态栏显示的图标
11.   myNotification.icon = R.drawable.ic_launcher;
12.   myNotification.tickerText = "Button1的通知内容...";
13.   //通知时发出默认的声音
14.   myNotification.defaults = Notification.DEFAULT_SOUND;
15.   //设置通知显示的参数
16.   myNotification.setLatestEventInfo(Notification01.this,"Button1","Button1通知",myPendingIntent);
17.   //可以理解为执行这个通知
18.   myNotificationManager.notify(0,myNotification);
19. }   
20.      });

myIntent = new Intent(Notification01.this,Notification02.class); //主要是设置点击通知时显示内容的类 myPendingIntent = PendingIntent.getActivity(Notification01.this, 0, myIntent, 0); //构造Notification对象 myNotification = new Notification(); myButton1.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //设置通知在状态栏显示的图标 myNotification.icon = R.drawable.ic_launcher; myNotification.tickerText = "Button1的通知内容..."; //通知时发出默认的声音 myNotification.defaults = Notification.DEFAULT_SOUND; //设置通知显示的参数 myNotification.setLatestEventInfo(Notification01.this,"Button1","Button1 通知",myPendingIntent); //可以理解为执行这个通知 myNotificationManager.notify(0,myNotification); } });

16.ProgressDialog的使用,代码如下:
Java代码

   1.      myButton01 = (Button)findViewById(R.id.Button1);
   2.      myButton02 = (Button)findViewById(R.id.Button2);
   3.      myButton01.setOnClickListener(new Button.OnClickListener(){
   4. @Override
   5. public void onClick(View v) {
   6.   // TODO Auto-generated method stub
   7.   //创建ProgressDialog对象
   8.   myProgressDialog = new ProgressDialog(ProgressDialogActivity.this);
   9.   //设置进度条风格,风格为圆形的,旋转的
10.   myProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
11.   //设置ProgressDialog标题
12.   myProgressDialog.setTitle("提示");
13.   //设置ProgressDialog提示信息
14.   myProgressDialog.setMessage("这是一个圆形进度条对话框");
15.   //设置myProgressDialog标题图标
16.   myProgressDialog.setIcon(R.drawable.ic_launcher);
17.   //设置myProgressDialog的进度条是否不明确
18.   myProgressDialog.setIndeterminate(false);
19.   //设置myProgressDialog是否可以按退回键取消
20.   myProgressDialog.setCancelable(true);
21.   //设置myProgressDialog的一个Button
22.   myProgressDialog.setButton("确定", new DialogInterface.OnClickListener() {
23.         
24.         @Override
25.         public void onClick(DialogInterface dialog, int which) {
26.             // TODO Auto-generated method stub
27.             //点击确定取消对话框
28.             dialog.cancel();
29.         }
30.   });
31.   //让ProgressDialog显示
32.   myProgressDialog.show();
33. }   
34.      });
35.      
36.      myButton02.setOnClickListener(new Button.OnClickListener(){
37. @Override
38. public void onClick(View v) {
39.   // TODO Auto-generated method stub
40.   myCount = 0;
41.   //创建ProgressDialog对象
42.   myProgressDialog = new ProgressDialog(ProgressDialogActivity.this);
43.   //设置进度条风格,风格为长形的。
44.   myProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
45.   //设置ProgressDialog标题
46.   myProgressDialog.setTitle("提示");
47.   //设置ProgressDialog提示信息
48.   myProgressDialog.setMessage("这是一个长形进度条对话框");
49.   //设置myProgressDialog标题图标
50.   myProgressDialog.setIcon(R.drawable.ic_launcher);
51.   //设置myProgressDialog进度条进度
52.   myProgressDialog.setProgress(100);
53.   //设置myProgressDialog的进度条是否不明确
54.   myProgressDialog.setIndeterminate(false);
55.   //设置myProgressDialog是否可以按退回键取消
56.   myProgressDialog.setCancelable(true);
57.   //设置myProgressDialog的一个Button
58.   myProgressDialog.setButton("确定", new DialogInterface.OnClickListener() {
59.         
60.         @Override
61.         public void onClick(DialogInterface dialog, int which) {
62.             // TODO Auto-generated method stub
63.             //点击确定取消对话框
64.             dialog.cancel();
65.         }
66.   });
67.   //让ProgressDialog显示
68.   myProgressDialog.show();
69.      new Thread(){
70.         public void run(){
71.             try{
72.               while(myCount <= 100){
73.                     //由线程来控制进度
74.                     myProgressDialog.setProgress(myCount++);
75.                     Thread.sleep(100);
76.               }
77.               myProgressDialog.cancel();
78.             }
79.             catch(InterruptedException e){
80.               myProgressDialog.cancel();
81.             }
82.         }
83.      }.start();
84. }   
85.      });

myButton01 = (Button)findViewById(R.id.Button1); myButton02 = (Button)findViewById(R.id.Button2); myButton01.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //创建ProgressDialog对象 myProgressDialog = new ProgressDialog(ProgressDialogActivity.this); //设置进度条风格,风格为圆形的,旋转的 myProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //设置ProgressDialog标题 myProgressDialog.setTitle("提示"); //设置ProgressDialog提示信息 myProgressDialog.setMessage("这是一个圆形进度条对话框"); //设置myProgressDialog标题图标 myProgressDialog.setIcon(R.drawable.ic_launcher); //设置myProgressDialog的进度条是否不明确 myProgressDialog.setIndeterminate(false); //设置myProgressDialog是否可以按退回键取消 myProgressDialog.setCancelable(true); //设置myProgressDialog的一个Button myProgressDialog.setButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //点击确定取消对话框 dialog.cancel(); } }); //让ProgressDialog显示 myProgressDialog.show(); } }); myButton02.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub myCount = 0; //创建ProgressDialog对象 myProgressDialog = new ProgressDialog(ProgressDialogActivity.this); //设置进度条风格,风格为长形的。 myProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置ProgressDialog标题 myProgressDialog.setTitle("提示"); //设置ProgressDialog提示信息 myProgressDialog.setMessage("这是一个长形进度条对话框"); //设置myProgressDialog标题图标 myProgressDialog.setIcon(R.drawable.ic_launcher); //设置myProgressDialog进度条进度 myProgressDialog.setProgress(100); //设置myProgressDialog的进度条是否不明确 myProgressDialog.setIndeterminate(false); //设置myProgressDialog是否可以按退回键取消 myProgressDialog.setCancelable(true); //设置myProgressDialog的一个Button myProgressDialog.setButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //点击确定取消对话框 dialog.cancel(); } }); //让ProgressDialog显示 myProgressDialog.show(); new Thread(){ public void run(){ try{ while(myCount <= 100){ //由线程来控制进度 myProgressDialog.setProgress(myCount++); Thread.sleep(100); } myProgressDialog.cancel(); } catch(InterruptedException e){ myProgressDialog.cancel(); } } }.start(); } });

17.TabWidget的使用,代码如下:

要使用TabWidget,首先要了解TabHost,TabHost是一个用来存放Tab标签的容器。
Java代码

   1. public class TabHostActivity extends TabActivity {
   2.   TabHost myTabHost;
   3.   
   4.   /** Called when the activity is first created. */
   5.   @Override
   6.   public void onCreate(Bundle savedInstanceState) {
   7.         super.onCreate(savedInstanceState);
   8.         setContentView(R.layout.main);
   9.         //获取TabHost对象
10.         myTabHost = getTabHost();
11.         //为TabHost添加标签,新建一个newTabSpec(newTabSpec)设置其标签和图标 (setIndicator)设置内容(setContent)
12.         myTabHost.addTab(myTabHost.newTabSpec("tabHost1").setIndicator("TAB 1", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent1));
13.         myTabHost.addTab(myTabHost.newTabSpec("tabHost2").setIndicator("TAB 2", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent2));
14.         myTabHost.addTab(myTabHost.newTabSpec("tabHost3").setIndicator("TAB 3", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent3));
15.         //设置TabHost的背景颜色
16.         myTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
17.         //设置当前显示哪个标签
18.         myTabHost.setCurrentTab(1);
19.         //标签切换事件处理setOnTabChangedListener
20.         myTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
21.               
22.             @Override
23.             public void onTabChanged(String tabId) {
24.               // TODO Auto-generated method stub
25.               Dialog dialog = new AlertDialog.Builder(TabHostActivity.this).setTitle(" 提示").setMessage("当前选中"+tabId).setPositiveButton("确定", new DialogInterface.OnClickListener() {
26.                     
27.                     @Override
28.                     public void onClick(DialogInterface dialog, int which) {
29.                         // TODO Auto-generated method stub
30.                         dialog.cancel();
31.                     }
32.               }).create();
33.               dialog.show();
34.             }
35.         });
36.   }
37. }
页: [1]
查看完整版本: Android开发之《Android应用开发揭秘》UI事件汇总