Android UI 之 ProgressBar、ProgressDialog、AlertDialog

03_用户界面(上) ViewGroup包含一些View或ViewGroup, 用于控制子View的布局。6). RadioGroup/RadioButton : 单选框。View在屏幕上占据一片矩形区域, 并会在上面进行内容绘制。View类是所有视图(包括ViewGroup)的根基类。2). EditText : 可编辑的文本视图。4). ImageView : 图片视图。1). TextView : 文本视图。5). CheckBox : 多选框。3). Button : 按钮。2.2. 菜单Menu。 阅读详情

参考:

http://www.cnblogs.com/plokmju/p/android_ProgressBar.html

http://www.oschina.net/question/157182_37992

《第一行代码》P100


一、ProgressBar

ProgressBar: 进度条
内置的进度条样式有两种写法,以水平进度条为例:

style="?android:attr/progressBarStyleHorizontal"
style="@android:style/Widget.ProgressBar.Horizontal"

效果如下:



常用属性:

android:max:设置进度的最大值。
android:progress:设置当前第一进度值。
android:secondaryProgress:设置当前第二进度值。
android:visibility:设置是否显示,默认显示。visible可见,invisible不可见但占据屏幕空间,gone不可见且不占用屏幕空间


设置第二进度后的效果如下:



动态控制进度条:

setProgress(int):设置当前进度值
incrementProgressBy(int):设置当前进度值的增量
setSecondaryProgress(int):与上类似
incrementSecondaryProgressBy(int):与上类似


设置可见性:

setVisibility(),一共三个参数,View.VISIBLE, View.INVISIBLE, View.GONE。对应XML的三个属性


其他样式都是圆形动画,无法控制进度。样式大同小异,如下:



二、ProgressDialog


简易用法:

private ProgressDialog progressDialog;

private void showProgressDialog() {
    if (progressDialog == null) {
        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("正在加载");
        progressDialog.setCanceledOnTouchOutside(false);
    }
    progressDialog.show();
}

private void closeProgressDialog() {
    if (progressDialog != null) {
        progressDialog.dismiss();
    }
}  

三、AlertDialog

简易用法:

/** 创建AlertDialog并显示 **/
private void showAlertDialog() {
    // 下面的设置项都是可选的
    AlertDialog.Builder alertD = new AlertDialog.Builder(this)
                .setTitle("这里是标题")
                .setIcon(R.drawable.ic_launcher) 
                .setMessage("这里是提示信息") 
                .setView(myLayout) // 要在AlertDialog中显示的自定义View对象
                .setCancelable(false) // 不能按手机的返回键取消
                .setPositiveButton("PositiveButton显示进度值", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // do something...
                    }
                })
                .setNegativeButton("NegativeButton取消", null); 
    alertD.create();
    // This allows the user to do any extra processing before displaying the dialog. 
    // Use show() if you don't have any other processing to do and want this to be created and displayed.
    alertD.show();
}

四、Demo

进度条相关的ProgressDialog、AlertDialog的Demo

activity_main.xml:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"> 
    
    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="圆进度条@android:style/Widget.ProgressBar"
        />
    <ProgressBar 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar"
        />
    
    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="圆进度条Style:?android:attr/progressBarStyle"
        />
    <ProgressBar 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyle"
        />

    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="长进度条@android:style/Widget.ProgressBar.Horizontal"
        />
    <ProgressBar 
        android:id="@+id/progressbar_horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Horizontal"
        />
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        
        <Button 
            android:id="@+id/button_Add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+"
            />
        
        <Button 
            android:id="@+id/button_Reduce"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-"
            android:layout_marginLeft="30dp"
            />
        
        <Button 
            android:id="@+id/button_visible"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="显/隐进度条"
            android:layout_marginLeft="30dp"
            />
        
    </LinearLayout>
     

    <Button 
        android:id="@+id/button_pd_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="圆形进度条的ProgressDialog"
        />
    <Button 
        android:id="@+id/button_ad_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="长方形进度条的AlertDialog"
        />
  
