如何在android中实现材料设计圆形进度条

     2023-02-22     241

关键词:

【中文标题】如何在android中实现材料设计圆形进度条【英文标题】:How to implement a material design circular progress bar in android 【发布时间】:2015-01-05 01:04:38 【问题描述】:

我想制作一个类似于 Inbox by Gmail android 应用中的 Material Design 圆形进度条。我如何实现这一点(在棒棒糖之前的设备中)?

我正在尝试实现类似的效果。 Inbox by Gmail material design circular progress bar

【问题讨论】:

github.com/passsy/android-HoloCircularProgressBar 帮助你的完整链接github.com/Sefford/CircularProgressDrawable 按照Prajwal 的建议,尝试使用 Mohammed AG 提供的 xposed 模块平滑系统进度条。 @Zapnologica 他们的示例仅适用于 android 棒棒糖设备,加载微调器内置于棒棒糖中,但我正在寻找或方法将其移植回较低的 android 版本 @cozeJ4 我希望支持库能够提供这样的东西。 【参考方案1】:
<ProgressBar
android:id="@+id/loading_spinner"
android:layout_
android:layout_
android:indeterminateTintMode="src_atop"
android:indeterminateTint="@color/your_customized_color"
android:layout_gravity="center" />

效果如下:

【讨论】:

这不适用于棒棒糖之前的设备。 Pre Lollipop 设备使用不同的旋转drawable【参考方案2】:

材料设计圆形进度条的不错实现(来自rahatarmanahmed/CircularProgressView),

<com.github.rahatarmanahmed.cpv.CircularProgressView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/progress_view"
    android:layout_
    android:layout_
    app:cpv_indeterminate="true"/>

【讨论】:

嗨 Fahim,你所说的 Native progressBar 是什么意思?那是来自Android平台吗?我想实现相同类型的对话框,如果它可以从 android 本身或任何支持库中获得,效果会更好。 @cgr Native ProgressBar 是使用 Android SDK 实现的进度条。如果您在两个具有不同 Android 风格的设备(例如:Jelly Beans 和 Lollipop)上运行此应用程序,您将看到不同的进度条。自己试试吧。 超级简单,谢谢。添加不透明背景颜色的最佳方法是什么?就像我想在一个更大的白色背景圆圈上做一个带有黑色圆弧圈的 gmail 类型的指示器?【参考方案3】:

我已将三个 Material Design 进度可绘制对象向后移植到 Android 4.0,它可以用作常规 ProgressBar 的直接替代品,外观完全相同。

这些可绘制对象还向后移植了着色 API(和 RTL 支持),并使用 ?colorControlActivated 作为默认着色。为方便起见,还引入了扩展 ProgressBarMaterialProgressBar 小部件。

DreaminginCodeZH/MaterialProgressBar

该项目也已被afollestad/material-dialogs 用于进度对话框。

在 Android 4.4.4 上:

在 Android 5.1.1 上:

【讨论】:

感谢您的所有努力!很棒的图书馆!坚持下去! 非常优雅的解决方案,在我看来是最好的解决方案 感谢图书馆!有没有办法改变微调器的颜色? @Roymunson 查看自述文件和关于 app:mpb_progressTint 等的段落【参考方案4】:

更新

截至 2019 年,这可以使用 Material Components 库中的 ProgressIndicator 轻松实现,与 Widget.MaterialComponents.ProgressIndicator.Circular.Indeterminate 样式一起使用。

更多详情请查看 Gabriele Mariotti's 下面回答。

旧实现

这里是材料设计圆形中间进度条https://gist.github.com/castorflex/4e46a9dc2c3a4245a28e 的一个很棒的实现。该实现仅缺乏通过 android 应用程序在收件箱中添加各种颜色的能力,但这做得非常好。

【讨论】:

【参考方案5】:

通过材料组件库,您可以使用CircularProgressIndicator

类似:

<com.google.android.material.progressindicator.CircularProgressIndicator
      android:indeterminate="true"          
      android:layout_
      android:layout_
      app:indicatorColor="@array/progress_colors"
      app:indicatorSize="xxdp"
      app:indeterminateAnimationType="contiguous"/>

array/progress_colors 是一个包含颜色的数组:

  <integer-array name="progress_colors">
    <item>@color/yellow_500</item>
    <item>@color/blue_700</item>
    <item>@color/red_500</item>
  </integer-array>

注意:至少需要版本1.3.0

【讨论】:

这个进度条的支持是什么,它在 PreLolipop 上工作吗? @StoychoAndreev 目前 minSdk = 14 Tnx 获取您的代码。但是这个类没有像“circularRadius”和“growMode”这样的属性。如果存在,请纠正我。 @GabrieleMariotti 再次感谢您的编辑。我想建议编辑,但不允许编辑答案。 @Web。检查此链接:developer.android.com/guide/topics/resources/…【参考方案6】:

