android界面UI学习(上)

向右看齐 2022-12-28 09:14 232阅读 0赞

主界面布局activity_main.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >
  2. <Button android:id="@+id/btn_main_test1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="测试常用简单的Component" />
  3. <Button android:id="@+id/btn_main_test2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="测试菜单Component" />
  4. <Button android:id="@+id/btn_main_test3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="测试进度条Component" />
  5. <Button android:id="@+id/btn_main_test4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="测试对话框Component" />
  6. </LinearLayout>

点不同的按钮,启动不同的Activity

  1. package com.example.uidemo;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. public class MainActivity extends Activity implements OnClickListener {
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12. findViewById(R.id.btn_main_test1).setOnClickListener(this);
  13. findViewById(R.id.btn_main_test2).setOnClickListener(this);
  14. findViewById(R.id.btn_main_test3).setOnClickListener(this);
  15. findViewById(R.id.btn_main_test4).setOnClickListener(this);
  16. }
  17. @Override
  18. public void onClick(View v) {
  19. switch (v.getId()) {
  20. case R.id.btn_main_test1:
  21. startActivity(new Intent(this, SimpleActivity.class));
  22. break;
  23. case R.id.btn_main_test2:
  24. startActivity(new Intent(this, MenuActivity.class));
  25. break;
  26. case R.id.btn_main_test3:
  27. startActivity(new Intent(this, ProgressActivity.class));
  28. break;
  29. case R.id.btn_main_test4:
  30. startActivity(new Intent(this, DialogActivity.class));
  31. break;
  32. default:
  33. break;
  34. }
  35. }
  36. }

在这里插入图片描述
简单的组件
activity_simple.xml

  1. <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:orientation="vertical" >
  2. <TextView android:id="@+id/tv_simple_message" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#999999" android:text="这是TextView内容" android:textColor="#ff0000" android:textSize="20sp" />
  3. <EditText android:id="@+id/et_simple_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入手机号" android:inputType="phone" >
  4. </EditText>
  5. <Button android:id="@+id/btn_simple_submit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="提交" />
  6. <ImageView android:id="@+id/iv_simple_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:drawable/alert_dark_frame" android:src="@android:drawable/ic_media_play" />
  7. <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" >
  8. <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="爱好: " />
  9. <CheckBox android:id="@+id/cb_simple_basket" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="篮球" />
  10. <CheckBox android:id="@+id/cb_simple_foot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="足球" />
  11. <CheckBox android:id="@+id/cb_simple_pingpang" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="乒乓" />
  12. <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="confirm" android:text="确定" />
  13. </LinearLayout>
  14. <RadioGroup android:id="@+id/rg_simple_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" >
  15. <RadioButton android:id="@+id/rb_simple_male" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="男" />
  16. <RadioButton android:id="@+id/rb_simple_female" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="女" />
  17. <RadioButton android:id="@+id/rb_simple_nomale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="东方不败" />
  18. </RadioGroup>
  19. </LinearLayout>