</LinearLayout>


my_view.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="horizontal"
    android:gravity="center_horizontal"
     >
     
    <Button 
        android:id="@+id/myView_reduce"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:text="-"
        />
    
    <ProgressBar 
        android:id="@+id/myView_progressBar"
        android:layout_width="178dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:progress="57"
        />
    
    <Button 
        android:id="@+id/myView_add"
        android:layout_height="wrap_content"
        android:layout_width="50dp"
        android:text="+"
        />
    
    

</LinearLayout>

MainActivity.java:

package com.example.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{
    
    private Button btnAdd, btnReduce, btnVisible, btnPb1, btnAd1, myUp, myDown;
    private ProgressBar pbHor, myPb;
    private AlertDialog.Builder alertD;
    private LayoutInflater layoutInflater;
    private LinearLayout myLayout;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setProgressBarVisibility(true);
        setContentView(R.layout.activity_main);
        
        btnAdd = (Button) findViewById(R.id.button_Add);
        btnReduce = (Button) findViewById(R.id.button_Reduce);
        btnVisible = (Button) findViewById(R.id.button_visible);
        btnPb1 = (Button) findViewById(R.id.button_pd_1);
        btnAd1 = (Button) findViewById(R.id.button_ad_1);
        pbHor = (ProgressBar) findViewById(R.id.progressbar_horizontal);
        
        btnAdd.setOnClickListener(this);
        btnReduce.setOnClickListener(this);
        btnVisible.setOnClickListener(this);
        btnPb1.setOnClickListener(this);
        btnAd1.setOnClickListener(this);
    }
    

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button_Add:
            if (pbHor.getProgress() <= 90) {
                pbHor.setProgress(pbHor.getProgress() + 10);
            } 
            break;
        case R.id.button_Reduce:
            if (pbHor.getProgress() >= 10) {
                pbHor.setProgress(pbHor.getProgress() - 10); 
            } 
            break;
        case R.id.button_visible:
            if (pbHor.getVisibility() == View.VISIBLE) {
                pbHor.setVisibility(View.GONE);
            } else {
                pbHor.setVisibility(View.VISIBLE);
            }
            break;
        case R.id.button_pd_1:
            // 创建一个ProgressDialog,不能写成如下一大串
            ProgressDialog mypDialog = new ProgressDialog(this);                
            // 默认为圆形风格,STYLE_HORIZONTAL则为长方形风格
            // mypDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            // 标题
            mypDialog.setTitle("KingLearnJava");
            // 提示信息
            mypDialog.setMessage(getResources().getString(R.string.pd_message));
            // 标题图标
            mypDialog.setIcon(R.drawable.ic_launcher);
            // 第一个按钮
            mypDialog.setButton("第一个按钮", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            // 第二个按钮
            mypDialog.setButton2("第二个按钮", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            // 进度条是否不明确
            mypDialog.setIndeterminate(false);
            // 是否可以按返回键取消
            mypDialog.setCancelable(true);
            // 显示
            mypDialog.show();
            break;
        case R.id.button_ad_1:
            // 这里用另一种方法来载入布局
            // 获得系统的布局过滤服务
            layoutInflater = (LayoutInflater) getSystemService(this.LAYOUT_INFLATER_SERVICE);
            // 得到事先设计好的布局
            myLayout = (LinearLayout) layoutInflater.inflate(R.layout.my_view, null);
            // 获得自定义View里的控件
            myUp = (Button) myLayout.findViewById(R.id.myView_add);
            myDown = (Button) myLayout.findViewById(R.id.myView_reduce);
            myPb = (ProgressBar) myLayout.findViewById(R.id.myView_progressBar);
            myUp.setOnClickListener(this);
            myDown.setOnClickListener(this);
            // 设置初始进度值
            myPb.setProgress(50);
            alertD = new AlertDialog.Builder(this)
                    .setTitle("这里是标题")
                    .setIcon(R.drawable.ic_launcher)
                    .setMessage("这里是提示信息")
                    .setView(myLayout)
                    .setCancelable(false) // 不能按手机的返回键取消
                    .setPositiveButton("PositiveButton显示进度值", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "现在的进度值是" + myPb.getProgress()
                                    , Toast.LENGTH_LONG).show();
                        }
                    })
                    .setNegativeButton("NegativeButton取消", null);
            alertD.show();
            break;
        case R.id.myView_add:
            myPb.incrementProgressBy(1);
            break;
        case R.id.myView_reduce:
            myPb.incrementProgressBy(-1);
            break;
        default:
            break;
        }
    }

}


