android基礎入門控件詳解(6)

一.Dialog(對話框):

我們在android開發當中總會用到一些對話框,用來與用戶進行交互。

需要通過AlertDialog.Builder類,來實現一個對話框的創建。

常用的方法:

setTille() : 給對話框設置title;

setIcon() : 給對話框設置圖標

setMessage() : 設置對話框的提示信息。

setItems() : 設置對話框要顯示的一個list,一般用於顯示幾個命令時。

setSingleChoiceItems() : 設置對話框顯示一個單選的List。

setMultiChoiceItems() : 用來設置對話框顯示一系列的復選框。

setPositiveButton() : 給對話框添加”yes”按鈕。

setNegativeButton() : 給對話框添加”No”按鈕。

Dialog佈局文件:

    
        
        
    
    
        
        
    

主界面佈局:

    

主代碼:

public class MainActivity extends Activity {

	private TextView text;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		text = (TextView)findViewById(R.id.text);
		AlertDialog dialog = new  AlertDialog.Builder(MainActivity.this)
		.setTitle("登陸提示") //設置標題
		.setMessage("請登陸") //設置內容
		.setPositiveButton("確定", //設置確定按鈕
				new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
                //點擊"確定"轉向登陸框
				LayoutInflater  factory = LayoutInflater.from(MainActivity.this);
				//得到自定義登陸框
				View dv = factory.inflate(R.layout.activity_main, null);
				
				AlertDialog dlg = new AlertDialog.Builder(MainActivity.this)
				.setTitle("登陸框")
				.setView(dv) // 設置自定義對話框的樣式
				.setPositiveButton("確定",new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
						text.setText("你已經登陸成功");
					}
				} )
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
						text.setText("你已經登陸失敗");
					}
				})
				.create();
				dlg.show();
				
			}
		}).setNegativeButton("退出", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				MainActivity.this.finish();
			}
		})
		.create();
		
		dialog.show();
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

運行界面:

點擊確定之後:

·

二.ProgressBar(進度條):

android系統提供瞭兩大類進度條樣式,長條進度條(progress-BarStyleHorizontal)和圓形進度條(progressBarStyleLarge),進度條可以再進行應用程序裝載資源時應用,可以提示用戶稍等等等。

佈局:


    
  
    
    
     

Id為p1的是長形進度條,Id為p2的是圓形進度條,style設置進度條的風格。

style=”?android:attr/progressBarStyleHorizontal” 長形進度條

style=”?android:attr/progressBarStyleLarge” 超大號圓形ProgressBar
style=”?android:attr/progressBarStyleSmall” 小號圓形ProgressBar
style=”?android:attr/progressBarStyleSmallTitle” 標題型圓形ProgressBar

主代碼:

public class MainActivity extends Activity {

	private ProgressBar p1 ;
	private ProgressBar p2 ;
	private Button b1;
	
	protected static final int STOP_NOTIFIER = 0x108;
	protected static final int THREADING_NOTIFIER = 0x109;
	public int counter = 0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//設置窗口模式
		requestWindowFeature(Window.FEATURE_PROGRESS);
		setProgressBarVisibility(true);
		setContentView(R.layout.activity_main);
	       
		p1 = (ProgressBar)findViewById(R.id.p1);
		p2 = (ProgressBar)findViewById(R.id.p2);
		
		b1 = (Button)findViewById(R.id.b1);
		
		b1.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//設置ProgressBar為可見狀態
				p1.setVisibility(View.VISIBLE);
				p2.setVisibility(View.VISIBLE);
				//設置ProgressBar的最大值
				p1.setMax(100);
				//設置ProgressBar當前值
				p1.setProgress(0);
				p2.setProgress(0);
				//通過線程來改變ProgressBar的值
				new Thread(new Runnable() {
					
					@Override
					public void run() {
						// TODO Auto-generated method stub
						for(int i = 0;i<10;i++){
							try{
								counter =(i+1)*20;
								Thread.sleep(1000);
								if(i == 4){
									Message m = new Message();
									m.what = MainActivity.STOP_NOTIFIER;
									MainActivity.this.handler.sendMessage(m);
									break;
								}else{
									
									Message m = new Message();
									m.what = MainActivity.THREADING_NOTIFIER;
									MainActivity.this.handler.sendMessage(m);
									
								}
							}catch(Exception e){
								e.printStackTrace();
							}
							
						}
					}
				}).start();
			}
		});
	}
    // 更新界面顯示
	Handler handler = new Handler(){

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
		  
			switch(msg.what){
			//ProgressBar已經是最大值
			case MainActivity.STOP_NOTIFIER:
				p1.setVisibility(View.GONE);
				p2.setVisibility(View.GONE);
				//中斷線程
				Thread.currentThread().interrupt();
				break;
			case THREADING_NOTIFIER:
				if(!Thread.currentThread().isInterrupted()){
					p1.setProgress(counter);
					p2.setProgress(counter);
					//設置標題欄中前景的一個進度條進度值
					setProgress(counter*100);
					//設置標題欄中後面的一個進度條進度值
					setSecondaryProgress(counter*100);
				}
			  break;
			}
			super.handleMessage(msg);
		}
		
		
	};
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

運行圖片:



發佈留言