我想要做以下 - 动画数字序列更改,并使用TextSwitcher。我获得了用户的评分,并且时常变化。有没有办法让这个变化动起来,把这个数字从当前值慢慢增加到结果值?类似于http://josheinstein.com/blog/index.php/2010/02/silverlight-animated-turbotax-number-display/,但适用于Android。Android TextSwitcher数字序列动画
0
A
回答
7
我在找同样的东西,找了个朋友帮我,这里是一个工作样本。希望对你有效。
-Raj
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class TimerUpdateAnimatorActivity extends Activity {
private static final int toValue = 20;
private static final int fromValue = 0;
private static final int FRAME_TIME_MS = 100;
private static final String KEY = "i";
private TextView animatedText;
boolean isRunning = false;
// background updating
Handler handler = new Handler() {
public void handleMessage(Message msg) {
try {
int i= msg.getData().getInt(KEY);
animatedText.setText(""+i);
} catch (Exception err) {
}
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
animatedText = (TextView) findViewById(R.id.animatedText);
}
public void onStart() {
super.onStart();
Thread background = new Thread(new Runnable() {
public void run() {
try {
for (int i = fromValue; i <= toValue && isRunning; i++) {
Thread.sleep(FRAME_TIME_MS);
Bundle data= new Bundle();
data.putInt(KEY, i);
Message message = handler.obtainMessage();
message.setData(data);
handler.sendMessage(message);
}
}
catch (Throwable t) {
}
}
});
isRunning = true;
background.start();
}
public void onStop() {
super.onStop();
isRunning = false;
}
}
0
我知道这是一个很老的答案,但这里有我的2美分。请注意,某些检查/代码应该到位,如果属性oldValue <值...
String values[] = new String[Math.abs(oldValue - value)];
int count = 0;
for (int i = oldValue; i < value; i++) {
values[count++] = "" + i;
}
Animator animatorText = ObjectAnimator.ofObject(new AnimatedTextView(navigationBarBalanceAmountTextView), "Text", new TypeEvaluator<String>() {
@Override
public String evaluate(float fraction, String startValue, String endValue) {
return (fraction < 0.5) ? startValue : endValue;
}
}, values);
animatorText.start();
1
我创建了一个类使用你选择了Android Interpolator动画数值变化。这使您可以使用与Android中其他动画相同的算法来控制更改速率。例如,你可能更喜欢数值变化,而不是以恒定速率动画,数字变化很快开始,然后随着它接近其最终值而变慢。
你可以阅读关于实现这个here的完整文章。
该课程的完整源代码可以作为Gist here使用。
使用带您选择的插值器的ValueAnimator类来实现文本值的动画。下面是创建动画的主要代码,并添加了侦听器,以便在动画执行时更新视图上的文本。
public void execute(){
mValueAnimator = ValueAnimator.ofFloat(mStartValue, mEndValue);
mValueAnimator.setDuration(mDuration);
mValueAnimator.setInterpolator(mInterpolator);
mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float current = Float.valueOf(valueAnimator.getAnimatedValue().toString());
mView.setText(String.format("%." + mPrecision + "f", current));
}
});
mValueAnimator.start();
}
相关问题
- 1. TextSwitcher动画定制
- 2. Android动画序列
- 3. TextSwitcher和ImageSwitcher的链接动画
- 4. 在Android中使用TextSwitcher创建动画文本
- 5. Android动画动画列表动画
- 6. TextSwitcher用于更改号码的“Slots Type”动画
- 7. 的Android - TextSwitcher - 更改的TextView
- 8. android动画列表
- 9. 在android中的动画序列
- 10. 在android中执行动画序列
- 11. 在Android中旋转动画序列
- 12. 从TextSwitcher添加字符串数组
- 13. Android TextSwitcher以Android Button为中心
- 14. 呼叫TextSwitcher的的setText不使用的动画渐变
- 15. CSS动画序列
- 16. Coco2d动画序列
- 17. 动画短序列
- 18. jQuery动画序列
- 19. 动画拉斐尔JavaScript动画序列
- 20. Android - 需要数字翻转动画
- 21. 使用android动画列表
- 22. 实现TextSwitcher
- 23. 单个活动中的多个TextSwitcher
- 24. 如何在Android中使用TextSwitcher
- 25. HTML动画序列没有画布
- 26. D3序列旭日动画
- 27. 重复SVG动画序列
- 28. 图像动画序列
- 29. 动画的循环序列
- 30. 我如何序列动画