/*

* 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[arg2]);
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[arg2]); 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[position]);
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[position]); //设置布局图片以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[index]);
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[index]);
47. break;
48. case BUTTON_UP_ID:
49. index--;
50. if(index<0){
51. index = mImageIds.length-1;
52. }
53. mySwitcher.setImageResource(mImageIds[index]);
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[index]); 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[index]); break; case BUTTON_UP_ID: index--; if(index<0){ index = mImageIds.length-1; } mySwitcher.setImageResource(mImageIds[index]); 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(new Button.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. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android代码调试报错
  3. No implementation found for native Landroid/
  4. 懒人爱家务_onInterceptTouchEvent与onTouchEvent
  5. android多国语言的国家代码
  6. 有关于Android多个module混淆的问题
  7. Android(安卓)LayoutInflater
  8. 避免OOM的一种方式
  9. 用android 自带的包进行网络请求

随机推荐

  1. 微软与哲学的距离
  2. 真正的高手都在讲故事
  3. pgsql查看主备节点的方法
  4. Python如何开发网站?这两个不能少!
  5. Android(安卓)8.0的scan流程
  6. android自带的下拉刷新控件SwipeRefreshL
  7. android百度地图开发之步行路线规划
  8. Android(安卓)Zygote进程启动过程
  9. 关于Android(安卓)打开新的Activity 虚拟
  10. android-如何在子线程中更新ui