Android——对话框1(一般、选择、自定义、进度条)
xml
- <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="danxuanonclick"/>
- <Button
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="点击触发弹出多选对话框"
- android:onClick="duoxuanonclick"/>
- <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"/>
- loginlayout.xml
- <?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:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:src="@drawable/anniu2"
- android:scaleType="fitXY"/>
- <EditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="用户名"
- android:id="@+id/et_username"/>
- <EditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="密码"
- android:inputType="textPassword"
- android:id="@+id/et_password"/>
- </LinearLayout>
java
- package com.example.chenshuai.test322;
- import android.app.AlertDialog;
- import android.app.DatePickerDialog;
- import android.app.ProgressDialog;
- import android.app.TimePickerDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.view.ContextMenu;
- import android.view.LayoutInflater;
- 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.ProgressBar;
- import android.widget.SeekBar;
- import android.widget.TimePicker;
- import android.widget.Toast;
- import java.util.Calendar;
- /**
- * Created by chenshuai on 2016/3/30.
- */
- public class UIActivity2 extends AppCompatActivity {
- @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);
- //进度条
- //final 生命周期为整个类
- final ProgressBar pb_1 = (ProgressBar)findViewById(R.id.pb_1);
- final ProgressBar pb_2 = (ProgressBar)findViewById(R.id.pb_2);
- SeekBar sb_1 = (SeekBar)findViewById(R.id.sbr_1);
- sb_1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- pb_2.setProgress(progress);
- }
- //开始拖动
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- }
- //结束拖动
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- pb_2.setProgress(seekBar.getProgress());
- if (seekBar.getProgress() == seekBar.getMax()) {
- //设置不可见 GONE不占位置 invisible 占位置
- pb_1.setVisibility(View.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,4-1,0,"子菜单项一");
- m.add(0,4-2,1,"子菜单项二");
- m.add(0,4-3,2,"子菜单项三");
- m.add(0,4-4,3,"子菜单项四");
- super.onCreateContextMenu(menu, v, menuInfo);
- }
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- 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;
- }
- 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 menuInflater = getMenuInflater();
- menuInflater.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.it1:
- Toast.makeText(UIActivity2.this, "触发了删除一功能", Toast.LENGTH_SHORT).show();
- break;
- case R.id.it2:
- Toast.makeText(UIActivity2.this, "触发了添加一功能", Toast.LENGTH_SHORT).show();
- break;
- }
- return super.onOptionsItemSelected(item);
- }
- public void pt_onclick(View view)
- {
- //普通对话框
- //对话框的构建器
- //AlertDialog.Builder ab = new AlertDialog.Builder(this);
- /* ab.setTitle("数据删除");
- ab.setMessage("你确定要删除吗?");
- //负面按钮
- ab.setPositiveButton("取消", null);
- //正面按钮
- ab.setNegativeButton("确定", 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("确定要保存吗?")
- .setPositiveButton("确定", null)
- .setNegativeButton("取消", null)
- .show();
- }
- public void danxuanonclick(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)
- .show();
- }
- public void duoxuanonclick(View v)
- {
- final String[] str_color = {"红","绿","蓝","灰"};
- final boolean[] bl_sz = {true,true,true,false};
- new AlertDialog.Builder(this)
- .setTitle("请选择颜色")
- .setMultiChoiceItems(str_color, bl_sz, 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_sz) {
- try {
- Thread.sleep(100);
- } catch (Exception ex) {
- }
- Toast.makeText(UIActivity2.this, "值=" + b, Toast.LENGTH_SHORT).show();
- }
- }
- })
- .show();
- }
- public void zdy_onclick(View view)
- {
- //1.获取加载器
- LayoutInflater layoutInflater = getLayoutInflater();
- //2.用加载器加载文件
- //final View v_1 = layoutInflater.inflate(R.layout.loginlayout,null);
- new AlertDialog.Builder(this)
- //.setView(v_1)
- .setView(R.layout.loginlayout)
- .setNegativeButton("取消", null)
- .setPositiveButton("登陆", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- AlertDialog al = (AlertDialog) dialog;
- //处理数据
- //EditText et_username = (EditText)v_1.findViewById(R.id.et_username);
- EditText et_username = (EditText) al.findViewById(R.id.et_username);
- //Toast.makeText(UIActivity2.this, "用户名="+et_username.getText(), Toast.LENGTH_SHORT).show();
- String useneme = et_username.getText().toString();
- EditText et_password = (EditText) al.findViewById(R.id.et_password);
- String pwd = et_password.getText().toString();
- if (useneme.equals("wukong") && pwd.equals("123")) {
- Intent in = new Intent(UIActivity2.this, Activity1.class);
- startActivity(in);
- } else
- Toast.makeText(UIActivity2.this, "用户名" + useneme + "密码" + pwd, Toast.LENGTH_SHORT).show();
- {
- }
- }
- })
- .show();
- }
- //旋转进度条
- public void jdt_onclick(View view)
- {
- final ProgressDialog pd = new ProgressDialog(this);
- pd.setMessage("正在加载请稍后");
- pd.show();
- //创建thread实例 =【重写run方法 启动多线程
- new Thread()
- {
- @Override
- public void run() {
- super.run();
- try
- {
- Thread.sleep(3000);
- }
- catch (Exception e)
- {
- }
- pd.dismiss();//关闭
- }
- }.start();
- }
- //水平进度条
- public void jdt1_onclick(View view)
- {
- final ProgressDialog pd = new ProgressDialog(this);
- pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- pd.setMessage("正在加载请稍后");
- pd.show();
- //创建thread实例 实现Runable接口 启动多线程
- 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();
- //创建thread实例 重写run方法 启动多线程
- 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();//关闭
- //子线程不能直接操作主线程 UI线程
- //1.可以用hander
- //2.也可以用runOnUiThread
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(UIActivity2.this, "加载完成", Toast.LENGTH_SHORT).show();
- }
- });
- }
- }.start();
- }
- }
Android——对话框1(一般、选择、自定义、进度条)的更多相关文章
- 最简单的android自定义进度条样式
一.自定义圆形进度条样式 1.在安卓项目drawable目录下新建一个xml文件如下:<?xml version="1.0" encoding="utf-8&quo ...
- android 自定义进度条颜色
android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程! 这个没法了只能看源码了,还好下载了源码, sources\b ...
- Android自定义进度条
Android原生控件只有横向进度条一种,而且没法变换样式,比如原生rom的样子很丑是吧,当伟大的产品设计要求更换前背景,甚至纵向,甚至圆弧状的,咋办,比如ok,我们开始吧: 一)变换前背景 先来看看 ...
- android113 自定义进度条
MainActivity: package com.itheima.monitor; import android.os.Bundle; import android.app.Activity; im ...
- Android开发-各种各样好看漂亮的进度条,指示器,加载提示汇总
导读:之前项目中用到一些进度条,找了不少,打算写个demo自己总结一下,留着以后用, 有些是自己写的,有些是github上找的别人的库,如果大家觉得好看可以用,直接下载复制代码到项目里就可以用,ok ...
- 自定义进度条PictureProgressBar——从开发到开源发布全过程
自定义进度条PictureProgressBar——从开发到开源发布全过程 出处: 炎之铠邮箱:yanzhikai_yjk@qq.com 本文原创,转载请注明本出处! 本项目JCenter地址:htt ...
- android 自定义控件——(四)圆形进度条
----------------------------------↓↓圆形进度条(源代码下有属性解释)↓↓---------------------------------------------- ...
- Qt之模型/视图(自定义进度条)
简述 在之前的章节中分享过关于QHeaderView表头排序.添加复选框等内容,相信大家模型/视图.自定义风格有了一定的了解,下面我们来分享一个更常用的内容-自定义进度条. 实现方式: 从QAbstr ...
- android 网络异步加载数据进度条
ProgressDialog progressDialog = null; public static final int MESSAGETYPE = 0; private void execute( ...
- C# 根据BackgroundWoker异步模型和ProgressBar控件,自定义进度条控件
前言 程序开发过程中,难免会有的业务逻辑,或者算法之类产生让人能够感知的耗时操作,例如循环中对复杂逻辑处理;获取数据库百万乃至千万级数据;http请求的时候等...... 用户在使用UI操作并不知道程 ...
随机推荐
- PHP-中文在计算机中的存储
经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. ● 为什么有这么多编码? ...
- 【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 ...
- .NET压缩图片保存
需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用的 1.1的版本 效果: ...
- 转 ShowSlow+Yslow页面前端性能测试环境搭建
----//工具介绍 Yslow:YSlow是Yahoo发布的一款基于FireFox的插件. YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. ShowSlo ...
- 【驱动笔记11】使用DeviceIoControl通信
文章作者:grayfox作者主页:http://nokyo.blogbus.com原始出处:http://www.blogbus.com/nokyo-logs/34018521.html 在我昨日发布 ...
- javascript Dictionary data structures
Dictionary常被称为数据字典,是一种用来保存键值对的数据结构,比如我们日常的电话本,就是一个Dictionary.我们通过键(名字),就可以访问到对应的值(电话号码).在C++与java中我们 ...
- CPD轮播广告库的简单算法
在广告的领域中,有一种广告形式,采用的是CPD的售卖模式,为了对流量进行拆分,媒体方会对广告位进行轮播拆分.比如一个广告位,被拆成了10轮播,那么在广告主来预订广告位的时候,这个时候就可以告诉广告主, ...
- Spring RestTemplate使用教程
简介 Spring'scentral class for synchronous client-side HTTP access.It simplifies communication with HT ...
- scratch资源
火柴人工作室:https://scratch.mit.edu/studios/170355/ 像素工作室:https://scratch.mit.edu/studios/3667398/ snap官网 ...
- kernel生成针对x86架构的tags和cscope数据库
最近下载了kernel的最新源码4.15版,但下载后的linux内核不仅包含了x86架构的函数还包含了如:arm.powerPC等等其他架构的函数,如果直接生成tags文件,将来查找时,多种架构的同名 ...