xml

  1. <Button
  2. android:layout_width="match_parent"
  3. android:layout_height="wrap_content"
  4. android:text="点击触发弹出普通对话框"
  5. android:onClick="pt_onclick"/>
  6. <Button
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content"
  9. android:text="点击触发弹出单选对话框"
  10. android:onClick="danxuanonclick"/>
  11.  
  12. <Button
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content"
  15. android:text="点击触发弹出多选对话框"
  16. android:onClick="duoxuanonclick"/>
  17. <Button
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:text="点击触发弹出自定义对话框"
  21. android:onClick="zdy_onclick"/>
  22. <Button
  23. android:layout_width="match_parent"
  24. android:layout_height="wrap_content"
  25. android:text="点击触发弹出自定义旋转进度条对话框"
  26. android:onClick="jdt_onclick"/>
  27. <Button
  28. android:layout_width="match_parent"
  29. android:layout_height="wrap_content"
  30. android:text="点击触发弹出自定义水平进度条对话框"
  31. android:onClick="jdt1_onclick"/>
  1. loginlayout.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <ImageView
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content"
  9. android:src="@drawable/anniu2"
  10. android:scaleType="fitXY"/>
  11. <EditText
  12. android:layout_width="match_parent"
  13. android:layout_height="wrap_content"
  14. android:hint="用户名"
  15. android:id="@+id/et_username"/>
  16. <EditText
  17. android:layout_width="match_parent"
  18. android:layout_height="wrap_content"
  19. android:hint="密码"
  20. android:inputType="textPassword"
  21. android:id="@+id/et_password"/>
  22.  
  23. </LinearLayout>

