一起Talk Android吧(第五百四十二回:无进度值ProgressBar)

news2024/11/23 16:39:38

文章目录

  • 概念介绍
  • 使用资源文件实现
    • 使用默认设置
    • 修改风格
    • 使用动画资源
  • 使用代码实现
  • 经验总结

各位看官们大家好,上一回中咱们说的例子是"ProgressBar总结",本章回中介绍的例子是" 无进度值ProgressBar"。闲话休提,言归正转,让我们一起Talk Android吧!

概念介绍

我们在这里说的无进度值ProgressBar表示进度条从0开始一直变化到最大值,然后反复循环。这种情况用在一些没有具体进度值的过程中,比如搜索无线网络。本章回中我们将介绍如何使用无进度值ProgressBar.

使用资源文件实现

使用默认设置

我们在布局中直接使用默认的进度条,它会产生一个绿色的圆形进度条,示例代码如下:

<ProgressBar
    android:layout_width="match_parent"
    android:layout_height="60dp">
</ProgressBar>

该代码的运行效果如下:
在这里插入图片描述

我们也可以把圆形的进度条换成水平的,它会产生一个绿色的矩形进度条代码如下:

<ProgressBar
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:indeterminate="true"
    android:layout_width="match_parent"
    android:layout_height="60dp">
</ProgressBar>

注意代码中打开了indeterminate属性,这样才能有反复循环的效果。下面是程序运行的效果图:
在这里插入图片描述

修改风格

默认的进度条颜色为绿色(与App的主题有关),我们可以通过修改indeterminateDrawable的属性值来修改它的颜色,示例代码如下:

<ProgressBar
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:indeterminate="true"
    android:indeterminateDrawable="@drawable/progress_bar_indeterminate"
    android:layout_width="match_parent"
    android:layout_height="60dp">
</ProgressBar>
<!-- progress_bar_indeterminate.xml的内容如下 -->
<?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="6dp" />
        <gradient
            android:startColor="#33FFFFFF"
            android:centerColor="#33FFFFFF"
            android:centerX="0.75"
            android:endColor="#33FFFFFF"
            android:angle="0"
            />
    </shape>
</item>
<!-- 第二进度条 -->
<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="6dp" />

            <gradient
                android:startColor="#33FFFFFF"
                android:centerColor="@color/white"
                android:centerX="0.75"
                android:endColor="#33FFFFFF"
                android:angle="0"
                />
        </shape>
    </clip>
</item>

<!--    前景进度条-->
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="6dp" />
            <gradient
                android:startColor="@color/white"
                android:centerColor="#F3A32C"
                android:centerX="0.5"
                android:endColor="#ff0000"
                android:angle="0"
                />
        </shape>
    </clip>
</item>
</layer-list>

代码中的颜色是参考默认配色修改的,我们将其修改成了白色->橙色->红色这样的渐变色,此外,为了突出白色和透明色的进度条背景,我们把布局文件的背景修改成了蓝色,下面是该程序的运行效果:
在这里插入图片描述

使用动画资源

<ProgressBar
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:indeterminate="true"
    android:indeterminateDrawable="@drawable/line_animation_list"
    android:layout_width="match_parent"
    android:layout_height="60dp">
</ProgressBar>

示例代码和上的一样,只是indeterminateDrawable的属性值变成了line_animation_list,这是一个动画文件,该动画文件也是参考源代码文件修改的,只是使用了自已的配色,详细的内容将在后面的章回中介绍。下面是程序的运行效果图:
在这里插入图片描述

使用代码实现

在布局文件中给progressBar设置最大进度值为100,同时不设置indeterminateindeterminateDrawable属性,在代码中不断地修改它的进度值,示例代码如下:

private ProgressBar mProgressBar;
private int value = 0;

private class SubHandler extends Handler {
    @Override
    public void handleMessage(@NonNull Message msg) {
        super.handleMessage(msg);
        
        if(value == 100) {
            value %= 100;
        }
        mProgressBar.setProgress(value);
        value++;
        mSubHandler.sendMessage(message);
    }
}

