网状图的应用很常见了 大多数用在用户分析 比如战斗力图表等等

image.png

简单的描述下 流程吧 下面直接用六边形的例子

1.第一步首先要分析绘制出六个角的位置

画几何图形 一般都用path去绘制

先计算出六个角度的大小 网状图的半径

//角度

/*PI就是圆周率π,PI是弧度制的π,也就是180°

所以,Math.PI = 3.14 = 180°

ps,PI是一个浮小数*/

//angle = 180°*2 / 6 = 1.04 = 60°

float angle = (float) (Math.PI * 2 / 6);

//网状图的半径大小

int radius = 300;

//开始绘制

Path path = new Path();

// 起点

path.moveTo(centerX, centerY - curR);

//延伸路径

for (int j = 0; j <6; j++) {

endX = (float) (centerX + curR * Math.sin(angle * j));

endY = (float) (centerY - curR * Math.cos(angle * j));

path.lineTo(endX, endY);

}

//闭环

path.close();

绘制

canvas.drawPath(path, polygonPaint);

形状到此就绘制玩了

2.第二部绘制对角线的位置

//其实和形状一样 唯一的区别就是 起始点位置

Path path = new Path();

for (int i = 0; i <6; i++) {

path.reset();

path.moveTo(centerX, centerY);

float x = (float) (centerX + radius * Math.sin(angle * i));

float y = (float) (centerY - radius * Math.cos(angle * i));

path.lineTo(x, y);

canvas.drawPath(path, linsPaint);

}

3.最后一步绘制区域的百分比

//区域也和绘制形状一样 唯一的区别就是 半径要根据 最大阀值百分比换算

for (int j = 0; j < data.size(); j++) {

float curR = radius * data.get(j).getValue() / maxValue;//当前半径

float endX = (float) (centerX + curR * Math.sin(angle * j));

float endY = (float) (centerY - curR * Math.cos(angle * j));

if (j == 0) {

path.moveTo(endX, endY);

}

path.lineTo(endX, endY);

}

path.close();

到此 绘制 形状就结束了

简单的封装了个demo 支持大于3的边角网状图

ReticularView

网状结构图 支持各种颜色 方法详情可见源码注释 三边 4边 12边 都可以

image.png

image.png

image.png

image.png

android 自定义柱形图简书,android 自定义网状图相关推荐

  1. android自动登录简书,Android开发之简单登录界面

    用户界面基础 Android系统的四大组件分别是活动(Activity).服务(Service).广播接收器(Broadcast Receiver).内容提供器(Content Provider). ...

  2. android 读写文件 简书,Android 中的文件操作

    Android 文件操作 概述 Android 中的文件操作主要涉及到两个部分,一个是内部存储的读写,一个是外部存储的读写两者的主要区别如下表: 内部存储 外部存储 始终可用 它并非始终可用,因为用户 ...

  3. android弹框 简书,Android -自定义弹框

    前言 开发中避免不了自定义一些弹框的使用,经常开发觉得麻烦,就封装了一些常用的弹框,经供参考. Dialog-Master Dialog 各种自定义黑色主题,适用于黑色主题的APP 白色的需要修改背景 ...

  4. android权限适配 简书,Android动态权限适配

    最近APP里面要添加动态权限,网上找了不少例子并经过一定的测试,基本流程有了一定的认识,需要注意的地方记录下来以备以后查阅. 一 各大手机厂商的适配 依据各大手机Rom的不同表现,可以分为三种不同的模 ...

  5. android自动登录简书,android 手机号实现登录功能

    先看看效果 image.png 我的这个登录功能是手机号和密码都已经在后台数据库有存储的,所以是直接登录. 重点有三个: 1.账号密码的存储,实现自动登录: 2.网络通信: 3.密码一定要Md5加密之 ...

  6. android自动登录简书,Android 自动登录——持久化Cookie

    背景 在使用鸿洋大神的玩Android网站开放的api开发android app时,使用Retrofit请求登录api,需要保存Cookie以备其他需要登陆后才能操作的api使用. 自定义拦截器实现持 ...

  7. android运行过程简书,Android系统的启动流程

    Android系统有哪些进程 在Linux系统启动时,会读取init.rc,里面配置了一些需要启动的进程.注意:SystemServer进程不在init.rc里,因为SystemServer进程是由z ...

  8. android 开发环境简书,Android Studio 开发环境快速搭建

    目录 - 1.下载JDK.AS - 1.1 JDK下载 - 1.2 AS下载 - 1.3 百度云资源统一下载 - 2.安装JDK - 3.配置JDK及JAVA的环境 - 3.1 打开系统环境 - 3. ...

  9. android 辅助服务 简书,Android AccessibilityService使用

    测试demo主要使用了Android 的无障碍辅助服务(AccessibilityService),主要注意是 1. 开启服务,绑定目标app的监听(demo中根据包命绑定了体积计算的app),需要在 ...

  10. android四大组件 简书,android四大组件

    android有四大组件,分别是Activity, Service(服务),Content Provider(内容提供者),BoadcastReceiver广播接收器. Activity 一个Acti ...

最新文章

  1. 避免死锁的一些注意事项
  2. 一文读懂Spring中的AOP机制
  3. Android Training - 使用IntentService运行任务(Lesson 2 - 发送任务给IntentService)
  4. 2020人工神经网络第一次作业-参考答案第三部分
  5. 安防工程商必须知道的PoE供电真相
  6. 各个大厂的机器学习平台概述
  7. html页面显示html代码怎么写,求助这段代码如何转换成正常可看的HTML页面
  8. Golang垃圾回收机制(一)
  9. MVC 之var与dynamic
  10. [bzoj1303][CQOI2009]中位数图
  11. 智林STM32程序源代码的分析和整理03(转帖)
  12. application.yml改成bootstrap.yml不报错了(Failed to configure a DataSource: ‘url’ attribute)
  13. ktv app html,ktv.html
  14. RestTemplate HttpMessageConverter报错的解决方案no suitable HttpMessageConverter
  15. 多线程编程核心技术日记
  16. ERROR: Unsupported method: AndroidProject.getVariantNames().
  17. php 安全处理,php ddos 安全处理代码
  18. hcie lab 实验挂了怎么办?
  19. 3D打印机之Marlin固件配置
  20. Unity3D中MonoDevelop无法使用

热门文章

  1. 11、ARM嵌入式系统:中断使能
  2. 数据结构课程设计 电梯模拟
  3. 计算机网络之了解计算机网络
  4. Panel控件的使用
  5. Zookeeper总结——知识点、选举机制、客户端操作及写数据流程、API操作、zookeeper分布式锁之 Curator、ZAB协议、CAP理论之zookeeper的CP理论
  6. CSS-table样式+
  7. 函数----ModifyStyle
  8. 在Windows 7上面安装Vs2005
  9. 对联广告php代码,css实现的对联广告代码
  10. ARM的启动过程详解(CHINAITLAB)