java

  1. package com.example.chenshuai.test322;
  2.  
  3. import android.app.AlertDialog;
  4. import android.app.DatePickerDialog;
  5. import android.app.ProgressDialog;
  6. import android.app.TimePickerDialog;
  7. import android.content.DialogInterface;
  8. import android.content.Intent;
  9. import android.os.Bundle;
  10. import android.support.v7.app.AppCompatActivity;
  11. import android.view.ContextMenu;
  12. import android.view.LayoutInflater;
  13. import android.view.Menu;
  14. import android.view.MenuInflater;
  15. import android.view.MenuItem;
  16. import android.view.SubMenu;
  17. import android.view.View;
  18. import android.widget.Button;
  19. import android.widget.DatePicker;
  20. import android.widget.EditText;
  21. import android.widget.ProgressBar;
  22. import android.widget.SeekBar;
  23. import android.widget.TimePicker;
  24. import android.widget.Toast;
  25.  
  26. import java.util.Calendar;
  27.  
  28. /**
  29. * Created by chenshuai on 2016/3/30.
  30. */
  31. public class UIActivity2 extends AppCompatActivity {
  32.  
  33. @Override
  34. protected void onCreate(Bundle savedInstanceState) {
  35. super.onCreate(savedInstanceState);
  36. setContentView(R.layout.activity_ui2);
  37.  
  38. Button bt_changan = (Button)findViewById(R.id.bt_changan);
  39. bt_changan.setOnCreateContextMenuListener(this);
  40.  
  41. //进度条
  42. //final 生命周期为整个类
  43. final ProgressBar pb_1 = (ProgressBar)findViewById(R.id.pb_1);
  44. final ProgressBar pb_2 = (ProgressBar)findViewById(R.id.pb_2);
  45.  
  46. SeekBar sb_1 = (SeekBar)findViewById(R.id.sbr_1);
  47.  
  48. sb_1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  49. @Override
  50. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  51.  
  52. pb_2.setProgress(progress);
  53. }
  54.  
  55. //开始拖动
  56. @Override
  57. public void onStartTrackingTouch(SeekBar seekBar) {
  58.  
  59. }
  60.  
  61. //结束拖动
  62. @Override
  63. public void onStopTrackingTouch(SeekBar seekBar) {
  64.  
  65. pb_2.setProgress(seekBar.getProgress());
  66. if (seekBar.getProgress() == seekBar.getMax()) {
  67. //设置不可见 GONE不占位置 invisible 占位置
  68. pb_1.setVisibility(View.GONE);
  69.  
  70. } else {
  71. //可见
  72. pb_1.setVisibility(View.VISIBLE);
  73. }
  74.  
  75. }
  76. });
  77. }
  78.  
  79. //菜单 上下文菜单
  80. @Override
  81. public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
  82.  
  83. menu.add(0, 1, 0, "添加");
  84. menu.add(0, 2, 1, "修改");
  85. menu.add(0, 3, 2, "删除");
  86. SubMenu m = menu.addSubMenu(0, 4, 3, "子菜单");
  87. m.add(0,4-1,0,"子菜单项一");
  88. m.add(0,4-2,1,"子菜单项二");
  89. m.add(0,4-3,2,"子菜单项三");
  90. m.add(0,4-4,3,"子菜单项四");
  91.  
  92. super.onCreateContextMenu(menu, v, menuInfo);
  93. }
  94.  
  95. @Override
  96. public boolean onContextItemSelected(MenuItem item) {
  97.  
  98. switch (item.getItemId())
  99. {
  100. case 1:
  101. Toast.makeText(UIActivity2.this, "触发了添加功能", Toast.LENGTH_SHORT).show();
  102. break;
  103. case 2:
  104. Toast.makeText(UIActivity2.this, "触发了删除功能", Toast.LENGTH_SHORT).show();
  105. break;
  106. case 3:
  107. Toast.makeText(UIActivity2.this, "触发了修改功能", Toast.LENGTH_SHORT).show();
  108. break;
  109.  
  110. }
  111. return super.onContextItemSelected(item);
  112. }
  113.  
  114. @Override
  115. //重写 创建选项菜单的方法
  116. public boolean onCreateOptionsMenu(Menu menu) {
  117.  
  118. //添加菜单项
  119. //第一种 纯编码方式
  120. /*menu.add(0, 1, 0, "添加");
  121. menu.add(0, 2, 2, "删除");
  122. menu.add(0, 3, 1, "修改");
  123. */
  124. //第二种 加载菜单文件方式
  125.  
  126. //1.获取一个菜单加载器
  127.  
  128. MenuInflater menuInflater = getMenuInflater();
  129.  
  130. menuInflater.inflate(R.menu.mymenu,menu);
  131.  
  132. return super.onCreateOptionsMenu(menu);
  133. }
  134.  
  135. @Override
  136. public boolean onOptionsItemSelected (MenuItem item){
  137.  
  138. //Toast.makeText(UiActivity2.this, "选中的菜单项是" + item.getTitle(), Toast.LENGTH_SHORT).show();
  139.  
  140. //根据菜单项不同响应不同功能
  141. switch (item.getItemId()) {
  142. case 1:
  143. Toast.makeText(UIActivity2.this, "触发了添加功能", Toast.LENGTH_SHORT).show();
  144. break;
  145. case 2:
  146. Toast.makeText(UIActivity2.this, "触发了删除功能", Toast.LENGTH_SHORT).show();
  147. break;
  148. case 3:
  149. Toast.makeText(UIActivity2.this, "触发了修改功能", Toast.LENGTH_SHORT).show();
  150. break;
  151. case R.id.it1:
  152. Toast.makeText(UIActivity2.this, "触发了删除一功能", Toast.LENGTH_SHORT).show();
  153. break;
  154. case R.id.it2:
  155. Toast.makeText(UIActivity2.this, "触发了添加一功能", Toast.LENGTH_SHORT).show();
  156. break;
  157. }
  158.  
  159. return super.onOptionsItemSelected(item);
  160.  
  161. }
  162.  
  163. public void pt_onclick(View view)
  164. {
  165. //普通对话框
  166. //对话框的构建器
  167. //AlertDialog.Builder ab = new AlertDialog.Builder(this);
  168. /* ab.setTitle("数据删除");
  169. ab.setMessage("你确定要删除吗?");
  170. //负面按钮
  171. ab.setPositiveButton("取消", null);
  172. //正面按钮
  173. ab.setNegativeButton("确定", new DialogInterface.OnClickListener() {
  174. @Override
  175. public void onClick(DialogInterface dialog, int which) {
  176.  
  177. Toast.makeText(UIActivity2.this, "删除成功", Toast.LENGTH_SHORT).show();
  178.  
  179. }
  180. });
  181. //显示
  182. ab.show();*/
  183.  
  184. //方法链调用
  185. new AlertDialog.Builder(this)
  186.  
  187. .setTitle("确认保存")
  188. .setMessage("确定要保存吗?")
  189. .setPositiveButton("确定", null)
  190. .setNegativeButton("取消", null)
  191. .show();
  192. }
  193.  
  194. public void danxuanonclick(View v)
  195. {
  196. final String[] str_color = {"红","绿","蓝","灰"};
  197. new AlertDialog.Builder(this)
  198. .setTitle("请选择颜色")
  199. .setSingleChoiceItems(str_color, 0, new DialogInterface.OnClickListener() {
  200. @Override
  201. public void onClick(DialogInterface dialog, int which) {
  202.  
  203. Toast.makeText(UIActivity2.this, "选中了" + str_color[which], Toast.LENGTH_SHORT).show();
  204.  
  205. //移除
  206. //dialog.dismiss();
  207. }
  208. })
  209. .setNeutralButton("确定", null)
  210. .show();
  211.  
  212. }
  213. public void duoxuanonclick(View v)
  214. {
  215. final String[] str_color = {"红","绿","蓝","灰"};
  216. final boolean[] bl_sz = {true,true,true,false};
  217. new AlertDialog.Builder(this)
  218. .setTitle("请选择颜色")
  219. .setMultiChoiceItems(str_color, bl_sz, new DialogInterface.OnMultiChoiceClickListener() {
  220. @Override
  221. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  222. if (isChecked) {
  223. Toast.makeText(UIActivity2.this, str_color[which] + "选中了", Toast.LENGTH_SHORT).show();
  224. } else {
  225. Toast.makeText(UIActivity2.this, str_color[which] + "取消选中了", Toast.LENGTH_SHORT).show();
  226. }
  227.  
  228. }
  229. })
  230. .setNeutralButton("确定", new DialogInterface.OnClickListener() {
  231. @Override
  232. public void onClick(DialogInterface dialog, int which) {
  233.  
  234. //遍历数组
  235. for (boolean b : bl_sz) {
  236.  
  237. try {
  238. Thread.sleep(100);
  239. } catch (Exception ex) {
  240.  
  241. }
  242. Toast.makeText(UIActivity2.this, "值=" + b, Toast.LENGTH_SHORT).show();
  243.  
  244. }
  245. }
  246. })
  247. .show();
  248. }
  249.  
  250. public void zdy_onclick(View view)
  251. {
  252. //1.获取加载器
  253. LayoutInflater layoutInflater = getLayoutInflater();
  254. //2.用加载器加载文件
  255. //final View v_1 = layoutInflater.inflate(R.layout.loginlayout,null);
  256.  
  257. new AlertDialog.Builder(this)
  258.  
  259. //.setView(v_1)
  260. .setView(R.layout.loginlayout)
  261. .setNegativeButton("取消", null)
  262. .setPositiveButton("登陆", new DialogInterface.OnClickListener() {
  263. @Override
  264. public void onClick(DialogInterface dialog, int which) {
  265.  
  266. AlertDialog al = (AlertDialog) dialog;
  267.  
  268. //处理数据
  269. //EditText et_username = (EditText)v_1.findViewById(R.id.et_username);
  270.  
  271. EditText et_username = (EditText) al.findViewById(R.id.et_username);
  272.  
  273. //Toast.makeText(UIActivity2.this, "用户名="+et_username.getText(), Toast.LENGTH_SHORT).show();
  274.  
  275. String useneme = et_username.getText().toString();
  276.  
  277. EditText et_password = (EditText) al.findViewById(R.id.et_password);
  278. String pwd = et_password.getText().toString();
  279.  
  280. if (useneme.equals("wukong") && pwd.equals("123")) {
  281.  
  282. Intent in = new Intent(UIActivity2.this, Activity1.class);
  283.  
  284. startActivity(in);
  285. } else
  286. Toast.makeText(UIActivity2.this, "用户名" + useneme + "密码" + pwd, Toast.LENGTH_SHORT).show();
  287. {
  288.  
  289. }
  290.  
  291. }
  292. })
  293. .show();
  294.  
  295. }
  296.  
  297. //旋转进度条
  298. public void jdt_onclick(View view)
  299. {
  300.  
  301. final ProgressDialog pd = new ProgressDialog(this);
  302. pd.setMessage("正在加载请稍后");
  303. pd.show();
  304.  
  305. //创建thread实例 =【重写run方法 启动多线程
  306. new Thread()
  307. {
  308. @Override
  309. public void run() {
  310. super.run();
  311. try
  312. {
  313. Thread.sleep(3000);
  314. }
  315. catch (Exception e)
  316. {
  317.  
  318. }
  319.  
  320. pd.dismiss();//关闭
  321.  
  322. }
  323. }.start();
  324.  
  325. }
  326. //水平进度条
  327. public void jdt1_onclick(View view)
  328. {
  329.  
  330. final ProgressDialog pd = new ProgressDialog(this);
  331. pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  332. pd.setMessage("正在加载请稍后");
  333. pd.show();
  334.  
  335. //创建thread实例 实现Runable接口 启动多线程
  336. new Thread(new Runnable() {
  337. @Override
  338. public void run() {
  339. for (int i = 0; i <= pd.getMax(); i++) {
  340. try {
  341. Thread.sleep(100);
  342. } catch (Exception e) {
  343.  
  344. }
  345.  
  346. pd.setProgress(i);
  347. }
  348.  
  349. pd.dismiss();
  350. }
  351. }).start();
  352.  
  353. //创建thread实例 重写run方法 启动多线程
  354. new Thread()
  355. {
  356. @Override
  357. public void run() {
  358. super.run();
  359.  
  360. //新线程 子线程
  361. for (int i = 0; i <= pd.getMax(); i++) {
  362. try {
  363. Thread.sleep(100);
  364. } catch (Exception e) {
  365.  
  366. }
  367.  
  368. pd.setProgress(i);
  369. }
  370.  
  371. pd.dismiss();//关闭
  372. //子线程不能直接操作主线程 UI线程
  373. //1.可以用hander
  374. //2.也可以用runOnUiThread
  375. runOnUiThread(new Runnable() {
  376. @Override
  377. public void run() {
  378. Toast.makeText(UIActivity2.this, "加载完成", Toast.LENGTH_SHORT).show();
  379. }
  380. });
  381.  
  382. }
  383.  
  384. }.start();
  385.  
  386. }
  387. }
  1.  

