自定义View-画一个会动的太极图
2018-01-12 18:20
483 查看
效果
步骤分解
像太极图这种比较规则的图形,一般就是用数学知识进行图形分解,分成一个个基本图形,比如线段,圆,矩形,扇形,多边形等,然后一步步绘制出来即可。- 分解太极图
@Override protected void onDraw(Canvas canvas) { int width = getWidth(); int height = getHeight(); //平移画布到View的中间 canvas.translate(width / 2, height / 2); //底色 canvas.drawColor(Color.GRAY); //旋转,这里mDegrees与动画相关联 canvas.rotate(mDegrees,0,0); //两个半圆 int radius = Math.min(width, height) / 2 - 40; RectF rectF = new RectF(-radius, -radius, radius, radius); canvas.drawArc(rectF, 90, 180, true, mPaintBlack); canvas.drawArc(rectF, -90, 180, true, mPaintWhite); //两个小圆 int smallRadius = radius / 2; canvas.drawCircle(0, -smallRadius, smallRadius, mPaintBlack); canvas.drawCircle(0, smallRadius, smallRadius, mPaintWhite); //两个小点 int dotRadius = smallRadius / 4; canvas.drawCircle(0, -smallRadius, dotRadius, mPaintWhite); canvas.drawCircle(0, smallRadius, dotRadius, mPaintBlack); }
利用动画,不断改变自定义View的一个属性
/* * ,添加动画,让太极图动起来 * */ public void startRotate() { ValueAnimator animator = ValueAnimator.ofInt(0,360); animator.setDuration(2000); animator.setInterpolator(new LinearInterpolator()); animator.setRepeatCount(ValueAnimator.INFINITE); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mDegrees = (int) animation.getAnimatedValue(); invalidate(); } }); animator.start(); }
这个效果比较简单,就不多做说明了。
动画的实现效果建议不要使用发送Handler的方式,直接使用Animation就可以了。
源码
https://github.com/jiangkang/KTools相关文章推荐
- 手把手带你画一个 时尚仪表盘 Android 自定义View
- FruitLoadView 一个自定义view可用来做加载view
- 简单实现一个自定义view的ProgressBar
- 使用xib封装一个自定义view的步骤
- Android Training - 创建自定义的Views(Lesson 1 - 创建一个View类)
- 自定义View实践-一个简单的棋类游戏
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(六)实现ViewPager最基本的
- 手把手带你画一个漂亮蜂窝view Android自定义view
- Create a custom view in Android || 在 Android 中创建一个自定义 View
- 自定义View之定义一个简化版的TextView
- 自定义View学习篇之绘制一个圆环动画
- 教大家一个在自定义的View里面不写block,delegate,Notification快速刷新UI的方法!
- Android自定义View画出一个时钟(时针、分针、秒针)完美搭配当前时间走动
- Android自定义View学习之画太极图
- 手把手带你画一个 时尚仪表盘 Android 自定义View
- android自定义view实现一个钟表
- 一个炫字都不够??!!!手把手带你打造3D自定义view
- 带动画的自定义view——做一个移动的箭头
- 一个简单的,能与 seekbar 共享滑动的自定义 view
- android自定义View创建一个Path绘制多边形,贝塞尔曲线,