SimpleActivity.java

  1. package com.example.uidemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import android.widget.CheckBox;
  7. import android.widget.CompoundButton;
  8. import android.widget.EditText;
  9. import android.widget.ImageView;
  10. import android.widget.RadioButton;
  11. import android.widget.RadioGroup;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14. public class SimpleActivity extends Activity {
  15. private TextView tv_simple_message;
  16. private EditText et_simple_number;
  17. private Button btn_simple_submit;
  18. private ImageView iv_simple_icon;
  19. private CheckBox cb_simple_basket;
  20. private CheckBox cb_simple_foot;
  21. private CheckBox cb_simple_pingpang;
  22. private RadioGroup rg_simple_sex;
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_simple);
  27. tv_simple_message = (TextView) findViewById(R.id.tv_simple_message);
  28. tv_simple_message.setText("huangbaokang");
  29. et_simple_number = (EditText) findViewById(R.id.et_simple_number);
  30. btn_simple_submit = (Button) findViewById(R.id.btn_simple_submit);
  31. btn_simple_submit.setOnClickListener(new View.OnClickListener() {
  32. @Override
  33. public void onClick(View v) {
  34. String number = et_simple_number.getText().toString();
  35. Toast.makeText(SimpleActivity.this, number, 0).show();
  36. }
  37. });
  38. iv_simple_icon = (ImageView) findViewById(R.id.iv_simple_icon);
  39. iv_simple_icon.setOnClickListener(new View.OnClickListener() {
  40. @Override
  41. public void onClick(View v) {
  42. iv_simple_icon
  43. .setBackgroundResource(android.R.drawable.alert_light_frame);
  44. iv_simple_icon
  45. .setImageResource(android.R.drawable.ic_media_pause);
  46. }
  47. });
  48. cb_simple_basket = (CheckBox) findViewById(R.id.cb_simple_basket);
  49. cb_simple_foot = (CheckBox) findViewById(R.id.cb_simple_foot);
  50. cb_simple_pingpang = (CheckBox) findViewById(R.id.cb_simple_pingpang);
  51. cb_simple_foot
  52. .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  53. @Override
  54. public void onCheckedChanged(CompoundButton buttonView,
  55. boolean isChecked) {
  56. if (isChecked) {
  57. Toast.makeText(SimpleActivity.this, "选中了足球", 0)
  58. .show();
  59. } else {
  60. Toast.makeText(SimpleActivity.this, "未选中足球", 0)
  61. .show();
  62. }
  63. }
  64. });
  65. rg_simple_sex = (RadioGroup) findViewById(R.id.rg_simple_sex);
  66. rg_simple_sex
  67. .setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
  68. @Override
  69. public void onCheckedChanged(RadioGroup group, int checkedId) {
  70. RadioButton radioButton = (RadioButton) findViewById(checkedId);
  71. // 得到文本
  72. String sex = radioButton.getText().toString();
  73. // 提示
  74. Toast.makeText(SimpleActivity.this, sex, 0).show();
  75. }
  76. });
  77. }
  78. public void confirm(View v) {
  79. StringBuffer sb = new StringBuffer();
  80. if (cb_simple_basket.isChecked()) {
  81. sb.append(cb_simple_basket.getText().toString()).append(" ");
  82. }
  83. if (cb_simple_foot.isChecked()) {
  84. sb.append(cb_simple_foot.getText().toString()).append(" ");
  85. }
  86. if (cb_simple_pingpang.isChecked()) {
  87. sb.append(cb_simple_pingpang.getText().toString());
  88. }
  89. // 提示
  90. Toast.makeText(this, sb.toString(), 0).show();
  91. }
  92. }

在这里插入图片描述
菜单UI
activity_menu.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >
  2. <Button android:id="@+id/btn_test2_show_cm" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="显示ContextMenu" />
  3. <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="1. 点击menu显示选项菜单\n2. 长按按钮显示上下文菜单" android:textSize="25dp" />
  4. </LinearLayout>

处理Activity
MenuActivity.java

  1. package com.example.uidemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.ContextMenu;
  5. import android.view.Menu;
  6. import android.view.MenuInflater;
  7. import android.view.MenuItem;
  8. import android.view.View;
  9. import android.view.ContextMenu.ContextMenuInfo;
  10. import android.widget.Button;
  11. import android.widget.Toast;
  12. /* OptionMenu 1. 如何触发Menu的显示? 点击menu键 2. 如何向Menu中添加MenuItem? 重写onCreateOptionMenu() menu.add()或者加载菜单文件 3. 选择某个MenuItem时如何响应? 重写onOptionsItemSelected(), 根据itemId做响应 ContextMenu 1. 如何触发Menu的显示? 长按某个视图 view.setOnCreateContextMenuListener(this) 2. 如何向Menu中添加MenuItem? 重写onCreateContextMenu() menu.add() 3. 选择某个MenuItem时如何响应? 重写onContextItemSelected(), 根据itemId做响应 */
  13. public class MenuActivity extends Activity {
  14. private Button btn_test2_show_cm;
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_menu);
  19. btn_test2_show_cm = (Button) findViewById(R.id.btn_test2_show_cm);
  20. btn_test2_show_cm.setOnCreateContextMenuListener(this);
  21. }
  22. // @Override
  23. // public boolean onCreateOptionsMenu(Menu menu) {
  24. // //add(int groupId, int itemId, int order, CharSequence title)
  25. // // groupId不需要分组传0 order不要求排序的话,传0
  26. // menu.add(0, 100, 0, "添加");
  27. // menu.add(0, 200, 0, "删除");
  28. // return super.onCreateOptionsMenu(menu);
  29. // }
  30. @Override
  31. public boolean onCreateOptionsMenu(Menu menu) {
  32. MenuInflater menuInflater = getMenuInflater();
  33. menuInflater.inflate(R.menu.mymenu, menu);
  34. return super.onCreateOptionsMenu(menu);
  35. }
  36. @Override
  37. public boolean onOptionsItemSelected(MenuItem item) {
  38. switch (item.getItemId()) {
  39. case R.id.add:
  40. //case 100:
  41. Toast.makeText(this, "添加", 0).show();
  42. break;
  43. case R.id.delete:
  44. //case 200:
  45. Toast.makeText(this, "删除", 0).show();
  46. break;
  47. default:
  48. break;
  49. }
  50. return super.onOptionsItemSelected(item);
  51. }
  52. @Override
  53. public void onCreateContextMenu(ContextMenu menu, View v,
  54. ContextMenuInfo menuInfo) {
  55. menu.add(0, 111, 0, "查看详情");
  56. menu.add(0, 222, 0, "更新数据");
  57. super.onCreateContextMenu(menu, v, menuInfo);
  58. }
  59. // @Override 这个方法要跟下面的onContextItemSelected区别,两个同时放开,我测试会弹窗两次!!!
  60. // public boolean onMenuItemSelected(int featureId, MenuItem item) {
  61. // switch (item.getItemId()) {
  62. // case 111:
  63. // Toast.makeText(this, "查看详情", 0).show();
  64. // break;
  65. // case 222:
  66. // Toast.makeText(this, "更新数据", 0).show();
  67. // break;
  68. // default:
  69. // break;
  70. // }
  71. // return super.onMenuItemSelected(featureId, item);
  72. // }
  73. @Override
  74. public boolean onContextItemSelected(MenuItem item) {
  75. switch (item.getItemId()) {
  76. case 111:
  77. Toast.makeText(this, "查看详情111", 0).show();
  78. break;
  79. case 222:
  80. Toast.makeText(this, "更新数据111", 0).show();
  81. break;
  82. default:
  83. break;
  84. }
  85. return super.onContextItemSelected(item);
  86. }
  87. }

