带圆角的进度条?

     2023-04-18     51

关键词:

【中文标题】带圆角的进度条?【英文标题】:Progress bar with rounded corners? 【发布时间】:2017-07-27 13:25:35 【问题描述】:

我正在尝试实现这个进度条设计:

我拥有的当前代码产生了这个:

这是代码:

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="8dp"/>
        <solid android:color="@color/dirtyWhite"/>
    </shape>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="8dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </clip>
</item>

我的进度条:

 <ProgressBar
            android:id="@+id/activeProgress"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:progress="10"
            android:progressDrawable="@drawable/rounded_corners_progress_bar"/>

我尝试在&lt;clip 中的&lt;shape&gt; 上添加&lt;size&gt; 属性,以使进度形状更小一些,但它不起作用。另外,进度条是平的,我想按照设计弯曲。为了实现设计,我需要改变什么?

【问题讨论】:

github.com/akexorcist/Android-RoundCornerProgressBar 【参考方案1】:

如何让进度形状变小一点?

您需要为进度项添加一点填充,如下所示:

<item android:id="@android:id/progress"
    android:top="2dp"
    android:bottom="2dp"
    android:left="2dp"
    android:right="2dp">

如何让进度条按设计弯曲?

&lt;clip&gt;&lt;/clip&gt; 元素替换为&lt;scale android:scaleWidth="100%"&gt;&lt;/scale&gt;。这将使形状在生长时保持其形状 - 而不是切断。 不幸的是,它在开始时会有一点不想要的视觉效果——因为形状角没有足够的空间来绘制。但这对于大多数情况来说可能已经足够了。

完整代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:id="@android:id/background">
    <shape>
        <corners android:radius="8dp"/>
        <solid android:color="@color/dirtyWhite"/>
    </shape>
 </item>

 <item android:id="@android:id/progress"
    android:top="1dp"
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp">

    <scale android:scaleWidth="100%">
        <shape>
            <corners android:radius="8dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </scale>
 </item>
</layer-list>

【讨论】:

@habibullah 使用本机 ProgressBar 和 Layer-List 非常有限制。您可以轻松实现自定义进度条以满足您的需求。例如,如果您有纯色背景 - 只需使用前景 9 路径来隐藏除进度之外的所有内容。如果您的目标是较新的 Android 版本,您可以简单地使用内置的掩码支持(旧版本不支持)。另一种选择是使用库,这可能对您有好处:github.com/akexorcist/Android-RoundCornerProgressBar。如果您仍然有问题,请发布一个新问题。干杯。 @AkshayMahajan 见上面的评论 当我应用您的完整代码时,虽然进度不是 100%,但整个进度条都用我的主颜色 (colorPrimaryDark) 着色。我在@android:id/background 下添加了剪辑标签,它已修复,但背景已消失。我的临时解决方案是删除背景项目并为布局添加背景颜色(不带圆角)。 在我的例子中,scaleandroid:scaleWidth="100%" 做到了这一点,以便用圆角显示它。非常感谢 谢谢。你拯救了我的一天。【参考方案2】:

通过材质组件库,您可以使用 LinearProgressIndicatorapp:trackCornerRadius 属性。 比如:

    <com.google.android.material.progressindicator.LinearProgressIndicator
        android:indeterminate="true"
        app:trackThickness="xxdp"
        app:trackCornerRadius="xdp"/>

它也适用于删除android:indeterminate="true" 或使用android:indeterminate="false" 的确定进度指示器

注意:至少需要1.3.0版本。

【讨论】:

@Arunachalamk LinearProgressIndicator was introduced 带有 1.3.0-alpha04,目前是最新的 alpha 版本。 我试图在循环进度视图上实现相同的效果,这对我有帮助。 trackCornerRadius 也是为此而存在的。此处提供有关线性和循环进度指示器的文档github.com/material-components/material-components-android/blob/… 当indeterminate="false"时我们可以给LinearProgressIndicator添加圆角边框吗? @nilesh 目前没有添加笔画的参数。 如果您不了解此视图,则很难获得不确定的圆形水平动画(如原生动画)。谢谢!!!!!!【参考方案3】:

