使用属性动画实现一个简单的加载动画
来源:互联网 发布:kitti数据集如何使用 编辑:程序博客网 时间:2024/05/02 00:26
安卓的动画各种各样,新加的属性动画可以很好的实现动画效果。
如何实现一个简单的加载动画呢?
Frist of all, Because of you are custom view, you need extends the View,and implement there important method,such as onMeasure()、onDraw()、onLayout()..
Then, you need some paints to draw,so that…
public FourCirlceRotate(Context context, AttributeSet attrs) { super(context, attrs); paint1 = new Paint(); paint2 = new Paint(); paint3 = new Paint(); paint4 = new Paint(); paint5 = new Paint(); paint1.setColor(Color.parseColor("#ff0099cc")); paint2.setColor(Color.parseColor("#ff669900")); paint3.setColor(Color.parseColor("#ffcc0000")); paint4.setColor(Color.parseColor("#ffaa66cc")); paint5.setColor(Color.parseColor("#ffffbb33")); }
and you should get the value animator, just like this!
private ValueAnimator getValueAnimator() { ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 8f); valueAnimator.setDuration(4000); valueAnimator.setInterpolator(new LinearInterpolator()); valueAnimator.start(); return valueAnimator; }
and you should fresh your screen when your application had runing.
public void startAnimation() { if (valueAnimator == null) { valueAnimator = getValueAnimator(); } else { valueAnimator.start(); } R = getHeight() / 6; postDelayed(new Runnable() { @Override public void run() { if (!stop) { startAnimation(); invalidate(); } } }, valueAnimator.getDuration()); init = true; }
then,The best part of it is you need set some coding on onDraw() method to make it happen.
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);// Log.i(TAG, "onDraw " + where); if (!init) { startAnimation(); } Log.e(">>>>>>>>>>>>>>>>>","show:"+show+"where:"+where); //显示固定的圆,逐个出现 if (show <= 4) { canvas.drawCircle(R, R, R, paint2); } if (show <= 3) { canvas.drawCircle(getWidth() - R, R, R, paint3); } if (show <= 2) { canvas.drawCircle(getWidth() - R, getHeight() - R, R, paint4); } if (show <= 1) { canvas.drawCircle(R, getHeight() - R, R, paint5); } //逐个消失 if (show > 4) { if (show <= 4) { canvas.drawCircle(R, R, R, paint2); } if (show <= 5) { canvas.drawCircle(getWidth() - R, R, R, paint3); } if (show <= 6) { canvas.drawCircle(getWidth() - R, getHeight() - R, R, paint4); } if (show <= 7) { canvas.drawCircle(R, getHeight() - R, R, paint5); } } //移动 if (where < 1 && where > 0) { canvas.drawCircle(R + (getWidth() - 2 * R) * where, R, R, paint1); show = 4; } if (where < 2 && where > 1) { canvas.drawCircle(getHeight() - R, R + (getHeight() - 2 * R) * (where - 1), R, paint1); show = 3; } if (where < 3 && where > 2) { canvas.drawCircle(getWidth() - R - (getWidth() - 2 * R) * (where - 2), getHeight() - R, R, paint1); show = 2; } if (where < 4 && where > 3) { canvas.drawCircle(R, getHeight() - R - (getHeight() - 2 * R) * (where - 3), R, paint1); show = 1; } if (where > 4 && where < 5) { canvas.drawCircle(R + (getWidth() - 2 * R) * (where - 4), R, R, paint1); show = 5; } if (where > 5 && where < 6) { canvas.drawCircle(getHeight() - R, R + (getHeight() - 2 * R) * (where - 5), R, paint1); show = 6; } if (where > 6 && where < 7) { canvas.drawCircle(getWidth() - R - (getWidth() - 2 * R) * (where - 6), getHeight() - R, R, paint1); show = 7; } if (where > 7 && where < 8) { canvas.drawCircle(R, getHeight() - R - (getHeight() - 2 * R) * (where - 7), R, paint1); show = 8; } if (isStart) { where = (float) valueAnimator.getAnimatedValue(); } if (valueAnimator.isRunning()) { isStart = true; invalidate(); } }
0 0
- 使用属性动画实现一个简单的加载动画
- 属性动画的简单使用
- 属性动画的简单使用
- 加载动图的实现及属性动画的使用
- Swift实现一个简单的加载动画,以及动画的详解
- 一个简单的CSS加载动画
- 动画概述 一,创建一个简单的属性动画
- 实现一个简单动画
- Android逐帧动画、属性动画的简单实现
- Android逐帧动画、属性动画的简单实现
- 简单的加载动画
- 简单的属性动画
- 使用Unity实现一个简单的UV动画
- CABasicAnimation(基础属性动画)的简单使用
- 属性动画的简单使用和总结
- 浅谈属性动画的简单使用(一)
- Android 属性动画的简单使用
- 使用属性动画实现星光四射的动画效果
- 如何mac客户端上传github
- Android内存泄漏分析
- 关于OpenFileDialog与SaveFileDialog的错误
- 槽函数获取发出信号的对象
- 成为Java GC专家系列(三) ——如何优化Java垃圾回收
- 使用属性动画实现一个简单的加载动画
- ART模式和Dalvik模式的区别
- 使用Nexus搭建Maven私服
- Splunk架构学习笔记
- Mac 关于VSCode调试和使用的问题
- kafka安装
- c++socket代码
- 成为Java GC专家系列(二)——监控Java垃圾回收
- 字典树模板