gpt4 book ai didi

android - 更改 ProgressBar.Horizo​​ntal 不确定行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:26 24 4
gpt4 key购买 nike

我尝试实现水平不确定的 ProgressBar,它将在结束时反转其动画。澄清一下,我希望进度条从 0 变为 100,然后从 100 变为 0。这是 a video of the standard animation ,我想最后反转。

根据 documentation of ProgressBar这应该可以用 xml,但我无法实现。您可以设置repeat(标准?)或cycle(这是我想要的)

这是我的实现:

<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="8dip"
android:indeterminate="true"
android:indeterminateOnly="true" //tried "false" too
android:indeterminateBehavior="cycle" // type "reverse" is the one from linked video?
android:max="100" />

尝试使用max-value,以及不同的style-parents

但是,我找到了值 android:indeterminateDuration="[value]" 并将一个设置为 1 秒,另一个设置为 10 秒。最后,两个 progressloader 的长度相同,这让我想到,样式可能在某处被覆盖了?!

有人知道怎么解决吗?

赏金更新:问题已解决,这是一个工作示例,其中 indeterminateBehaviour 正在工作

最佳答案

我找不到如何更改 ProgressBar 中的动画器,所以我建议您使用自己的 drawable。

将进度画成矩形

在一个简单的例子中,让我们让进度看起来像一个矩形:

res/drawable/vector_drawable_progress_indeterminate_horizo​​ntal.xml(名称灵感来自 core/res/res/drawable/vector_drawable_progress_indeterminate_horizontal.xml)

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="10dp"
android:width="100dp"
android:viewportHeight="10"
android:viewportWidth="100" >
<group
android:name="rect1_grp"
android:scaleX="1" >
<path
android:pathData="M 0,0 h 100 v 10 h -100 Z"
android:fillColor="?attr/colorControlActivated" />
</group>
</vector>

动画水平刻度

当然,这个矩形根本没有动画,所以你想把它包裹在一个改变它水平比例的对象中(rect1_grpscaleX)。

res/drawable/custom_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-vector android:drawable="@drawable/vector_drawable_progress_indeterminate_horizontal"
xmlns:android="http://schemas.android.com/apk/res/android">
<target
android:animation="@anim/progress_indeterminate_horizontal_rect1"
android:name="rect1_grp"/>
</animated-vector>

唯一剩下要做的就是拥有自己的动画:

res/anim/progress_indeterminate_horizo​​ntal_rect1:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:duration="1500"
android:propertyName="scaleX"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:repeatMode="reverse"
android:repeatCount="infinite"/>

</set>

动画从 0f 到 1f 线性增长比例,并以反向模式无限重复(这避免了两个动画师的序列:一个用于比例增加,一个用于比例减少)。

享受

现在,您所要做的就是在 res/layout/activity.xml 中使用这个 drawable:

<ProgressBar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="8dip"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/custom_progress" />

还有待办

  • 我将进度缩减到最低限度。你可能想要一个可绘制的背景。您可能还想恢复次要进度。
  • 您可以自定义动画中的插值器。

关于android - 更改 ProgressBar.Horizo​​ntal 不确定行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41808244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com