除了 cozeJ4 的 答案,这里是updated version of that gist

原始版本缺少导入并包含一些错误。这个可以使用了。

【讨论】:

您能解释一下我们如何使用它吗? 复制这些类,将包更改为项目的包,并在布局中使用 MaterialProgressBar 作为视图,仅此而已 但我想在异步任务结束时显示这个,pro.bar aiso 必须完成。 哇!多谢,伙计。使用 com.rey.material 库使我免于许多麻烦。 你也有线性版本吗?【参考方案7】:

该平台使用矢量可绘制对象,因此您不能像在旧版本中那样重复使用它。 但是,支持 lib v4 包含此可绘制对象的反向移植: http://androidxref.com/5.1.0_r1/xref/frameworks/support/v4/java/android/support/v4/widget/MaterialProgressDrawable.java 它有一个 @hide 注释(这里是 SwipeRefreshLayout),但没有什么能阻止你在代码库中复制这个类。

【讨论】:

好吧,现在我们有了 VectorDrawableCompat,你也许可以重复使用同一个 drawable【参考方案8】:

正在寻找一种使用简单的xml 的方法,但找不到任何有用的答案,所以想出了这个。

这也适用于棒棒糖之前的版本,并且非常接近材料设计进度条。你只需要在ProgressBar布局中使用这个drawable作为indeterminate drawable

<?xml version="1.0" encoding="utf-8"?><!--<layer-list>-->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="360">
    <layer-list>
        <item>
            <rotate xmlns:android="http://schemas.android.com/apk/res/android"
                android:fromDegrees="-90"
                android:toDegrees="-90">
                <shape
                    android:innerRadiusRatio="2.5"
                    android:shape="ring"
                    android:thickness="2dp"
                    android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 -->

                    <gradient
                        android:angle="0"
                        android:endColor="#007DD6"
                        android:startColor="#007DD6"
                        android:type="sweep"
                        android:useLevel="false" />
                </shape>
            </rotate>
        </item>
        <item>
            <rotate xmlns:android="http://schemas.android.com/apk/res/android"
                android:fromDegrees="0"
                android:toDegrees="270">
                <shape
                    android:innerRadiusRatio="2.6"
                    android:shape="ring"
                    android:thickness="4dp"
                    android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 -->
                    <gradient
                        android:angle="0"
                        android:centerColor="#FFF"
                        android:endColor="#FFF"
                        android:startColor="#FFF"
                        android:useLevel="false" />
                </shape>
            </rotate>
        </item>
    </layer-list>
</rotate>

在ProgressBar中设置上述drawable如下:

  android:indeterminatedrawable="@drawable/above_drawable"

【讨论】:

未知属性 android:indeterminatedrawable 动画完全不同。

如何只实现一个圆形进度条,直到图像被滑动加载

】如何只实现一个圆形进度条,直到图像被滑动加载【英文标题】:Howtoimplementonlyonecircularprogressbaruntilimagesareloadedwithglide【发布时间】:2021-08-2406:49:15【问题描述】:您好,我只想实现一个圆形进度动画,直到从滑行加载图像,... 查看详情

如何在Android中创建一个在其上旋转的圆形进度条?

】如何在Android中创建一个在其上旋转的圆形进度条?【英文标题】:HowtoCreateacircularprogressbarinAndroidwhichrotatesonit?【发布时间】:2014-02-1512:25:24【问题描述】:我正在尝试创建一个圆形进度条。这就是我想要实现的目标有一个灰... 查看详情

java示例代码_在Android 2.1中实现圆形标签+

java示例代码_在Android 2.1中实现圆形标签+ 查看详情

linux中实现一个简单的进度条

转自:http://blog.csdn.net/yuehailin/article/details/53999288说起进度条,其实大家常常见到,比如说你在下载视频或文件的时候,提示你当前下载进度的就是我们今天要说的进度条,进度条的模拟实现是挺简单的,但是要做的比较实用还... 查看详情

如何更改圆形进度条的颜色?

...gressbar?【发布时间】:2011-07-1707:03:54【问题描述】:我在Android上使用循环进度条。我想改变它的颜色。我正在使用"?android:attr/progressBarStyleLargeInverse"风格。那么如何改变进度条的颜色呢。如何自定义样式?另外,风格的定义是什... 查看详情

如何在反应材料-ui自动完成中实现最小字符长度功能

】如何在反应材料-ui自动完成中实现最小字符长度功能【英文标题】:Howtoachieveminimumcharacterlengthfeatureinreactmaterial-ui\'sautocomplete【发布时间】:2017-10-1319:33:45【问题描述】:我想在reactmaterial-uiautocomplete组件中实现“最小字符长度... 查看详情