感谢 Georgi Koemdzhiev 提出的好问题和图片。对于那些想要做出与他相似的人,请执行以下操作。

1) 为ProgressBar 创建背景。

progress_bar_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <corners android:radius="3dp" />
    <stroke android:color="@color/white" android: />
</shape>

2) 为ProgressBar 创建一个比例。

curved_progress_bar.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="2dp" />
            <solid android:color="@color/transparent" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="2dp" />
                <solid android:color="#ffff00" />
            </shape>
        </clip>
    </item>
</layer-list>

3) 在布局文件中添加ProgressBar

<FrameLayout
    android:layout_
    android:layout_
    android:layout_marginStart="20dp"
    android:layout_marginTop="10dp"
    android:layout_marginEnd="20dp"
    android:background="@drawable/progress_bar_background"
    >

    <ProgressBar
        android:id="@+id/progress_bar"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_
        android:layout_
        android:layout_margin="1dp"
        android:indeterminate="false"
        android:progressDrawable="@drawable/curved_progress_bar"
        />

</FrameLayout>

【讨论】:

【参考方案4】:

您可以实现具有内部进度颜色,边框的进度条 颜色,透明颜色的空白进度。

<?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="15dip" />
        <stroke android: android:color="@color/black" />
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:startColor="@color/black"
                android:centerColor="@color/trans"
                android:centerY="0.75"
                android:endColor="@color/black"
                android:angle="270"

                />
        </shape>
    </clip>
 </item>


 <item
    android:id="@android:id/progress"
    >
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="@color/black"
                android:endColor="@color/black"
                android:angle="270" />
        </shape>
    </clip>
 </item>
 </layer-list>

【讨论】:

您好 Ravichandra,感谢您的回答!您能否添加解释为什么您的代码回答了他的问题?否则,其他用户将难以使用。谢谢! 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。一个适当的解释将通过展示为什么这是解决问题的好方法来极大地提高其长期价值,并使其对有其他类似问题的未来读者更有用。请edit您的回答添加一些解释,包括您所做的假设。此外,请尝试解释为什么您的答案比已针对该问题给出的其他答案更好。【参考方案5】:
<com.google.android.material.progressindicator.LinearProgressIndicator
                android:id="@+id/pb_team2"
                android:layout_
                android:layout_
                android:layout_marginStart="55dp"
                android:layout_marginEnd="15dp"
                app:trackColor="#E0E0E0"
                app:trackCornerRadius="6dp"
                app:trackThickness="8dp"
                android:progress="2"
                app:indicatorColor="@color/red"
                android:scaleX="-1"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@id/tv_versus"
                app:layout_constraintTop_toBottomOf="@id/tv_team2_score" />

【讨论】:

带圆角的进度条?

】带圆角的进度条?【英文标题】:Progressbarwithroundedcorners?【发布时间】:2017-07-2713:25:35【问题描述】:我正在尝试实现这个进度条设计:我拥有的当前代码产生了这个:这是代码:<itemandroid:id="@android:id/background"><shape>... 查看详情

带圆角的 QT/QML 材质进度条

】带圆角的QT/QML材质进度条【英文标题】:QT/QMLMaterialProgressBarwithroundedcorners【发布时间】:2019-05-2810:46:22【问题描述】:我想拥有Material风格的ProgressBar组件,但要进行一些修改以使其高度可调。到目前为止一切顺利,我得到了... 查看详情

怎样用div实现带百分百环形进度条

...html5直接就可用css3的属性去做圆形,border-radius即可实现圆角。2、图片形式,左右两侧做圆角图片,衔接好,即可实现,但右侧的需要在技术时进行变化3、背景形式,做左右两侧背景色+圆角png透明背景,背景采用颜色填充即可... 查看详情

给 UISlider 进度条圆角 [Swift]

】给UISlider进度条圆角[Swift]【英文标题】:GiveUISliderprogressbarroundedcorners[Swift]【发布时间】:2020-07-0416:32:44【问题描述】:我想知道是否有人知道如何自定义UISlider以使进度条圆角(没有拇指图像),如下图所示:我想要什么:... 查看详情

微信小程序progress进度条内部圆角及内部条渐变色