效果如图:



安卓开发——UI组件之弹出组件 Toast Toast是一个消息提示组件 设置显示的位置 自定义显示内容(例如:添加一张图片) 简单封装 package com.example.zzm.helloworld; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View 阅读详情

相关推荐

Android入门(七) | 常用控件

文章目录TextView 控件Button 控件EditText 控件 TextView 控件 TextView 是 Android 中较常用的一个控件。主要用于在界面上显示一段文本信息,配置在每个活动的 xml 文件中。除了之前用到的 android:id、android:layout_width 、android:layout_height 三种属性,下面三种属性也比较常用: android:gravity :文字对齐方式,可选值有 top、bottom、left、right、center 等,可以

Jormungand_V的博客 6753

Android >> 25. ProgressBar \ AlertDialog \ ProgressDialog

ProgressBar ProgressBar 就是这个用于等待加载资源的控件 所有的安卓控件都具有三个属性: findViewById(R.id.progressBar).setVisibility(View.GONE); findViewById(R.id.progressBar).setVisibility(View.INVISIBLE); findViewById(R.id.progre...

原谅我这一生不羁放纵爱自由 402

android 对话框中的进度条 (ProgressDialog)

NULL 博文链接:https://byandby.iteye.com/blog/817214

ProgressBar与AlertDialog使用

ProgressBar与AlertDialog使用 1.ProgressBar进度条 (1)安卓控件可见属性android:visibility 可选值有三种: visible:控件可见,是默认值 invisible:不可见,但仍然占有屏幕空间 gone:不可见,也不占有屏幕空间 也可以不在布局文件中设置,而在代码中设置,使用setVisibility()方法,传入View.VISIBLE,Vie...

ytingyu 1133

鸿蒙日历组件进阶:教你打造个性化日程管理界面(支持月份切换)

本文深入探讨了鸿蒙应用开发中自定义日历组件的构建方法。通过详解基于Grid的布局设计、核心日期算法、月份切换逻辑以及事件管理集成,指导开发者打造支持个性化日程管理的高性能日历界面,提升应用交互体验。

weixin_29207149的博客 66

实战避坑:泛微E9流程接口与单点登录(SSO)开发全解析(含自定义Action、Restful API与免密登录)

本文深入解析泛微E9流程接口与单点登录(SSO)开发中的关键技术与避坑指南,涵盖自定义Action开发、Restful API鉴权机制及跨系统单点登录实现。通过实战案例与代码示例,帮助开发者高效完成二次开发,解决系统集成中的数据孤岛问题,提升企业信息化建设效率。

weixin_42549451的博客 674

多线程查询数据

多线程查询数据: 此处主要是对内存与数据的联系的理解,如使用到的地二级指针 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #define N 2027358 char **g_bh; void init(char *path) { //初始化 printf("init sta

liuguangsh的博客 2257

Rocky Linux 9.0国内yum源一键替换指南(上海交大镜像站实测)

本文详细介绍了如何将Rocky Linux 9.0的yum源替换为上海交大镜像站,以解决国内用户访问官方源速度慢的问题。通过实测验证,上海交大镜像站提供高速下载和稳定更新,并提供了完整的替换步骤、常见问题解决方案及高级优化配置,帮助用户提升软件包下载效率。

weixin_29304985的博客 362

android弹框显示进度条,android – 在警告对话框中显示进度条

我的应用程序中有一个用于登录身份验证的警告对话框.在发送请求时,我想显示一个进度条,如果响应是成功则想要解雇.如果有人知道,请帮助我.我使用下面的代码:final AlertDialog.Builder alert = new AlertDialog.Builder(this);LinearLayout login = new LinearLayout(this);TextView tvUserN...

weixin_39594191的博客 193

智能安防摄像头埋点实践:用户行为与设备状态的闭环监控(含AI事件)

智能安防摄像头埋点闭环体系设计及应用实践 摘要: 本文系统阐述了智能安防摄像头埋点闭环体系的设计与实践。首先分析了传统埋点的不足及闭环埋点的价值,提出由用户行为埋点、设备状态埋点和AI事件埋点构成的三维埋点体系框架。详细介绍了闭环监控的四大流程:数据采集、汇聚清洗、分析建模和智能决策。通过误报优化、个性化策略等案例展示了AI事件闭环的实际应用价值,并探讨了隐私合规、性能优化等关键挑战的解决思路。最后展望了端侧AI增强、预测型埋点等未来发展趋势。该体系实现了从数据采集到业务决策的完整闭环,有效提升了AI模型性

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 1046

将3DMax编辑的动画,导入给已经绑定蒙皮好的模型给Unity使用

现在程序猿想做独立游戏,即容易,也难。 说容易,引擎越来越傻瓜化。 说难,到哪去找靠谱的美术? 好在伟大的AssetStore(还有淘宝上)有大批不赖的资源可以用。 现成的模型,是好,但是,没有配套的动作,却是一件让人头疼的事情,即使用IK动画,也不能完美的弥补这一缺陷。 虽然Unity具备 retargeting 功能,但是,也不是万能的,很多情况下,非标准的骨骼会导致

正经的时候都在打游戏 1万+

AndroidStudio学习(二):TextView/Button/EditText/ImageView/ProgressBar/AlertDialog/ProgressDialog

教材:第一行代码(第2版) 新建项目UIWidgetTest: TextView //activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent"

fwt1226的博客 774

不提交也不释放的事务,数据库连接还有可能被复用

摘要 实验发现Spring事务管理下,未提交事务的数据库连接池连接仍可被复用,这与传统认知相悖。通过配置HikariCP连接池(最大2连接)并设计测试接口,观察到未提交事务的连接会被后续请求复用。这可能导致GTID错误(当MySQL开启GTID且混用事务/非事务表时)以及数据修改丢失问题。研究揭示了Spring事务管理机制与连接池交互的特殊行为,对高并发系统设计具有重要启示。

蔡定努 177

Android之常见UI控件

一、UI的定义 Android提供了一系列UI,这些UI可以为我们的界面提供布局和控件,使我们的界面变得美观、合理 二、常见的UI控件 2.1 TextView 作用:主要用于在界面上显示一段文本信息 TextView常见属性使用: <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_cont

Cristiano_san的博客 2545

点云从入门到精通技术详解100篇-点云的特征检测(续)

对每个维度的序列分别计算 DTW 距离,最后。权重将距离限制在较小的范围内,对于时间跨度大的数据集,过度限制了点对点的路径,同的,因此不能用欧氏距离来计算两个多元时间序列之间的距离,本文选用的是动态时。到的股票数据是未知分类的,因此该数据的相似性分析缺少有效的评价方式,通常需要。时间序列,简而言之,就是与时间相关的数据的集合,应用在生活工作中的方方面。时间序列的分段线性化表示的难点在于如何找出分段点,目前,对于分段点的研究。经过分段线性化之后,每个多元时间序列的维度是相同的,但是每一维的长度是不。

getusushu的博客 334

qtcreator使用远程服务器编译代码

我并没有找到很好的windows上可以用的rsync工具,最后是装了wsl来调用rsync同步到代码后,在用ssh调用linux命令来编译的。安装wsl安装ubuntu启动wsl然后把windows里的ssh文件证书和配置复制到wsl里同时config的key目录需要改一下,这样就可以登录服务器了然后在home目录创建build.sh进行远程编译。

习惯就好zz的专栏 1382

Android开发-java版:控件

介绍了Android开发中几个常见控件的使用方法,包括TextView、Button、EditText、ImageView等。主要涵盖:1)控件遮挡系统导航栏时添加fitsSystemWindows属性;2)控件的三种可见性设置;3)各控件的具体实现;4)进度条ProgressBar两种样式实现;5)AlertDialog可取消性设置。