实现了长按和点击菜单键
在这里插入图片描述
定义的菜单item文件 mymenu.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <item android:id="@+id/add" android:title="添加"></item>
  4. <item android:id="@+id/delete" android:title="删除"></item>
  5. </menu>

进度条(圆形,水平)activity_progress.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >
  2. <LinearLayout android:id="@+id/ll_progress_loading" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" >
  3. <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" />
  4. <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正在加载中..." />
  5. </LinearLayout>
  6. <ProgressBar android:id="@+id/pb_progress_loading" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:progress="30" />
  7. <SeekBar android:id="@+id/sb_progress_loading" android:layout_width="match_parent" android:layout_height="wrap_content" />
  8. <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="1. 滑动下面的滑杆后, 上面的进度条会同步\n2. 滑动到最大值时, 最上面的进度条消失" />
  9. </LinearLayout>

处理Activity类

  1. package com.example.uidemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.LinearLayout;
  6. import android.widget.ProgressBar;
  7. import android.widget.SeekBar;
  8. import android.widget.SeekBar.OnSeekBarChangeListener;
  9. public class ProgressActivity extends Activity {
  10. private SeekBar sb_progress_loading;
  11. private LinearLayout ll_progress_loading;
  12. private ProgressBar pb_progress_loading;
  13. private OnSeekBarChangeListener onSeekBarChangeListener = new OnSeekBarChangeListener() {
  14. @Override
  15. public void onStopTrackingTouch(SeekBar seekBar) {
  16. int progress = sb_progress_loading.getProgress();
  17. pb_progress_loading.setProgress(progress);
  18. if(progress==sb_progress_loading.getMax()){
  19. //ll_progress_loading.setVisibility(View.INVISIBLE);// 不可见,但占空间
  20. ll_progress_loading.setVisibility(View.GONE);// 不可见,不占空间
  21. }else{
  22. ll_progress_loading.setVisibility(View.VISIBLE);
  23. }
  24. }
  25. @Override
  26. public void onStartTrackingTouch(SeekBar seekBar) {
  27. }
  28. @Override
  29. public void onProgressChanged(SeekBar seekBar, int progress,
  30. boolean fromUser) {
  31. }
  32. };
  33. @Override
  34. protected void onCreate(Bundle savedInstanceState) {
  35. super.onCreate(savedInstanceState);
  36. setContentView(R.layout.activity_progress);
  37. sb_progress_loading = (SeekBar) findViewById(R.id.sb_progress_loading);
  38. ll_progress_loading = (LinearLayout) findViewById(R.id.ll_progress_loading);
  39. pb_progress_loading = (ProgressBar) findViewById(R.id.pb_progress_loading);
  40. sb_progress_loading.setOnSeekBarChangeListener(onSeekBarChangeListener );
  41. }
  42. }

