Android自定义View:雷达图/蜘蛛网图

运行效果图

运行效果图

雷达图结构分析

雷达图结构

对雷达图进行结构拆分,得到一个清晰的思路,这些结构也就是需要绘制的部分。为了能够有更好的扩展性,我将它们作为可定制的属性暴露出来,以下是结构属性表:

结构 相关属性 描述
bone boneColor 骨架颜色
- boneWidth 骨架宽度
net netColor 网线颜色
- netWidth 网线宽度
node nodeColor 结点颜色
- nodeRadius 结点半径
cover coverColor 覆盖层(由各种属性的值组成的覆盖层)颜色
text textColor 文本颜色
- textSize 文本大小
- labelMargin 文本与雷达图间距

如何使用?以下是上面效果图的代码:

xml

<win.smartown.library.radarview.RadarView
    android:id="@+id/radar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:boneColor="#5392FF"
    app:boneWidth="0.5dp"
    app:coverColor="#380392FF"
    app:labelMargin="10dp"
    app:netColor="#5392FF"
    app:netWidth="1dp"
    app:nodeColor="#53AFFF"
    app:nodeRadius="3dp"
    app:textColor="#868686"
    app:textSize="12sp">
</win.smartown.library.radarview.RadarView>

设置适配器

        RadarView radarView = findViewById(R.id.radar);
        radarView.setAdapter(new RadarAdapter() {
            @Override
            public int getItemCount() {
                return 12;
            }

            @Override
            public int getMaxValue() {
                return 5;
            }

            @Override
            public int getValue(int position) {
                if (position > getMaxValue()) {
                    return getMaxValue();
                }
                return position;
            }

            @Override
            public String getName(int position) {
                return "Label" + position;
            }
        });

难点总结

  • 主要就是要计算各个点的坐标,每一个交叉点的坐标需要计算出来,好在这是一个非常标准的数学模型,可以通过公式计算出来,以下是计算坐标的代码:
//[centerX,centerY]为中心点坐标,radius为待求坐标到中心点的距离
float x = (float) (centerX + radius * Math.cos(degree * Math.PI / 180));
float y = (float) (centerY + radius * Math.sin(degree * Math.PI / 180));

最后放上源码

https://github.com/xiaoowuu/CustomView

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,020评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,859评论 2 59
  • 我是2014年8月加入简书的,犹记得那时简书还没有现在这么热门,当时我曾在简书发表过一篇文章《后来我们活成了山寨版...
    樱宁阅读 457评论 0 11
  • 开学的时候 小黎告诉了我们一个新词 叫OBB 问她啥意思 “喔粑粑” 现在我们的对话都成了这样 “唉” “咋子” ...
    困守阅读 771评论 0 0
  • 近一年来,我越发感受到,碎片化的学习,特别是对于音频学习,如果只是听一遍就了事,那其实真正吸收到的知识很少,甚至过...
    兮兮码字的地方阅读 680评论 0 0