这里的核心思路在于进度条的最大进度值为100,每次更新完进度值后把进度值加1,当进度值到达100后将其通过取模恢复为0。注意更新进度值需要通过Handler来进行。

经验总结

实现无进度值进度条有两种方法:

  • 通过资源文件实现;
  • 通过代码实现;

使用资源文件实现时需要配置indeterminateindeterminateDrawable属性。前者表示无限循环,后者用来设置进度条的风格,设置风格有两种:一种是layer-list包含的图层文件,一种是animation-list包含的动画文件。不过这两种文件都属性drawable文件。

使用代码文件实现时需要配置max属性,然后在代码中通过Handler修改进度值。至于进度条的风格可以通过progressDrawable属性来设置。这个属性参考上一回中的内容就可以。

看官们,关于"无进度值ProgressBar"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux相关操作

1 系统调用 通过strace直接看程序运行过程中的系统调用情况 其中每一行为一个systemcall &#xff0c;调用write系统调用将内容最终输出。 无论什么编程语言都必须通过系统调用向内核发起请求。 sar查看进程分别在用户模式和内核模式下的运行时间占比情况&#xff0c; ALL显…

MySQL的where表达式中的各种运算符的用法和细节

MySQL的where表达式中的各种运算符的用法和细节 小故事mysql运算符分类where表达式中的运算符between and 和 and运算符的区别in运算符需要注意的点 小故事 今天在研究mysql的where表达式中的运算符的时候&#xff0c;遇到一个有意思的问题。 问题是&#xff1a;以id为主键&am…

玩机搞机----修改手机各项参数工具解析 过验证 变新机

任何的芯片原则上都可以修改当前机型的任何参数。包括但不限于高通 MTk 展讯..... 等其他芯片。众所周知&#xff0c;有的机型 有的版本可以直接修改&#xff0c;有的不行。至于具体原因可以参考我以往的帖子 安卓玩机搞机技巧综合资源-----修复基带 改串码 基带qcn 改相关参数…

三、c++学习(指针引用详解)

上一次直播好像过去很久了&#xff0c;中间有加班&#xff0c;有5 1假期等&#xff0c;现在5 1放假完了&#xff0c;所以继续卷。 C学习&#xff0c;b站直播视频 3.1 指针 这个指针&#xff0c;考虑了很久&#xff0c;一直不知道在哪个地方介绍&#xff0c;为啥纠结&#xf…

Solr(2):Solr的安装

1 安装前的概述 &#xff08;1&#xff09;solr是基于lucene而lucene是java写的&#xff0c;所以solr需要jdk----当前安装的solr-7.5需要jdk-1.8及以上版本&#xff0c;下载安装jdk并设置JAVA_HOME即可。 &#xff08;2&#xff09;下载solr&#xff0c;然后解压即可&#xf…

Map对象的用法(JS)

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 MapkeyMap常用语法Map其他语法创建map的其他方式 Map Map是一个键值对形式…

FPGA设计之控制集优化详解

目录 一、前言 二、Control Set控制集 三、Control Set控制集优化 四、优劣 一、前言 在工程设计优化中&#xff0c;综合阶段优化中有一项常见的优化&#xff0c;控制集&#xff08;control set&#xff09;优化&#xff0c;在vivado的Synthesis中有对该配置项的解释&#x…

Android Jetpack组件化之ORM 数据库访问框架详解

一、对象关系映射 - ORM / Object Relational Mapping Android 系统中使用的数据库是 SQLite 关系型数据库 , 使用 Android 提供的 api 访问 SQLite 数据库非常繁琐 , 由此出现了很多 ORM 框架 ; ORM 英文全称 Object Relational Mapping , 对象关系映射 ; 对象关系映射 ORM …

“智能指针:C++中优雅的内存管理解决方案“