在这里插入图片描述
对话框
activity_dialog.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >
  2. <!-- AlertDialog -->
  3. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="showAD" android:text="显示一般AlertDialog" />
  4. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="showLD" android:text="显示单选列表AlertDialog" />
  5. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="showCD" android:text="显示自定义AlertDialog" />
  6. <!-- ProgressDialog -->
  7. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="showPD" android:text="显示圆形进度ProgressDialog" android:layout_marginTop="20dp"/>
  8. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="showPD2" android:text="显示水平进度ProgressDialog" />
  9. <!-- DatePickerDialog与TimePickerDialog -->
  10. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="showDateAD" android:text="显示DatePickerDialog" android:layout_marginTop="20dp"/>
  11. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="showTimeAD" android:text="显示TimePickerDialog" />
  12. </LinearLayout>

处理类
DialogActivity.java

  1. package com.example.uidemo;
  2. import java.util.Calendar;
  3. import android.app.Activity;
  4. import android.app.AlertDialog;
  5. import android.app.DatePickerDialog;
  6. import android.app.DatePickerDialog.OnDateSetListener;
  7. import android.app.ProgressDialog;
  8. import android.app.TimePickerDialog;
  9. import android.app.TimePickerDialog.OnTimeSetListener;
  10. import android.content.DialogInterface;
  11. import android.os.Bundle;
  12. import android.util.Log;
  13. import android.view.View;
  14. import android.widget.DatePicker;
  15. import android.widget.EditText;
  16. import android.widget.TimePicker;
  17. import android.widget.Toast;
  18. public class DialogActivity extends Activity {
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_dialog);
  23. }
  24. // 显示一般AlertDialog
  25. public void showAD(View v) {
  26. new AlertDialog.Builder(this).setTitle("删除数据").setMessage("你确定要删除数据吗?")
  27. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  28. @Override
  29. public void onClick(DialogInterface dialog, int which) {
  30. Toast.makeText(DialogActivity.this, "删除数据", 0).show();
  31. }
  32. })
  33. .setNegativeButton("取消", new DialogInterface.OnClickListener() {
  34. @Override
  35. public void onClick(DialogInterface dialog, int which) {
  36. Toast.makeText(DialogActivity.this, "取消删除数据", 0).show();
  37. }
  38. }).show();
  39. }
  40. // 显示单选列表AlertDialog
  41. public void showLD(View v) {
  42. final String[] items = { "红", "绿", "蓝" };
  43. new AlertDialog.Builder(this)
  44. .setTitle("删除数据")
  45. .setSingleChoiceItems(items, 1,
  46. new DialogInterface.OnClickListener() {
  47. @Override
  48. public void onClick(DialogInterface dialog,
  49. int which) {
  50. Toast.makeText(DialogActivity.this,
  51. items[which], 0).show();
  52. dialog.dismiss();// 关闭弹窗
  53. }
  54. }).show();
  55. }
  56. // 显示自定义AlertDialog
  57. public void showCD(View v) {
  58. View view = View.inflate(this, R.layout.dialog_view, null);
  59. final EditText userET = (EditText) view.findViewById(R.id.et_username);
  60. final EditText pwdET = (EditText) view.findViewById(R.id.et_password);
  61. new AlertDialog.Builder(this).setView(view)
  62. .setNegativeButton("取消", null)
  63. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  64. @Override
  65. public void onClick(DialogInterface dialog, int which) {
  66. String username = userET.getText().toString();
  67. String password = pwdET.getText().toString();
  68. // 提示输入项的值
  69. Toast.makeText(DialogActivity.this,
  70. username + " : " + password, 0).show();
  71. dialog.dismiss();
  72. }
  73. }).show();
  74. }
  75. // 显示圆形进度ProgressDialog
  76. public void showPD(View v) {
  77. final ProgressDialog progressDialog = ProgressDialog.show(this, "数据加载",
  78. "数据加载中....");
  79. // 长时间的工作不能在主线程做, 得启动分线程完成
  80. new Thread() {
  81. public void run() {
  82. for (int i = 0; i < 10; i++) {
  83. try {
  84. Thread.sleep(100);
  85. } catch (InterruptedException e) {
  86. // TODO Auto-generated catch block
  87. e.printStackTrace();
  88. }
  89. }
  90. progressDialog.dismiss(); // 方法在分线程执行, 但内部使用Handler实现主线程移除dialog
  91. // Toast.makeText(DialogActivity.this, "加载完成了!!!", 0).show();
  92. // 更新UI,不能直接使用Toast,上面执行程序会报错,因为不能在子线程更新UI
  93. runOnUiThread(new Runnable() {
  94. @Override
  95. public void run() { // 在主线程执行
  96. Toast.makeText(DialogActivity.this, "加载完成了!!!", 0)
  97. .show();
  98. }
  99. });
  100. };
  101. }.start();
  102. }
  103. // 显示水平进度ProgressDialog
  104. public void showPD2(View v) {
  105. final ProgressDialog progressDialog = new ProgressDialog(this);
  106. progressDialog.setTitle("huangbaokang");
  107. progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  108. progressDialog.show();
  109. // 4. 启动分线程, 加载数据, 并显示进度, 当加载完成移除dilaog
  110. new Thread(new Runnable() {
  111. @Override
  112. public void run() {
  113. int count = 20;
  114. // 设置最大进度
  115. progressDialog.setMax(count);
  116. for (int i = 0; i < count; i++) {
  117. // 休息一会
  118. try {
  119. Thread.sleep(100);
  120. } catch (InterruptedException e) {
  121. e.printStackTrace();
  122. }
  123. progressDialog.setProgress(progressDialog.getProgress() + 1);
  124. }
  125. // 移除dialog
  126. progressDialog.dismiss();
  127. runOnUiThread(new Runnable() {
  128. @Override
  129. public void run() { // 在主线程执行
  130. Toast.makeText(DialogActivity.this, "加载完成了!!!", 0)
  131. .show();
  132. }
  133. });
  134. }
  135. }).start();
  136. }
  137. public void showDateAD(View v) {
  138. //创建日历对象
  139. Calendar calendar = Calendar.getInstance();
  140. //得到当前的年月日
  141. int year = calendar.get(Calendar.YEAR);//得到年份
  142. int monthOfYear = calendar.get(Calendar.MONTH);//月
  143. int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);//得到日
  144. Log.e("TAG", year+"-"+monthOfYear+"-"+dayOfMonth);
  145. new DatePickerDialog(this, new OnDateSetListener() {
  146. @Override
  147. public void onDateSet(DatePicker view, int year, int monthOfYear,
  148. int dayOfMonth) {
  149. Log.e("TAG", year+"--"+(monthOfYear+1)+"--"+dayOfMonth);
  150. }
  151. }, year, monthOfYear, dayOfMonth).show();
  152. }
  153. public void showTimeAD(View v) {
  154. Calendar c = Calendar.getInstance();
  155. int hourOfDay = c.get(Calendar.HOUR_OF_DAY); //得到小时
  156. int minute = c.get(Calendar.MINUTE); //得到分钟
  157. Log.e("TAG", hourOfDay+":"+minute);
  158. new TimePickerDialog(this, new OnTimeSetListener() {
  159. @Override
  160. public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
  161. Log.e("TAG", hourOfDay+"::"+minute);
  162. }
  163. }, hourOfDay, minute, true).show();
  164. }
  165. }

