欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Andrid之对话框百变篇(12) 博客分类: Android初步 安卓进度条事件处理对话框 

程序员文章站 2024-03-11 21:15:19
...
  • 日期选择器
  • 时间选择器

这两个对话框异曲同工,我们简单举例时间选择器:

new TimePickerDialog(MainActivity.this,
					 position, new OnTimeSetListener() {

						@Override
						public void onTimeSet(TimePicker arg0, int hour,
								int minute) {
							
							Toast toast = Toast.makeText(MainActivity.this, "时间:"+hour+minute, Toast.LENGTH_SHORT); 
							 toast.show(); 
						}
						
						
			}, c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE), true).show();

 

而日期选择器是:DatePickerDialog,这里不再做多余阐述。显示内容:


Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 


Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 

  • 定制版对话框

一直用的是默认的对话框,我们想不想自己built一个?那就自己定制一个

要用到布局文件定义显示组件,之后再将布局显示包含到对话框中,则需要用到LayoutInflater类的支持

定义main布局管理器一个按钮:


Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 

然后对话框所需要的布局管理器:login.xml


 

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/TableLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户名:" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10" >

            <requestFocus />
        </EditText>

    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码:" />

        <EditText
            android:id="@+id/editText2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:password="true"
            android:ems="10" />

    </TableRow>

</TableLayout>

 

然后是MainActivity

public class MainActivity extends Activity {

	private Button bt;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.bt=(Button)super.findViewById(R.id.button1);
		bt.setOnClickListener(new  Click());
	}

	
	private class Click implements OnClickListener{

		@Override
		public void onClick(View v) {
			LayoutInflater factory=LayoutInflater.from(MainActivity.this);
			View myview=factory.inflate(R.layout.login, null);//将布局文件转换为View
			Dialog dialog=new AlertDialog.Builder(MainActivity.this).setIcon(R.drawable.smoke)
					.setTitle("用户登录").setView(myview).setPositiveButton("登录", null).setNegativeButton("取消", null)
					.create();
			dialog.show();
			
			
		}
		
		
	}
	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;
	}

}

 

运行效果杠杠的:


Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
 

 

  • 进度条对话框

进度条progressBar分为默认环形进度条和水平进度条

progressDialog

主要在Activity里:

public void onClick(View arg0) {
			final ProgressDialog pro=ProgressDialog.show(MainActivity.this, "搜索免费wifi中", "请耐心等待....");
			new Thread(){                     //线程对象
				public void run(){
					try{
						Thread.sleep(3000);//运行三秒钟后关闭对话框
					}catch(Exception e){
						
					}finally{
						pro.dismiss();//关闭对话框
					}
				}
			}.start();//线程启动
			pro.show();
			
		 }	

 运行效果如下:

之所以用final定义pro,主要是想让内部类可以访问到方法中定义的参数
Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
 然后若是想改成水平进度处理条,则需要定义样式:

public void onClick(View arg0) {
			final ProgressDialog pro = new ProgressDialog(MainActivity.this) ;
			pro.setTitle("搜索免费wifi中...") ;
			pro.setMessage("请耐心等待") ;
			pro.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//
			pro.setMax(100);//设置最大进度值
			pro.setProgress(30);//开始点
			pro.setButton("后台处理", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					pro.dismiss() ;	// 关闭对话框
				}
			}) ;
			pro.setButton2("详细信息", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					
				}
			}) ;
			pro.onStart();
			new Thread(){
				public void run(){
					for(int i=0;i<100;i++){
						try{
							Thread.sleep(500);//休眠0.5秒
						}catch(InterruptedException e){
							e.printStackTrace();
						}
						pro.incrementProgressBy(1);
					}
					pro.dismiss();
				}
			}.start();
			pro.show();
		}

 刚才想就这默认的·直接做发现出错,还是要把设置标题信息分开与环形不一样,这点大家注意。

运行效果如下:


Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
 



 
 
 

 

  • Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
  • 大小: 84.6 KB
  • Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
  • 大小: 79.1 KB
  • Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
  • 大小: 31.3 KB
  • Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
  • 大小: 53 KB
  • Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
  • 大小: 22.1 KB
  • Andrid之对话框百变篇(12)
            
    
    博客分类: Android初步 安卓进度条事件处理对话框 
  • 大小: 35.7 KB