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

Android开发之《Android应用开发揭秘》UI事件汇总Android开发之《Android应用开发揭秘》UI事件汇总/* * Android开发之《Android应用开发揭秘》UI事件汇总 * 北京Android俱乐部群:167839253 * Createdon:2011-12-01 * Author:blueeagle * Email:liujiaxiang@gmail.com */思想跑毛是很可

大家好,又见面了,我是你们的朋友全栈君。  

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方法。点击上下左右键或者中间键的时候可以出发该方法。代码如下。

        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控件的组合使用,代码如下:

        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控件的使用,代码如下:

  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控件的使用,代码如下:

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

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

//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的使用,代码如下:

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代码可以写成:

<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代码:

    @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.弹出对话框的使用,代码如下:

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

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的使用,代码如下:

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的使用,拖动效果很炫,代码如下:

 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的使用,代码如下:

//首先需要实现接口:
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的使用,代码如下:

//这个和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的使用,代码如下:

//要垂直滚动,使用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(圆形进度条)

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的使用,代码如下:

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的使用,代码如下:

        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的使用,代码如下:

        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标签的容器。

public class TabHostActivity extends TabActivity {
    TabHost myTabHost;

	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //获取TabHost对象
        myTabHost = getTabHost();
        //为TabHost添加标签,新建一个newTabSpec(newTabSpec)设置其标签和图标(setIndicator)设置内容(setContent)
        myTabHost.addTab(myTabHost.newTabSpec("tabHost1").setIndicator("TAB 1", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent1));
        myTabHost.addTab(myTabHost.newTabSpec("tabHost2").setIndicator("TAB 2", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent2));
        myTabHost.addTab(myTabHost.newTabSpec("tabHost3").setIndicator("TAB 3", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent3));
        //设置TabHost的背景颜色
        myTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
        //设置当前显示哪个标签
        myTabHost.setCurrentTab(1);
        //标签切换事件处理setOnTabChangedListener
        myTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
			
			@Override
			public void onTabChanged(String tabId) {
				// TODO Auto-generated method stub
				Dialog dialog = new AlertDialog.Builder(TabHostActivity.this).setTitle("提示").setMessage("当前选中"+tabId).setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						dialog.cancel();
					}
				}).create();
				dialog.show();
			}
		});
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130463.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Spring的AOP与动态代理「建议收藏」

    Spring的AOP与动态代理「建议收藏」Spring的AOP与动态代理

  • 学习vb语言「建议收藏」

    学习vb语言「建议收藏」第一天:昨天完成了安装vb环境今天大概了解了一下vb语言的一些语法,但是把所学的整理出来,一时间却又不知道如何整理。换一个方式,我来看看接下来要学什么。1.vb变量的作用域2.常用的内部函数3.数据的输入和输出4.常用的标准控件5.vb结构控制6.键盘过程7.菜单和对话栏8.数据文件学习这些的基础是今天所学的或者所了解到的1.建立一个vb程序的大致流…

  • Java对象转Map,Map转对象

    Java对象转Map,Map转对象1map转对象map中value的值类型一定要和对象中的属性一致publicclassTest{/***@parammap*@parambean泛型类*@param<T>*@return*/publicstatic<T>TmapToBean(Map<String,Object>map,Tbean){BeanMapbean

  • 模运算法则_模运算例题详解

    模运算法则_模运算例题详解模运算与基本四则运算有些相似,但是除法例外。其规则如下:(a+b)%p=(a%p+b%p)%p (a-b)%p=(a%p-b%p)%

  • 10万字208道Java经典面试题总结(附答案)

    1、JDK和JRE有什么区别?JDK(JavaDevelopmentKit),Java开发工具包JRE(JavaRuntimeEnvironment),Java运行环境JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。2、==和equals的区别是什么?对于基本类型,==比较的是值; 对于引用类型,==比较的是地址; equals不能用于基本类型的比较; 如果没有重写equa

  • SpringBoot 源码解读

    SpringBoot 源码解读Springboot之前出现的问题Spring框架需要进行大量的配置项目的依赖管理冲突为什么是SpringBootSpringBoot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号