参考技术A微信小程序progress进度条内部圆角及渐变色设置progressCSS:效果: 查看详情

带进度条的文件复制

】带进度条的文件复制【英文标题】:FileCopywithProgressBar【发布时间】:2011-08-2800:40:16【问题描述】:我使用了这个代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.IO;namespaceWindowsApplication 查看详情

带进度条的文件上传?

】带进度条的文件上传?【英文标题】:Fileuploaderwithprogressbar?【发布时间】:2011-09-1108:01:12【问题描述】:如何创建带有进度条的HTML/PHP/AJAX文件上传器?我不知道从哪里开始。【问题讨论】:【参考方案1】:我用过Uploadify。易... 查看详情

带 tqdm 的 asyncio aiohttp 进度条

】带tqdm的asyncioaiohttp进度条【英文标题】:asyncioaiohttpprogressbarwithtqdm【发布时间】:2016-06-1820:21:04【问题描述】:我正在尝试集成tqdm进度条来监控在Python3.5中使用aiohttp生成的POST请求。我有一个工作进度条,但似乎无法使用as_com... 查看详情

带线程的 PyQt 进度条更新

】带线程的PyQt进度条更新【英文标题】:PyQtProgressBarUpdatewithThreads【发布时间】:2017-08-0418:44:49【问题描述】:我一直在编写一个在服务器上运行远程脚本的程序。所以,我需要用一个栏显示进度,但是当我运行我的代码时,GUI... 查看详情

带 ProgressBar 的 CountDownTimer,重启应用时继续进度条

】带ProgressBar的CountDownTimer,重启应用时继续进度条【英文标题】:CountDownTimerwithProgressBar,continuingprogressbarwhenrestartingtheapp【发布时间】:2022-01-0922:32:13【问题描述】:我有一个显示CountdownTimer进度的ProgressBar。ProgressBar工作除了当... 查看详情

使用 Java 上传文件(带进度条)

】使用Java上传文件(带进度条)【英文标题】:FileUploadwithJava(withprogressbar)【发布时间】:2010-09-2006:17:55【问题描述】:我对Java非常陌生,而且我主要是边学边自学,所以我开始构建一个小程序。我想做一个可以从本地磁盘中... 查看详情

springmvc带进度条的多文件上传

1、关于文件上传进度条的实现在说SpringMVC文件上传尤其是带滚动条之前先用servlet做一个简单的文件上传并返回进度信息这样的功能。(1)需要两个包:commons-fileupload-1.3.1.jarcommons-io-1.4.jar上面这两个包是Apache推出的... 查看详情

圆角矩形精度条(代码片段)

publicclassDownProgressBarextendsView/***注意:*1,整个精度条的宽度MaxProgress;*2,当前精度条的宽度currentProgress;*4,背景颜色*5,进度颜色*6,文字,文字颜色,大小**@paramcontext*/privateintmMaxProgress;privateintmProgress;privateintmBackgro 查看详情

markdown拉链带进度条(代码片段)

查看详情

css3彩色进度条加载动画带进度百分比

在线演示       本地下载 查看详情

unity带进度条加载场景及场变黑的解决方法(代码片段)

首先说加载场景显示进度条简单的来说需要协程+Update一直用UGUI,进度条就用Slider别忘了引用usingUnityEngine.UI;publicSliderslider;如果想在旁边显示个数字百分比,就再加个Text就好了publicTexttext;假设我们所在场景为old,要去往场景new,... 查看详情

python无依赖实现一个带百分比的简单进度条

使用sys.stdout或sys.stderr就可以输出一个简单的进度条:importtimeimportsysdefreport_progress(progress,total,lbar_prefix='',rbar_prefix=''):percent=round(progress/float(total)*100)buf& 查看详情

应用程序 QT 崩溃(带进度条的 ftp 下载)

】应用程序QT崩溃(带进度条的ftp下载)【英文标题】:CrashingofapplicationQT(ftpdownloadingwithprogressbar)【发布时间】:2014-05-0721:23:47【问题描述】:我想创建一个应用程序,通过这个我可以从我的ftp服务器下载文件并在进度条中显示... 查看详情