Android 自定义View 折线图
来源:互联网 发布:家居网络市场调研目标 编辑:程序博客网 时间:2024/05/22 17:03
自从来到北京之后,我发现我的体重越来越重了,但是头发越来越少了,发际线越来越高了,哎。。。。。。
上一篇中我们说了怎么画条形图,这篇我们就谈谈怎么画折线图了,什么?饼图和条形图都会画了,折现图,还用你告诉我们怎么画? 好吧,那我就简单的说说我的思路
与饼图和条形图重复的部分,我就不说了。。。
1. 我的思路是先画每个坐标点的空心圆:
String mKey = entries.getKey();Integer mValue = entries.getValue();//加入动画增量mEveryDataWidth = Math.min(mEveryDataWidth, mAnimatorSize);mEveryDataSize = Math.min(mEveryDataSize, mAnimatorSize);//画折线上的空心圆canvas.drawCircle(mEveryDataWidth*index, -mValue*mEveryDataSize, 10, mChatPointPaint);
2. 画完空心圆之后,我们需要用现将这几个空心圆链接起来,这块有个小计算:
//前一个点的角的弧度(计算出两个直角边的长度,然后使用Math.atan2函数)float mTan1 = (float) Math.atan2( mEveryDataWidth*index - mEveryDataWidth*(index-1), mValue*mEveryDataSize - mEveryDataWidth*index);//当前点角的弧度float mTan2 = (float) Math.atan2( mValue*mEveryDataSize - mEveryDataWidth*index, mEveryDataWidth*index - mEveryDataWidth*(index-1));//画线canvas.drawLine( mEveryDataWidth*(index-1)+10*(float)Math.sin(mTan1), -mOldData*mEveryDataSize-10*(float)Math.cos(mTan1), mEveryDataWidth*index-10*(float)Math.cos(mTan2), -mValue*mEveryDataSize+10*(float)Math.sin(mTan2), mChatPointPaint我们两个点的坐标,以两点坐标之间的连线为斜边,我们就能画出一个直角三角形,初中数学,根据两个直角边,我们就能算出其余两个角的角度,这样我们就能求出两个空心圆连线两个端点的坐标,很简单。。。
总结:饼图,条形图,折线图我们就画完了,很简单,我的代码写的比较繁琐,因为这样看思路会比较清晰一下,另外关于控件各个部分尺寸的问题,我的源码有个很严重的问题,可能就是不适配有些分辨率的手机(当然我没测,但是我觉得肯定会有问题), 所以我们在画自定义View的时候,设置长度的时候尽量按屏幕的百分比进行设置,这样能达到适配的效果。
好啦。。。困了,睡觉
源码
0 0
- Android 自定义View 折线图
- Android 自定义View,实现折线图
- Android 自定义View,实现折线图
- Android 自定义View -- 简约的折线图
- Android自定义view之天气折线图
- Android 自定义View画天气预报折线图
- Android自定义View-折线趋势图
- Android 自定义view绘制折线图
- 自定义View--折线图
- 自定义View折线图
- 自定义View折线图
- 折线图 自定义折线图 自定义view
- 自定义View之折线图
- 自定义View,画折线图
- 自定义view—折线图
- 自定义view—折线图
- 自定义view—折线图
- 自定义View简单折线图
- 怎样写代码
- ”戏“说java—异常及异常处理概述
- HBuilder开发之路上的坑儿
- JR-03
- android的弹出框 -(一)--AlertDialog,时间弹出框DatePickerDialog 和进度条弹出框showProgressDialog
- Android 自定义View 折线图
- 如何让 Qt 程序 Sleep
- Oracle中Merge into用法总结
- 动态多态性
- 查看及修改oracle编码格式方法
- 浅谈MOSFET驱动电路
- 页式管理和段式管理、段页式管理的区别
- 几个不太常用的git命令
- oracle10g导入oracle11g 空白问题