如何在Android中创建“填充”动画

时间:2015-03-30 20:47:38

标签: java android animation android-animation

我试图创建一个"填充"在Android中的形状上的动画。它应该开始变得完全不可见,然后逐渐地“填满”#34;从底部这样: enter image description here

我特意尝试动画的是一个像这样的圆圈:

<?xml version="1.0" encoding="utf-8"?>
<shape
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="oval">

   <solid 
       android:color="#666666"/>

   <size 
       android:width="120dp"
       android:height="120dp"/>
</shape>

我已经检查了AlphaAnimation,RotateAnimation,ScaleAnimation和TranslateAnimation(动画的子类),但我找不到使用它们的方法。

2 个答案:

答案 0 :(得分:6)

以下是我最终解决的问题:

我从github https://github.com/lzyzsd/CircleProgress中包含了这个库,其中包含一个循环进度条(CircleProgress)。我添加了一个倒计时器来逐步增加&#34;进展&#34;它正在显示

以下是代码:

final CircleProgress circularProgress =(CircleProgress)findViewById(R.id.circleProgress);

//Hides the text and the part of the circle which should not be shown
circularProgress.setUnfinishedColor(Color.parseColor("#00000000"));
circularProgress.setTextColor(Color.parseColor("#00000000"));

//Makes the circle red
circularProgress.setFinishedColor("#FF0000");

final int timeToCountDownMilis = 10000;
circularProgress.setMax(timeToCountDownMilis);

//Initiates and starts the countdowntimer which gradually increases the "progress" in the progress bar
new CountDownTimer(timeToCountDownMilis,70){

    onTick(long milisUntilFinished){
       circularProgress.setProgress(timeToCountDownMilis-(int)milisUntilFinished);
    }

    onFinish(){
    }
}.start();

感谢Stan指出我的循环进度条吧!

答案 1 :(得分:2)

你可以深入挖掘动画,比如drawPath等。在这种情况下我应该做的更简单一点:
- 在屏幕上放置一个完整的红色圆圈
- 输出一个带有白色bg的视图(如正方形),覆盖所有圆圈
- 那个白色方块的动画视图向上移动,露出你的圆圈
您可以使用简单的过渡动画来完成它 那样它看起来就像你想要的填充动画。
好吧,我的回答是根据你提供的图片给出的,它足以覆盖目标。但是如果你希望像进度条这样的东西,那么你应该访问https://github.com/snowdream/awesome-android并查看那里的循环进度条库,至少你可以了解如何实现你的目标或者找出已经完成的目标。 / p>