Word_seeker的博客 465

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TextView,Button,EditText,ImageView,ProgressBar,AlterDialog,ProgressDialog

TextView的简单使用 常用属性: <!-- android:id="@+id/textview"TextView的id号 android:layout_width="match_parent"设置文本框的宽度与父容器相同 android:layout_height="wrap_content"高度自适应 android:text="Hello World!"设置显示文本 android:textColo

m0_61917410的博客 508

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

2、Android-UI(常用控件)

2.1、如何编写程序页面 Android中有许多编写程序的方式可供选择 Android Studio和Eclipse中都提供了响应的可视化编辑器 可以直接再进行拖动创建布局 推荐使用手动编写方式进行开发 2.2、常用空间的使用 1、TextView 是Android中最简单的控件 主要用于再界面上显示一段文本信息 <TextView and...

weixin_34418883的博客 150

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Android入门到项目实战--3.1】—— 七种常用控件的使用(TextView、Button、EditText、ImageView、ProgressBar、AlertDialog等)

Android七种常用控件的使用(TextView、Button、EditText、ImageView、ProgressBar、AlertDialog、ProgressDialog),详细讲解这些控件如何使用和使用场景。

个人博客 4991

Android 第五课 常用控件的使用方法(TextView、Button、EditView、 ImageView、 ProgressBar、 ProgressDialog等)

