android课程——UI(下)

4-6、ProgressBar

void setProgress(int Progress):设置当前进度

int getProgress():得到当前进度

void setMax(int max):设置最大进度

int getMax():设置或的带最大进度

View:

void setVisibility(int visivility):设置视图的可见性

View.VISIBLE:标识可见

View.INVISIBLE:标识不可见,但占屏幕空间

View.GONE:标识不可见,也不占屏幕空间



4-7、SeekBar(可手动滑动的进度条)

android课程——UI(下)_第1张图片


4-8:alertDialog:

show():显示警告框

    没有公开的构造方法,只能通过其内部类Builder来创建

AlertDialog.Builder:

    create():创建AlertDialog对象

    show():创建AlertDialog对象,同时将其显示出来

    setTitle(CharSequence title):设置标题

    setMessage(CharSequence message):设置内容

    setPositiveButton(String text,onclickListenner listener):设置正面按钮

    setNegativeButton(String text,OnClickListener listener):设置负面按钮

    dismiss():移除dialog

    setSingleChoiceItems(....)设置单选项列表


一般dialog:

/**
	 * 显示一般dialog
	 */
	public void showAD(View v){
		new AlertDialog.Builder(this)
			.setTitle("删除数据")//设置标题
			.setMessage("你确定删除数据吗?")
			.setPositiveButton("删除",new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(UIActivity.this, "删除数据", 0).show();
				}
			})
			.setNegativeButton("取消", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(UIActivity.this, "取消删除数据", 0).show();
				}
			})
			.show();//方法链调用
	}


显示单选列表dialog:

/**
	 * 显示单选列表Dialog
	 * @param v
	 */
	public void showLD(View v){
		final String[] color={"红","蓝","绿","灰"};//final 的变量在方法执行完后还存在
		
		new AlertDialog.Builder(this)
		.setTitle("指定背景颜色")
		.setSingleChoiceItems(color, 2, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				//提示颜色
				Toast.makeText(UIActivity.this, color[which], 0).show();
				//移除dialog
				dialog.dismiss();
				
			}
		}).show();
	}


自定义dialog:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        android:src="@drawable/test" />

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

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/dg_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword" />
    
</LinearLayout>
/**
	 * 显示自定义dialog
	 */
	
	public void showCD(View v){
		//动态加载布局文件,得到对应的View对象
		View view=View.inflate(this, R.layout.custon_dialog,null);
		
		/**
		 * 问题1:View的真实类型?
		 * 是布局文件和标签的类型,包含子View对象
		 * 问题2:如何得到一个独立View的子View?
		 * view.findById(id)
		 * 
		 * 
		 */
		
		final EditText namEditText=(EditText) view.findViewById(R.id.dg_name);
		final EditText passEditText=(EditText) view.findViewById(R.id.dg_password);
		
		new AlertDialog.Builder(this)
		.setView(view).setNegativeButton("取消",null)
		.setPositiveButton("确定",new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				//读取用户名和密码
				String name=namEditText.getText().toString();
				String password=passEditText.getText().toString();
				Toast.makeText(UIActivity.this, name+">>"+password, 0).show();
			}
		}).show();
		
	}

4-9:progressDialog

进度条转圈加载数据

/**
	 * progressDialog
	 */
	
	public void showPD(View v){//回调方法,主线程执行
		
		final ProgressDialog progressDialog=ProgressDialog.show(this,"数据加载","数据加载中。。。");
		//模拟做一个长时间的操作
		//长时间的操作不能再主线程执行,必须起一个新线程
		new Thread(){
			public void run() {
				for(int i=0;i<100;i++){
					try {
						Thread.sleep(100);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				//移除dialog
				progressDialog.dismiss();
			
		}}.start();
	}

水平进度条

/**
	 * 显示水平进度条
	 */
	public void showPD2(View v){
		//1.创建dialog对象
		final ProgressDialog progressDialog=new ProgressDialog(this);
		//2.设置样式
		progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		//3.显示
		progressDialog.show();
		
		//4.启动分线程、加载数据、并显示,当加载完成移除dialog
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				int count=20;
				//设置最大进度
				progressDialog.setMax(count);
				for(int i=0;i<count;i++){
					try {
						Thread.sleep(200);
					} catch (Exception e) {
						e.printStackTrace();
					}
					//设置dialog的值
					progressDialog.setProgress(i);
				}
				//移除dialog
				progressDialog.dismiss();//不能再分线程执行,但内部使用Handler实现主线程移除dialog
				
				//不能再分线程直接更新UI
				
				//故:
				runOnUiThread(new  Runnable() {
					public void run() {
						Toast.makeText(UIActivity.this, "加载完成了!!", 0).show();
					}
				});
				
				
				
			}
		}).start();
		}

4-10:DateDialog

/**
	 * 显示DateDialog
	 */
	
	public void showDT(View v){
		//创建日历对象
		Calendar cd=Calendar.getInstance();
		//得到当前年月日
		final int year=cd.get(Calendar.YEAR);
		final int month=cd.get(Calendar.MONTH)+1;
		final int day=cd.get(Calendar.DAY_OF_MONTH);
		
		new DatePickerDialog(this, new OnDateSetListener() {
			//回调
			public void onDateSet(DatePicker view, int year, int monthOfYear,
					int dayOfMonth) {
				Log.e("TAG", year+">"+monthOfYear+"<>"+dayOfMonth);
				
			}
		}, year, month, day).show();
		
	}	

4-11:timeDialog

/**
	 * 显示timeDialog
	 */
	public void showTD(View v){
		Calendar calendar=Calendar.getInstance();
		int hours=calendar.get(Calendar.HOUR);
		int minute=calendar.get(Calendar.MINUTE);
		new TimePickerDialog(this, new OnTimeSetListener() {
			
			public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
					Log.e("TAG", hourOfDay+"<>"+minute);
			}
		}, hours, minute, true).show();
	}


你可能感兴趣的:(android课程——UI(下))