Android——对话框1(一般、选择、自定义、进度条)的更多相关文章

  1. 最简单的android自定义进度条样式

    一.自定义圆形进度条样式 1.在安卓项目drawable目录下新建一个xml文件如下:<?xml version="1.0" encoding="utf-8&quo ...

  2. android 自定义进度条颜色

    android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程!   这个没法了只能看源码了,还好下载了源码, sources\b ...

  3. Android自定义进度条

    Android原生控件只有横向进度条一种,而且没法变换样式,比如原生rom的样子很丑是吧,当伟大的产品设计要求更换前背景,甚至纵向,甚至圆弧状的,咋办,比如ok,我们开始吧: 一)变换前背景 先来看看 ...

  4. android113 自定义进度条

    MainActivity: package com.itheima.monitor; import android.os.Bundle; import android.app.Activity; im ...

  5. Android开发-各种各样好看漂亮的进度条,指示器,加载提示汇总

    导读:之前项目中用到一些进度条,找了不少,打算写个demo自己总结一下,留着以后用, 有些是自己写的,有些是github上找的别人的库,如果大家觉得好看可以用,直接下载复制代码到项目里就可以用,ok ...

  6. 自定义进度条PictureProgressBar——从开发到开源发布全过程

    自定义进度条PictureProgressBar——从开发到开源发布全过程 出处: 炎之铠邮箱:yanzhikai_yjk@qq.com 本文原创,转载请注明本出处! 本项目JCenter地址:htt ...

  7. android 自定义控件——(四)圆形进度条

    ----------------------------------↓↓圆形进度条(源代码下有属性解释)↓↓---------------------------------------------- ...

  8. Qt之模型/视图(自定义进度条)

    简述 在之前的章节中分享过关于QHeaderView表头排序.添加复选框等内容,相信大家模型/视图.自定义风格有了一定的了解,下面我们来分享一个更常用的内容-自定义进度条. 实现方式: 从QAbstr ...

  9. android 网络异步加载数据进度条

    ProgressDialog progressDialog = null; public static final int MESSAGETYPE = 0; private void execute( ...

  10. C# 根据BackgroundWoker异步模型和ProgressBar控件,自定义进度条控件

    前言 程序开发过程中,难免会有的业务逻辑,或者算法之类产生让人能够感知的耗时操作,例如循环中对复杂逻辑处理;获取数据库百万乃至千万级数据;http请求的时候等...... 用户在使用UI操作并不知道程 ...

随机推荐

  1. PHP-中文在计算机中的存储

    经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. ● 为什么有这么多编码? ...

  2. 【LeetCode】149. Max Points on a Line

    Max Points on a Line Given n points on a 2D plane, find the maximum number of points that lie on the ...

  3. .NET压缩图片保存

    需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用的 1.1的版本 效果: ...

  4. 转 ShowSlow+Yslow页面前端性能测试环境搭建

    ----//工具介绍 Yslow:YSlow是Yahoo发布的一款基于FireFox的插件. YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. ShowSlo ...

  5. 【驱动笔记11】使用DeviceIoControl通信

    文章作者:grayfox作者主页:http://nokyo.blogbus.com原始出处:http://www.blogbus.com/nokyo-logs/34018521.html 在我昨日发布 ...

  6. javascript Dictionary data structures

    Dictionary常被称为数据字典,是一种用来保存键值对的数据结构,比如我们日常的电话本,就是一个Dictionary.我们通过键(名字),就可以访问到对应的值(电话号码).在C++与java中我们 ...

  7. CPD轮播广告库的简单算法

    在广告的领域中,有一种广告形式,采用的是CPD的售卖模式,为了对流量进行拆分,媒体方会对广告位进行轮播拆分.比如一个广告位,被拆成了10轮播,那么在广告主来预订广告位的时候,这个时候就可以告诉广告主, ...

  8. Spring RestTemplate使用教程

    简介 Spring'scentral class for synchronous client-side HTTP access.It simplifies communication with HT ...

  9. scratch资源

    火柴人工作室:https://scratch.mit.edu/studios/170355/ 像素工作室:https://scratch.mit.edu/studios/3667398/ snap官网 ...

  10. kernel生成针对x86架构的tags和cscope数据库

    最近下载了kernel的最新源码4.15版,但下载后的linux内核不仅包含了x86架构的函数还包含了如:arm.powerPC等等其他架构的函数,如果直接生成tags文件,将来查找时,多种架构的同名 ...