总结:见名知意TextView:Button:EditView:ImageView:ProgressBar:ProgressDialog和AlertDialog有些类似,都可以再界面弹出对话框,都能够屏蔽其他控件的交互能力,用法也类似。我们还发现ProgressDialog和AlertDialog不用在activity_layout.xml布局文件中写入,直接在MainActivity代码中通过按...

Jibert的博客 1275

Android 控件:ImageView、ProgressBar、AlertDialog、ProgressDialog

1、ImageView就是一个图片显示控件这个我就不记了,里面的难点恐怕就是获取src吧,这点我在【Android代码库】笔记目录已经记录了。 2、ProgressBar 这个是一个进度条控件,它有多种style,下面是它的style名称。 Android的ProgressBar样式:style="?android:attr/progressBarStyleHorizontal"

潜心修炼2016 835

安卓UI入门学习(android studio)(一)

一、UI控件的参数设置 ①在width中参数为match_parent即根据界面的大小自动控制大小,在height中的参数为wrap_content即为根据控件内字段的大小来确定控件的大小。 ②Android:gravity来确定控件中字段的对其方式,分别有top,bottom,left,right,center 而textSize与textColor分别用来确定字段的大小与颜色,textSize...

weixin_41796913的博客 588

Android中的常用控件

Android常用控件 ImageView ImageView是用来在界面上展示图片的一个控件,它封装了一些方法,用来显示图片,并且还可以通过设置一些布局中的样式来设置其显示的方式. 常用属性 src:用来设置显示的图片的地址,一般都是指定drawable或者mipmap文件夹中的图片 scaleType:用来设置图片在ImageView中显示的样式 常用方法 setImageResou...

bangqi5507的博客 250
上一篇: 《第一行代码》中的一个小例子
下一篇: requestWindowFeature使用详解
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值