平滑进度条动画 [英] Smooth Progress Bar Animation
本文介绍了平滑进度条动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图实施平滑动画我的进度
,但是当我增加了时间(30秒),动画不再是光滑的。
拥有5秒示例:
与30秒示例:
我进步的背景:
<层列表的xmlns:机器人=http://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.Horizontal
机器人: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屋!
查看全文