android 自定义柱形图简书,android 自定义网状图
网状图的应用很常见了 大多数用在用户分析 比如战斗力图表等等
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 自定义网状图相关推荐
- android自动登录简书,Android开发之简单登录界面
用户界面基础 Android系统的四大组件分别是活动(Activity).服务(Service).广播接收器(Broadcast Receiver).内容提供器(Content Provider). ...
- android 读写文件 简书,Android 中的文件操作
Android 文件操作 概述 Android 中的文件操作主要涉及到两个部分,一个是内部存储的读写,一个是外部存储的读写两者的主要区别如下表: 内部存储 外部存储 始终可用 它并非始终可用,因为用户 ...
- android弹框 简书,Android -自定义弹框
前言 开发中避免不了自定义一些弹框的使用,经常开发觉得麻烦,就封装了一些常用的弹框,经供参考. Dialog-Master Dialog 各种自定义黑色主题,适用于黑色主题的APP 白色的需要修改背景 ...
- android权限适配 简书,Android动态权限适配
最近APP里面要添加动态权限,网上找了不少例子并经过一定的测试,基本流程有了一定的认识,需要注意的地方记录下来以备以后查阅. 一 各大手机厂商的适配 依据各大手机Rom的不同表现,可以分为三种不同的模 ...
- android自动登录简书,android 手机号实现登录功能
先看看效果 image.png 我的这个登录功能是手机号和密码都已经在后台数据库有存储的,所以是直接登录. 重点有三个: 1.账号密码的存储,实现自动登录: 2.网络通信: 3.密码一定要Md5加密之 ...
- android自动登录简书,Android 自动登录——持久化Cookie
背景 在使用鸿洋大神的玩Android网站开放的api开发android app时,使用Retrofit请求登录api,需要保存Cookie以备其他需要登陆后才能操作的api使用. 自定义拦截器实现持 ...
- android运行过程简书,Android系统的启动流程
Android系统有哪些进程 在Linux系统启动时,会读取init.rc,里面配置了一些需要启动的进程.注意:SystemServer进程不在init.rc里,因为SystemServer进程是由z ...
- android 开发环境简书,Android Studio 开发环境快速搭建
目录 - 1.下载JDK.AS - 1.1 JDK下载 - 1.2 AS下载 - 1.3 百度云资源统一下载 - 2.安装JDK - 3.配置JDK及JAVA的环境 - 3.1 打开系统环境 - 3. ...
- android 辅助服务 简书,Android AccessibilityService使用
测试demo主要使用了Android 的无障碍辅助服务(AccessibilityService),主要注意是 1. 开启服务,绑定目标app的监听(demo中根据包命绑定了体积计算的app),需要在 ...
- android四大组件 简书,android四大组件
android有四大组件,分别是Activity, Service(服务),Content Provider(内容提供者),BoadcastReceiver广播接收器. Activity 一个Acti ...
最新文章
- 避免死锁的一些注意事项
- 一文读懂Spring中的AOP机制
- Android Training - 使用IntentService运行任务(Lesson 2 - 发送任务给IntentService)
- 2020人工神经网络第一次作业-参考答案第三部分
- 安防工程商必须知道的PoE供电真相
- 各个大厂的机器学习平台概述
- html页面显示html代码怎么写,求助这段代码如何转换成正常可看的HTML页面
- Golang垃圾回收机制(一)
- MVC 之var与dynamic
- [bzoj1303][CQOI2009]中位数图
- 智林STM32程序源代码的分析和整理03(转帖)
- application.yml改成bootstrap.yml不报错了(Failed to configure a DataSource: ‘url’ attribute)
- ktv app html,ktv.html
- RestTemplate HttpMessageConverter报错的解决方案no suitable HttpMessageConverter
- 多线程编程核心技术日记
- ERROR: Unsupported method: AndroidProject.getVariantNames().
- php 安全处理,php ddos 安全处理代码
- hcie lab 实验挂了怎么办?
- 3D打印机之Marlin固件配置
- Unity3D中MonoDevelop无法使用