如何结合这些命令在 ImageMagick 中实现圆形裁剪?

】如何结合这些命令在ImageMagick中实现圆形裁剪?【英文标题】:HowcanIcombinethesecommandstoachievecircularcropinImageMagick?【发布时间】:2017-01-3113:55:12【问题描述】:所以这个命令有效:convert-size200x200xc:none-fillsamia.jpg-draw"circle100,100100,1"... 查看详情

如何在 iPhone 应用程序中实现半圆形按钮

】如何在iPhone应用程序中实现半圆形按钮【英文标题】:HowcanIimplementsemicircle-shapedbuttonsiniPhoneapplications【发布时间】:2011-11-0804:23:21【问题描述】:我在Photoshop中设计了一个iPhone应用程序。我将PSD文件转换为PNG格式。我发现很难... 查看详情

如何在角度材料中实现 Sidenav、页眉和页脚?

】如何在角度材料中实现Sidenav、页眉和页脚?【英文标题】:HowtoimplementSidenav,Header&Footerinangularmaterial?【发布时间】:2021-01-1719:54:22【问题描述】:我正在尝试在Angular中使用经典的页眉、页脚和侧边栏导航和AngularMaterial。但... 查看详情

如何在kivy中制作圆形进度条?

】如何在kivy中制作圆形进度条?【英文标题】:Howtomakecircularprogressbarinkivy?【发布时间】:2018-11-0516:04:11【问题描述】:我想用kivy和python制作一个简单的圆形进度条。我搜索了在线文档和GitHub曲目,但没有找到解释循环进度条... 查看详情

如何在iOS中实现矩形UIButton到圆形的漂亮动画?

】如何在iOS中实现矩形UIButton到圆形的漂亮动画?【英文标题】:HowtoimplementniceanimationforrectangleUIButtontocircleshapeiniOS?【发布时间】:2015-09-1105:27:15【问题描述】:当我点击“登录”按钮时,我需要制作我的矩形登录按钮LoginScreensh... 查看详情

我应该如何在角度材料中实现多项选择选项?

】我应该如何在角度材料中实现多项选择选项?【英文标题】:HowamIsupposedtoimplementmultipleselectoptioninangular-material?【发布时间】:2015-04-2317:22:12【问题描述】:我已经检查了文档和演示,但是唉!!我还没有找到任何关于使用angul... 查看详情

如何使用 Swift 在 UIView 中将圆形进度条居中?

】如何使用Swift在UIView中将圆形进度条居中?【英文标题】:HowcanIcentreacircularprogressbarinaUIViewusingSwift?【发布时间】:2020-09-0119:53:23【问题描述】:我很难确保圆形进度条始终位于与其关联的UIView的中心。这是正在发生的事情:... 查看详情

如何重新加载圆形进度条

】如何重新加载圆形进度条【英文标题】:howtoreloadacircularprogressbar【发布时间】:2015-12-0921:59:58【问题描述】:我对画布以及如何创建圆形进度条进行了一些网络搜索,我得到了这个。我对在网上找到的代码片段进行了一些更... 查看详情

如何在matlab中实现灰度形态检测灰度图像上的圆形物体?

】如何在matlab中实现灰度形态检测灰度图像上的圆形物体?【英文标题】:HowtoimplementGrayscalemorphologytodetectroundobjectongrayscaleimageinmatlab?【发布时间】:2016-05-1810:45:34【问题描述】:有许多方法可以在二值图像上实现数学变形,例... 查看详情

如何从对象类型中动态获取值并在扩展面板角材料中实现?

】如何从对象类型中动态获取值并在扩展面板角材料中实现?【英文标题】:HowtodynamicallygetthevaluesfromObjectTypeandimplementinExpansionpanelAngularmaterial?【发布时间】:2020-10-2521:00:24【问题描述】:场景:使用JSON动态显示扩展面板名称和... 查看详情

圆形进度条 Android

】圆形进度条Android【英文标题】:CircularProgressBarAndroid【发布时间】:2015-06-0320:06:35【问题描述】:我想创建一个分段的圆形进度条,其行为类似于倒数计时器,这样每个分段都有自己的时间限制。有一个iOS应用pTimer+,我想在An... 查看详情

如何创建圆形样式进度条

】如何创建圆形样式进度条【英文标题】:HowtocreateaCircularStyleProgressBar【发布时间】:2011-06-1918:24:09【问题描述】:我需要帮助来实现这样的循环进度条:我应该如何通过增加Value属性来实现Circle来填充?【问题讨论】:相关链... 查看详情