一般AlertDialog
在这里插入图片描述
显示单选列表AlertDialog
在这里插入图片描述
显示自定义AlertDialog
在这里插入图片描述
圆形进度条ProgressDialog
在这里插入图片描述
水平进度条ProgressDialog

在这里插入图片描述

时间对话框DatePickerDialog
在这里插入图片描述

日期对话框TimePickerDialog
在这里插入图片描述
清单文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.uidemo" android:versionCode="1" android:versionName="1.0" >
  3. <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="18" />
  4. <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
  5. <activity android:name=".MainActivity" android:label="@string/app_name" >
  6. <intent-filter>
  7. <action android:name="android.intent.action.MAIN" />
  8. <category android:name="android.intent.category.LAUNCHER" />
  9. </intent-filter>
  10. </activity>
  11. <activity android:name=".SimpleActivity" android:label="@string/title_activity_simple" >
  12. </activity>
  13. <activity android:name=".MenuActivity" android:label="@string/title_activity_menu" >
  14. </activity>
  15. <activity android:name=".ProgressActivity" android:label="@string/title_activity_progress" >
  16. </activity>
  17. <activity android:name=".DialogActivity" android:label="@string/title_activity_dialog" >
  18. </activity>
  19. </application>
  20. </manifest>

发表评论

表情:
评论列表 (有 0 条评论,232人围观)

还没有评论,来说两句吧...

相关阅读