前言 欢迎来到&#x1f496;小K&#x1f496;的&#x1f49e;C专栏&#x1f49e;&#xff0c;内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况&#xff0c;这是C和C程序员的噩梦之一。本节将为大家带来解决办法—>智能指针 文章目录 前言1、简介2、为什么…

【移动端网页布局】flex 弹性布局 ⑤ ( 设置侧轴单行子元素排列方式 | align-items 样式说明 | 代码示例 )

文章目录 一、设置子元素是否换行 : align-items 样式说明1、 align-items 样式引入2、 align-items 样式属性值 二、代码示例1、 代码示例 - 默认样式2、 代码示例 - 设置主轴水平居中3、 代码示例 - 设置侧轴垂直居中4、 代码示例 - 设置侧轴从下到上排列5、 代码示例 - 设置…

C++之类和对象(二)

目录 前言 类的6个默认成员函数 1.构造函数 1.1 概念 1.2 特性 2. 析构函数 2.1 概念 2.2 特性 3. 拷贝构造函数 3.1 概念 3.2 特征 4.赋值运算符重载 4.1 运算符重载 4.2.赋值运算符重载 4.3 前置和后置重载 5. .const成员 6.取地址及const取地址操作符重载 前…

【二叉搜索树】

1 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树 &#xff0c;或者是具有以下性质的二叉树 : 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值 它的左…

Android“真正的”模块化

作者&#xff1a;bytebeats 模块化背后的原则概述 “如果说SOLID原则告诉我们如何将砖块排列成墙和房间, 那么组件原则则告诉我们如何将房间排列成建筑.” ~ Robert C. Martin, Clean Architecture 你应该分层打包还是分特性打包?还有其他方法吗? 如何提高项目的编译时间? 你…

将Python环境迁移到另一台设备上

本方法可以将一台电脑上的python环境迁移到另一台电脑上&#xff0c;可以省去一个一个包pip的麻烦。本文以pytorch的迁移为例。 一、从源环境备份安装包 在原来的电脑的Conda控制台中使用语句 pip freeze > c:\myrequirement.txt 后面跟的参数是文件的路径和文件名&#x…

Spring MVC自定义拦截器--Spring MVC异常处理

目录 自定义拦截器 什么是拦截器 ● 说明 自定义拦截器执行流程分析图 ● 自定义拦截器执行流程说明 自定义拦截器应用实例 ● 应用实例需求 创建MyInterceptor01 创建FurnHandler类 在 springDispatcherServlet-servlet.xml 配置拦截器 第一种配置方式 第二种配置方…

linux 互斥量pthread_mutex

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e; 目录 前言 概述 原理 初始化 进程和线程使用的不同点 死锁 接口 基本API 属性设置 …

探索机器翻译:从统计机器翻译到神经机器翻译

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Osek网络管理及ETAS实现

OSEK/VDX&#xff08;Offene Systeme und deren Schnittstellen fr die Elektronik in Kraftfahrzeugen / Vehicle Distributed eXecutive&#xff09;是一种用于嵌入式系统&#xff08;尤其是汽车电子控制单元&#xff09;的开放标准。它旨在提供一种统一、可互操作的软件架构…

关于 《python 从入门到实践》的 matplotlib 随机漫步小项目

使用 python 生成随机漫步数据&#xff0c;再使用 matplotlib 将数据呈现。 所谓随机漫步&#xff1a; 每次行走的路径都是完全随机的&#xff0c;就像蚂蚁在晕头转向的情况下&#xff0c;每次都沿随机方向前行路径。 在自然界&#xff0c;物理学&#xff0c;生物学&#xff0…

【Linux】Job for network.service failed(网卡启动报错)

上图是Linux网卡启动报错的情况 这是由于cat/etc/sysconfig/network-scripts/ifcfg-xxx 中HWADDR的MAC地址和ifconfig中的MAC地址不一样&#xff0c;或者缺少cat/etc/sysconfig/network-scripts/ifcfg-xxx 中HWADDR的MAC地址 1.查看ifconfig中的MAC地址 图中00&#xff1a;0c…