android基础入门控件详解(6)

一.Dialog(对话框):

        我们在android开发当中总会用到一些对话框,用来与用户进行交互。

        需要通过AlertDialog.Builder类,来实现一个对话框的创建。

常用的方法:

setTille() : 给对话框设置title;

setIcon() : 给对话框设置图标 

setMessage() : 设置对话框的提示信息。

setItems() : 设置对话框要显示的一个list,一般用于显示几个命令时。 

setSingleChoiceItems() : 设置对话框显示一个单选的List。

setMultiChoiceItems() : 用来设置对话框显示一系列的复选框。 

setPositiveButton() : 给对话框添加"yes"按钮。

setNegativeButton() : 给对话框添加"No"按钮。

Dialog布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1.31"
            android:text="用户名:" />
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1.31"
            android:ems="10" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1.31"
            android:text="密码:" />
        <EditText
            android:id="@+id/editText2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1.31"
            android:password="true"
            android:ems="10" />
    </LinearLayout>
</LinearLayout>


主界面布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:id="@+id/text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
      
        />

</LinearLayout>


主代码:

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),进度条可以再进行应用程序装载资源时应用,可以提示用户稍等等等。


布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请点击按钮" />
  
    <ProgressBar 
        android:id="@+id/p1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:visibility="gone"
        />
    <ProgressBar 
        android:id="@+id/p2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:max="100"
        style="?android:attr/progressBarStyleLarge"
        android:progress="50"
        android:secondaryProgress="70"
        android:visibility="gone"
        />
     <Button 
         
         android:id="@+id/b1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="开始"
         />
      

</LinearLayout>


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;
	}

}


运行图片:






评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值