平滑进度条动画 [英] Smooth Progress Bar Animation

查看:1567
本文介绍了平滑进度条动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图实施平滑动画我的进度,但是当我增加了时间(30秒),动画不再是光滑的。

拥有5秒示例:

与30秒示例:

我进步的背景:

 <层列表的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>
    <项目>
        <形状和GT;
            <填充机器人:顶部=1DP/>
            [固体机器人:颜色=#10444444/>
        < /形状>
    < /项目>
    <项目>
        <形状和GT;
            <填充机器人:顶部=1DP/>
            [固体机器人:颜色=#20444444/>
        < /形状>
    < /项目>
    <项目>
        <形状和GT;
            <填充机器人:顶部=1DP/>
            [固体机器人:颜色=#30444444/>
        < /形状>
    < /项目>
    <项目机器人:ID =@机器人:ID /背景>
        <形状和GT;
            [固体机器人:色=@色/ black_thirty/>
        < /形状>
    < /项目>    <项目机器人:ID =@机器人:ID /进度>
        <夹>
            <形状和GT;
                [固体机器人:颜色=#3500D0/>
            < /形状>
        < /夹>
    < /项目>
< /层列表>

我的进步布局:

 <进度
    机器人:ID =@ + ID / pb_loading
    机器人:layout_width =match_parent
    机器人:layout_height =8DP
    机器人:不确定=假
    机器人:layout_centerInParent =真
    机器人:进度=100
    机器人:progressDrawable =@绘制/ my_progress_bar/>

我的动画制作方法:

 私人无效startAnimation(){
    进度mProgressBar =(进度)findViewById(R.id.pb_loading);
    ObjectAnimator progressAnimator = ObjectAnimator.ofInt(mProgressBar,进步,100,0);
    progressAnimator.setDuration(30000);
    progressAnimator.setInterpolator(新LinearInterpolator());
    progressAnimator.start();
}


解决方案

我找到了解决办法!

我不得不改变atribbute 安卓进步的android:最大 1000

 <进度
    机器人:ID =@ + ID / pb_loading
    机器人:layout_width =match_parent
    机器人:layout_height =8DP
    机器人:不确定=假
    机器人:layout_centerInParent =真
    机器人:进度=1000
    机器人:最大=1000
    风格=@安卓风格/ Widget.ProgressBar.Horizo​​ntal
    机器人:progressDrawable =@绘制/ my_progress_bar/>

和,在我的动画:

  ObjectAnimator progressAnimator = ObjectAnimator.ofInt(mProgressBar,进步,1000,0);

I'm trying to implement a smooth animation for my ProgressBar, but when I increase the time (30 seconds), the animation is no longer smooth.

Example with 5 seconds:

Example with 30 seconds:

My progress background:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <padding android:top="1dp" />
            <solid android:color="#10444444" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" />
            <solid android:color="#20444444" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" />
            <solid android:color="#30444444" />
        </shape>
    </item>
    <item android:id="@android:id/background">
        <shape>
            <solid android:color="@color/black_thirty" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <solid android:color="#3500D0" />
            </shape>
        </clip>
    </item>
</layer-list> 

My progress layout:

<ProgressBar
    android:id="@+id/pb_loading"
    android:layout_width="match_parent"
    android:layout_height="8dp"
    android:indeterminate="false"
    android:layout_centerInParent="true"
    android:progress="100"
    android:progressDrawable="@drawable/my_progress_bar" />

My animation method:

private void startAnimation(){
    ProgressBar mProgressBar = (ProgressBar) findViewById(R.id.pb_loading);
    ObjectAnimator progressAnimator = ObjectAnimator.ofInt(mProgressBar, "progress", 100, 0);
    progressAnimator.setDuration(30000);
    progressAnimator.setInterpolator(new LinearInterpolator());
    progressAnimator.start();
}

解决方案

I found the solution!

I had to change the atribbute android:progress and android:max to 1000:

<ProgressBar
    android:id="@+id/pb_loading"
    android:layout_width="match_parent"
    android:layout_height="8dp"
    android:indeterminate="false"
    android:layout_centerInParent="true"
    android:progress="1000"
    android:max="1000"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:progressDrawable="@drawable/my_progress_bar"/>  

And, in my animation:

ObjectAnimator progressAnimator = ObjectAnimator.ofInt(mProgressBar, "progress", 1000, 0);

这篇关于平滑进度条动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