Android ProgressBar 的使用
Android ProgressBar 分为水平进度条和圆形进度条, 看官方的划分是Indeterminate Progress(不确定的进度) 和 Determinate Progress(决定进度) 下面有2个demo 一个是圆形的进度条和一个水平的进度条
Indeterminate Progress:
当您不知道操作将花费多长时间时,请对进度栏使用不确定模式。不确定模式是进度条的默认模式,它显示循环动画,但未指示特定的进度
这也就是官方的圆形进度条一直在旋转的原因吧
Determinate Progress
如果要显示已发生特定数量的进度,请对进度栏使用确定模式。例如,要检索的文件的剩余百分比,批量写入数据库的记录数量或正在播放的音频文件的剩余百分比。
为了指示确定的进度,您可以将进度条的样式设置为,android.R.style#Widget_ProgressBar_Horizontal并设置进度量
这里说下 android.R.style#Widget_ProgressBar_Horizontal 就是设置样色的时候有2中方式
一种为: style="?android:attr/progressBarStyleHorizontal" 另一种为:style="@android:style/Widget.ProgressBar.Horizontal"
style="?android:attr/progressBarStyleHorizontal" 的方法是系统没有设置style ,背景色之类,等,
style="@android:style/Widget.ProgressBar.Horizontal" 的方法系统设置style,设置进度条背景色,宽度等,
下面是系统的设置 点击code 可以跳转系统设置的style 里面
<style name="Widget.ProgressBar.Horizontal"><item name="indeterminateOnly">false</item><item name="progressDrawable">@drawable/progress_horizontal</item><item name="indeterminateDrawable">@drawable/progress_indeterminate_horizontal</item><item name="minHeight">20dip</item><item name="maxHeight">20dip</item><item name="mirrorForRtl">true</item></style>
progressBar 的xml 属性如下XML属性
android:animationResolution 动画帧之间的超时(以毫秒为单位)。
android:indeterminate 允许启用不确定模式。
android:indeterminateBehavior 定义进度达到最大值时不确定模式应如何表现。
android:indeterminateDrawable 用于不确定模式的Drawable。
android:indeterminateDuration 不确定动画的持续时间。
android:indeterminateOnly 仅限于不确定模式(状态保持进度模式将不起作用)。
android:interpolator 设置不确定动画的加速度曲线。
android:max 定义最大值。
android:maxHeight 一个可选参数,用于为此视图提供最大高度。
android:maxWidth 提供此视图最大宽度的可选参数。
android:min 定义最小值。
android:minHeight 定义最低高度
android:minWidth 定义最低宽度
android:mirrorForRtl 定义在RTL模式下是否需要镜像关联的可绘制对象。
android:progress 定义默认进度值,介于0到最大值之间。
android:progressDrawable 可绘制用于进度模式。
android:secondaryProgress 定义二级进度值,介于0和最大值之间。
下面是使用系统的方法写的几个效果如下
圆形进度条
1 对于圆形进度条 要修改颜色值可以使用下面的方法
android:indeterminateTint="#00d8a0"
如下 这样就修改了系统圆形进度条的颜色了
<ProgressBarandroid:layout_width="100dp"android:layout_height="100dp"android:indeterminateTint="#00d8a0"android:indeterminate="false" />
2 圆形动画修改系统的样式 使用的方法 indeterminateDrawable
最下面的菊花就是修改了系统圆形的效果
代码如下
<ProgressBarandroid:layout_width="100dp"android:layout_height="100dp"android:indeterminateDrawable="@drawable/anim_drawable_bg" />
anim_drawable_bg 的code
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"android:drawable="@drawable/loading"android:fromDegrees="0.0"android:pivotX="50.0%"android:pivotY="50.0%"android:toDegrees="360.0" />
这样就是了一个菊花旋转的效果而,
如果要实现特殊的效果建议自定义了
如下的效果
代码参考 我的另一篇博客地址链接
水平进度条
需要设置属性 style="@android:style/Widget.ProgressBar.Horizontal" 或者 style="?android:attr/progressBarStyleHorizontal" 2中方法的区别上面都说了这里就不多说了
上面的进度code 如下
<ProgressBarandroid:id="@+id/sys_progress"style="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="30dp"android:layout_marginTop="20dp"android:max="100" /><ProgressBarandroid:id="@+id/hori_progress"style="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="20dp"android:layout_marginTop="20dp"android:max="100"android:progress="0"android:progressDrawable="@drawable/hori_progress_drawable_bg" /><ProgressBarandroid:id="@+id/send_progress"style="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="30dp"android:layout_marginTop="20dp"android:max="100"android:progress="50"android:progressDrawable="@drawable/send_progress_bg"android:secondaryProgress="70" />
水平进度条需要画几个背景色, 进度条的背景色, 缓冲进度条的背景色(没有这个需求可以不要) 进度条的背景色
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!-- 进度条的背景色--><item android:id="@android:id/background"><shape><corners android:radius="5dp" /><solid android:color="@android:color/holo_green_dark" /></shape></item><!-- 缓冲进度条的背景色--><item android:id="@android:id/secondaryProgress"><clip><shape><corners android:radius="5dp" /><solid android:color="@android:color/darker_gray" /></shape></clip></item><!-- 进度条的背景色--><item android:id="@android:id/progress"><clip><shape><corners android:radius="5dp" /><solid android:color="@android:color/holo_orange_dark"/></shape></clip></item>
</layer-list>
main code
public class HorizontalActivity extends AppCompatActivity implements Handler.Callback {private ProgressBar progressBar;private ProgressBar sysProgressBar;private ProgressBar send_progress;private Handler handler;private int progress = 0;private int sendProgress = 0;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.horizontal_activity_layout);progressBar = findViewById(R.id.hori_progress);sysProgressBar = findViewById(R.id.sys_progress);send_progress = findViewById(R.id.send_progress);handler = new Handler(this);// 循环方法1handler.postDelayed(new Runnable() {@Overridepublic void run() {handler.postDelayed(this, 50);handler.sendEmptyMessage(1);}}, 0);// 循环方法2// new Thread(new Runnable() {// @Override// public void run() {// try {// //子线程循环间隔消息// while (progress < 100) {// Message msg = new Message();// msg.what = 1;// handler.sendMessage(msg);// Thread.sleep(50);// }// } catch (InterruptedException e) {// e.printStackTrace();// }// }// }).start();}@Overridepublic boolean handleMessage(Message msg) {switch (msg.what) {case 1:if (progress == 100) {progress = 0;sendProgress = 0;} else {progress++;sendProgress = 5 + sendProgress;}progressBar.setProgress(progress);sysProgressBar.setProgress(progress);send_progress.setProgress(progress);send_progress.setSecondaryProgress(sendProgress);break;}return false;}
}
progress 还有几个其他的属性,设置,大小之类的,感觉实用性不强,这里就不列举了,
Android ProgressBar 的使用相关推荐
- 使用Kotlin的Android ProgressBar
In this tutorial, we'll discuss and implement ProgressBar in our Android Application using Kotlin. 在 ...
- Android ProgressBar示例
Welcome to Android ProgressBar Example. Today we'll implement android ProgressBar in our application ...
- android progressbar 循环,Android ProgressBar消失
我有一个不确定的android progressbar,所以它只是一个循环动画. 它开始显示很好,但是在我设置了它的父对象的可见性之后( overlayLayout )若要消失或不可见,然后稍后将其设 ...
- Android ProgressBar控件
1. ProgressBar类 ProgressBar用于显示进度条,进度条有两种不同的样式,选择和水平,通过设置style来区分. 旋转进度条,有大.中.小三种样式. style="?an ...
- Android ProgressBar 加载中界面实现(loading 动画) 实现菊花的效果
实现的效果图如下: 使用方法ProgressBar ,如果感觉 这个动画不是自己想要的,需要根据ui的图片来实现只需要将xml中的animated-rotate 修改为animation-list 贴 ...
- 使用android ProgressBar和Toast生成一个界面
为什么80%的码农都做不了架构师?>>> 首先我需要这样一个界面 这个界面是在使用AudioManager.adjustStreamVolume(int streamType, ...
- Android 基础教程之-------Android ProgressBar的使用!
大家好,今天给大家讲一下Android中ProgressBar的使用,这个控件在开发中还是经常用到的,比如用户浏览网页的时候,中间肯定有个 传输过程,所以用进度条让用户耐心等待.再比如我在Androi ...
- android ProgressBar 使用方法
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android=&quo ...
- Android ProgressBar 反向进度条/进度条从右到左走
近期的项目,有个需求须要使用条状图显示比例,而且右对齐,见下图: 我想到了使用进度条,这样不就不须要在代码动态绘制条状了,省了非常多活. 那么进度条如何从右向左显示呢? 方案一: 将ProgressB ...
最新文章
- 第36章 网络管理
- boost的字符串处理函数——format
- 让你的eclipse插件只下载一次
- 服务器智能监控软件,监控 监控系统 消防智能监控 智能监控软件
- “金主爸爸快回来交学费吧!”疫情让中国留学生难以返校,国外高校面临资金短缺...
- Ubantu键盘快捷键
- 图片合成gif_谈谈有哪些好用的制作GIF的方式
- java中的字符串_java中字符串的操作
- 另辟蹊径:从其他角度去解决数据库问题
- C++之构造函数和类型转换探究
- python filter_Python filter()
- 关于jQuery性能优化
- 20181109_任务
- python opencv视频流_python – PyQt显示来自opencv的视频流
- 编程珠玑java_编程珠玑第八章
- 禁用word公式编辑器
- 客户端,从服务器上下载文件流程
- 苹果开发者注册了邓白氏编码不能用,查询时提示该组织不存在怎么办?
- 上手评测:华为nova8和nova7Pro哪个好?区别是什么
- 【Vivado】 [Place 30-574] 时钟使用普通IO时的报错解决办法
热门文章
- 一文读懂误差的偏差方差
- oracle if not exist,使用IF NOT EXISTS创建数据表
- turtle画画 画图形
- 华三路由器链路聚合配置(H3C华三链路聚合的原理)
- vim 保存只读文件的修改
- C++程序安装包被病毒篡改导致启动报错
- CPU缓存与性能优化
- python两个字符串查找公共字符串
- ElasticSearch(五) 倒排索引与分词
- 吴建国 安徽大学 计算机学院,一场高质量、高层次的教育研讨会--中国科学技术大学、安徽大学、解放军电子工程学院教授莅临我院指导纪实...