Android课程---时间日期对话框
activity_ui2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.hanqi.test5.UIActivity2"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="长按触发上下文菜单" android:id="@+id/bt_changan"/> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pb_1" android:visibility="gone"/> <ProgressBar android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" android:max="100" android:progress="50" android:secondaryProgress="70" android:id="@+id/pb_2" android:visibility="gone"/><!--max:最大值 progress:当前进度 secondaryProgress:第二进度值--> <!--<ProgressBar--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content"--> <!--style="@android:style/Widget.ProgressBar.Small"/>--> <!--<ProgressBar--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content"--> <!--style="@android:style/Widget.ProgressBar.Large"/>--> <!--<ProgressBar--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content"--> <!--style="@android:style/Widget.ProgressBar.Large.Inverse"/>--> <!--<ProgressBar--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content"--> <!--style="@android:style/Widget.ProgressBar.Inverse"/><!–不可拖动–>--> <!--<Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Switch" android:id="@+id/switch1" android:layout_gravity="center_horizontal" /> --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/vipflower" android:id="@+id/iv_vip" android:visibility="gone"/> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="100" android:id="@+id/sb_1"/><!--可拖动--> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="7" android:rating="3.5" android:isIndicator="true" android:visibility="gone"/> <!--星星进度条 numStars:星星数目 rating:当前默认星级 isIndicator:是否允许修改星级:true为不可修改--> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发弹出普通对话框" android:onClick="pt_OnClick" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发弹出单选对话框" android:onClick="dx_OnClick" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发弹出多选对话框" android:onClick="duox_OnClick" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发弹出自定义对话框" android:onClick="zdy_OnClick" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发弹出进度条对话框" android:onClick="jdt_OnClick" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发弹出水平进度条对话框" android:onClick="jdt1_OnClick" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发日期对话框" android:onClick="rq_OnClick" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发时间对话框" android:onClick="sj_OnClick" /> </LinearLayout>
UIActivity2.java
package com.hanqi.test5; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.ProgressDialog; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.SeekBar; import android.widget.TimePicker; import android.widget.Toast; import java.util.Calendar; public class UIActivity2 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ui2); Button bt_changan = (Button)findViewById(R.id.bt_changan); bt_changan.setOnCreateContextMenuListener(this);/*this代表当前Activity,实现了这个接口*/ //进度条 //有final时,生命周期长,不加final的话就只是当前方法的,加final可以延长生命周期,或者定义成员变量 final ProgressBar pb_1 =(ProgressBar)findViewById(R.id.pb_1); final ProgressBar pb_2 =(ProgressBar)findViewById(R.id.pb_2); final SeekBar sb_1 =(SeekBar)findViewById(R.id.sb_1); sb_1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { //onProgressChanged进度条变化,进度改变就会触发 @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //pb_2.setProgress(seekBar.getProgress()); ImageView iv_vip = (ImageView)findViewById(R.id.iv_vip); //iv_vip.setAlpha(0.2f);透明度值是0-255 iv_vip.setImageAlpha(progress * 255 /100); } //onStartTrackingTouch开始拖动 @Override public void onStartTrackingTouch(SeekBar seekBar) { } //onStopTrackingTouch停止拖动 @Override public void onStopTrackingTouch(SeekBar seekBar) { pb_2.setProgress(seekBar.getProgress()); if (seekBar.getProgress() == seekBar.getMax()) { //设置不可见 pb_1.setVisibility(View.GONE); /*INVISIBLE不可见(占空间) VISIBLE可见 GONE不可见(不占空间)*/ } else { pb_1.setVisibility(View.VISIBLE); } } }); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { menu.add(0, 1, 0, "添加"); menu.add(0, 2, 1, "修改"); menu.add(0, 3, 2, "删除"); SubMenu m = menu.addSubMenu(0, 4, 3, "子菜单"); m.add(0,41,0,"子菜单项1"); m.add(0, 42, 1, "子菜单项2"); m.add(0,43,2,"子菜单项3"); m.add(0,44,3,"子菜单项4"); // MenuInflater mi =getMenuInflater(); // mi.inflate(R.menu.mymenu,menu); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.it_2: Toast.makeText(UIActivity2.this, "触发了添加1功能", Toast.LENGTH_SHORT).show(); break; case R.id.it_1: Toast.makeText(UIActivity2.this, "触发了删除1功能", Toast.LENGTH_SHORT).show(); break; } return super.onContextItemSelected(item); } @Override //重写 创建选项菜单的方法 public boolean onCreateOptionsMenu(Menu menu) { //添加菜单项 //纯编码方式 // menu.add(0,1,0,"添加"); // menu.add(0,2,2,"删除"); // menu.add(0,3,1,"修改"); //加载菜单文件方式 //1.获取菜单加载器 MenuInflater mi =getMenuInflater(); mi.inflate(R.menu.mymenu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { //Toast.makeText(UIActivity2.this, "选中的菜单项是" + item.getTitle(), Toast.LENGTH_SHORT).show(); //根据菜单项的不同响应不同功能 switch (item.getItemId()) { case 1: Toast.makeText(UIActivity2.this, "触发了添加功能", Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(UIActivity2.this, "触发了删除功能", Toast.LENGTH_SHORT).show(); break; case 3: Toast.makeText(UIActivity2.this, "触发了修改功能", Toast.LENGTH_SHORT).show(); break; case R.id.it_2: Toast.makeText(UIActivity2.this, "触发了添加1功能", Toast.LENGTH_SHORT).show(); break; case R.id.it_1: Toast.makeText(UIActivity2.this, "触发了删除1功能", Toast.LENGTH_SHORT).show(); break; } return super.onOptionsItemSelected(item); } public void pt_OnClick(View v) { //构建普通对话框 //对话框的构建器 // AlertDialog.Builder ab = new AlertDialog.Builder(this); // ab.setTitle("数据删除"); // ab.setMessage("你确定要删除吗?"); // //负面按钮 // ab.setNeutralButton("取消", null); // //正面按钮 // ab.setPositiveButton("确定", new DialogInterface.OnClickListener() { // @Override // public void onClick(DialogInterface dialog, int which) { // Toast.makeText(UIActivity2.this, "删除成功", Toast.LENGTH_SHORT).show(); // } // }); //显示 // ab.show(); //方法链调用 new AlertDialog.Builder(this) .setTitle("确认保存") .setMessage("你真的要保存吗?") .setNeutralButton("取消",null) .setPositiveButton("保存",null) .show(); } public void dx_OnClick(View v) { final String[] str_color = {"红","绿","蓝","灰"}; new AlertDialog.Builder(this) .setTitle("请选择颜色") .setSingleChoiceItems(str_color, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(UIActivity2.this, "选中了" + str_color[which], Toast.LENGTH_SHORT).show(); //移除对话框 //dialog.dismiss(); } }) .setNeutralButton("确定",null) .setPositiveButton("取消",null) .show(); } public void duox_OnClick(View v) { final String[] str_color = {"红","绿","蓝","灰"}; final boolean[] bl_xz = {true,false,false,true}; new AlertDialog.Builder(this) .setTitle("请选择颜色") .setMultiChoiceItems(str_color, bl_xz, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) { Toast.makeText(UIActivity2.this, str_color[which] + "被选中", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(UIActivity2.this, str_color[which] + "取消选中", Toast.LENGTH_SHORT).show(); } } }) .setNeutralButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //遍历数组 for (boolean b : bl_xz) { try { Thread.sleep(100); } catch (Exception ex) { } Toast.makeText(UIActivity2.this, "值 = " + b, Toast.LENGTH_SHORT).show(); } } } ) . show(); } public void zdy_OnClick(View v) { //1.获取加载器 //LayoutInflater lif = getLayoutInflater(); //2.用加载器加载文件 //final View v_1 = lif.inflate(R.layout.loginlayout, null); new AlertDialog.Builder(this) .setView(R.layout.loginlayout) //.setView(v_1) .setNeutralButton("取消", null) .setPositiveButton("登陆", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { AlertDialog al = (AlertDialog) dialog; //找不到时需要指定范围,可以是视图或者对话框(5.0以上支持) //处理数据 EditText et_username = (EditText) al.findViewById(R.id.et_username); Toast.makeText(UIActivity2.this, "用户名 = " + et_username.getText(), Toast.LENGTH_SHORT).show(); } }) .setCancelable(false) //构造器用的方法:设置是否能点击其他地方让对话框消失 .show(); } public void jdt_OnClick(View v) { final ProgressDialog pd =new ProgressDialog(this); pd.setMessage("正在加载中,请稍候..."); // pd.setTitle("进度对话框"); pd.show(); // 创建Thread实例 重写run方法 启动多线程 new Thread() { @Override public void run() { super.run(); try { Thread.sleep(3000); } catch (Exception e) { } pd.dismiss(); //关闭 //子线程不能直接操作 主线程(UI线程) // 1.可以用Handler进行线程间通讯 // 2.runOnUiThread Activity里面提供的方法 //Runnable:接口 Thread实现了run方法 runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(UIActivity2.this, "加载完成", Toast.LENGTH_SHORT).show(); //写在新线程里面 } }); }//重写run方法,利用start启动多线程 }.start(); } public void jdt1_OnClick(View v) { final ProgressDialog pd =new ProgressDialog(this); pd.setCanceledOnTouchOutside(false); //设置关闭方式 pd.setMessage("请稍候..."); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.show(); // 创建Thread实例,实现Runnable接口,start()启动多线程 new Thread(new Runnable() { @Override public void run() { for (int i = 0;i<=pd.getMax();i++) { try { Thread.sleep(100); } catch (Exception e) { } pd.setProgress(i);//设置当前值 } pd.dismiss(); //关闭 } }).start(); // new Thread() // { // @Override // public void run() { // super.run(); // for (int i = 0;i<=pd.getMax();i++) // { // try // { // Thread.sleep(100); // } // catch (Exception e) { // } // pd.setProgress(i);//设置当前值 // } // pd.dismiss(); //关闭 // // } // }.start(); } public void rq_OnClick (View v) { //获取当前日期 java提供了获取当前日期的类:Calender Calendar c = Calendar.getInstance(); //设计模式的一种:单例模式:整个系统里面只有一个实例 DatePickerDialog dpd = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Toast.makeText(UIActivity2.this, year + "-" + (monthOfYear +1) + "-" + dayOfMonth, Toast.LENGTH_SHORT).show(); } },c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH)); dpd.show(); } public void sj_OnClick (View v) { //获取当前日期 java提供了获取当前日期的类:Calender Calendar c = Calendar.getInstance(); //设计模式的一种:单例模式:整个系统里面只有一个实例 TimePickerDialog tpd =new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { Toast.makeText(UIActivity2.this, hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show(); } },c.get(Calendar.HOUR),c.get(Calendar.MINUTE),true); tpd.show(); } }
效果图: