Giter Club home page Giter Club logo

xradarview's Introduction

XRadarView

🚌 XRadarView is a "A highly customizable radar view for Android". XRadarView 是一个可高度自定义的雷达图控件。

Lastest Version:
Download

更新日志

1.0.5 版本 更新内容

修复Issues 与material design冲突问题。

请注意此版本之后,边界线宽度使用boundaryWidth指定。

1.0.4版本 更新内容

  1. 支持圆形轮廓
  2. 支持区域颜色渐变 以上更新感谢 leixiong033wl386123298 提出的issue .

属性含义

XRadarView 支持高度自定义,其可调整属性及含义如下表所示。

属性 含义
count 几边形雷达
layerCount 几层蜘蛛网
drawableSize 图标的大小
drawablePadding 图标和文字间距
descPadding 标题描述与节点间距
titleSize 标题文字大小
dataSize 标题下面的数值的文字大小
radarPercent 雷达图图形占整个空间的比例
startColor 开启渐变色时,圆心处的颜色
endColor 开启渐变色时,外圈处的颜色
cobwebColor 正几边形的网线的颜色
lineColor 圆心与各个顶点连线的颜色
dataColor 数值文本的颜色
singleColor 如果不是多色区域,是单一的颜色
titleColor 标题文本的颜色
pointColor 圆点颜色
pointRadius 圆点半径大小
borderColor 边界线颜色
boundaryWidth 边界线的宽度
radiusColor 半径线的颜色
enabledBorder 是否画边界线
enabledAnimation 是否开启动画
enabledShowPoint 是否显示圆点
enabledPolygon 是否绘制网格
enabledShade 是否绘制渐变环
enabledRadius 是否绘制半径
enabledText 是否绘制文本
drawables 各项图标组成的数组
titles 标题数组(支持SpannableString)
percents 各项的值数组(转换成0-1之间的数值)
values 值的文本数组
colors 多色区域时,每个区域的颜色数组(数组长度可以小于count)
enabledRegionShader 是否允许区域颜色渐变
isCircle 区域轮廓是否为圆形

Demo中展示的XRadarView的全面功能(gif很大,github显示不完整已分割成3个Gif,建议查看Gif原图):

你也可以下载本项目的apk体验:

app-debug.apk

实战

原图是掌上英雄联盟中雷达图的截图:

下图是根据XRadarView设置几个属性简单实现的效果图:

如果您有其它效果的雷达图,可以提交Issues欢迎提交各种雷达图样式效果图,我会实现好之后贴出来。

如何使用

Download

XRadarView 添加以下依赖到项目的 build.gradle 文件:

compile 'com.orzangleli:xradar:1.0.4'

Enjoy it!:smile:

技术剖析

本项目的技术剖析将从开发到发布库的整个过程进行详细描述,具体文章请关注微信公众号获取最新文章。

License

MIT License

Todo

  1. 支持旋转角度
  2. 支持自定义标题与雷达图距离

xradarview's People

Contributors

hust201010701 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

xradarview's Issues

不能和Material Design 一起使用,如何解决?

和Material Design 的 属性文件撞一起了。

Information:Gradle tasks [:zhxy:generateDebugSources, :zhxy:generateDebugAndroidTestSources, :zhxy:mockableAndroidJar, :follow:generateDebugSources, :follow:generateDebugAndroidTestSources, :follow:mockableAndroidJar, :chained:generateDebugSources, :chained:generateDebugAndroidTestSources, :chained:mockableAndroidJar]
C:\Users\Administrator.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\2a6a5fcbca7d820cb35027346122b6d8\res\values\values.xml
Error:(246, 5) Attribute "borderWidth" already defined with incompatible format.
Error:(246, 5) Original attribute defined here.
D:\Android\TestDemo\zhxy\build\intermediates\res\merged\debug\values\values.xml
Error:(540) Attribute "borderWidth" already defined with incompatible format.
Error:(396) Original attribute defined here.
Error:java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing process D:\Android\sdk\build-tools\26.0.2\aapt.exe with arguments {package -f --no-crunch -I D:\Android\sdk\platforms\android-26\android.jar -M \?\D:\Android\TestDemo\zhxy\build\intermediates\manifests\full\debug\AndroidManifest.xml -S D:\Android\TestDemo\zhxy\build\intermediates\res\merged\debug -m -J \?\D:\Android\TestDemo\zhxy\build\generated\source\r\debug -F D:\Android\TestDemo\zhxy\build\intermediates\res\debug\resources-debug.ap_ --custom-package com.lsy.zhxy -0 apk --output-text-symbols \?\D:\Android\TestDemo\zhxy\build\intermediates\symbols\debug --no-version-vectors}
Error:com.android.ide.common.process.ProcessException: Error while executing process D:\Android\sdk\build-tools\26.0.2\aapt.exe with arguments {package -f --no-crunch -I D:\Android\sdk\platforms\android-26\android.jar -M \?\D:\Android\TestDemo\zhxy\build\intermediates\manifests\full\debug\AndroidManifest.xml -S D:\Android\TestDemo\zhxy\build\intermediates\res\merged\debug -m -J \?\D:\Android\TestDemo\zhxy\build\generated\source\r\debug -F D:\Android\TestDemo\zhxy\build\intermediates\res\debug\resources-debug.ap_ --custom-package com.lsy.zhxy -0 apk --output-text-symbols \?\D:\Android\TestDemo\zhxy\build\intermediates\symbols\debug --no-version-vectors}
Error:org.gradle.process.internal.ExecException: Process 'command 'D:\Android\sdk\build-tools\26.0.2\aapt.exe'' finished with non-zero exit value 1
Error:Execution failed for task ':zhxy:processDebugResources'.

Failed to execute aapt

建议加入多种图标设置方法

建议加入多种图标设置方法,目前 只能使用 drawable,在项目中,很多情况下都不会是使用本地drawable资源,更多的是使用其他的,例如我在做的项目,则是在网络动态加载图标


以下为一些修改参考:
`

//设置图标
public void setDrawables(int[] drawables) {
    this.drawables = drawables;
    this.bitmaps = null;
    invalidate();
}

//设置图标
public void setDrawables(Bitmap[] bitmaps) {
    setBitmaps(bitmaps);
}

//设置图标
public void setBitmaps(Bitmap[] bitmaps) {
    this.bitmaps = bitmaps;
    this.drawables = null;
    invalidate();
}

    //drawMultiLinesTextAndIcon()
    // 绘制图标
    if (drawableSize * drawableAvaiable != 0) {
        if (bitmap != null) {
            if (verticalValue == 1) {
                canvas.drawBitmap(bitmap, x + layout.getWidth(), y - drawableSize * drawableAvaiable / 2 - layout.getHeight() / 2 - descPadding, titlePaint);
            } else if (verticalValue == -1) {
                canvas.drawBitmap(bitmap, x + layout.getWidth(), y + descPadding + layout.getHeight() / 2 - drawableSize * drawableAvaiable / 2, titlePaint);
            } else {
                canvas.drawBitmap(bitmap, x + layout.getWidth(), y - drawableSize * drawableAvaiable / 2, titlePaint);
            }
        //btm.recycle();
        }
    }

//回收资源 (若是传入bitmap 建议调用,请在Activity/Fragment 的适当时机调用,如:onDestroy() )
public void recycle() {
    if (bitmaps != null) {
        for (Bitmap bitmap : bitmaps) {
            bitmap.recycle();
        }
    }

}

使用:

// 先加载控件其他内容,过后再加载图标
    if (NetUtil.isConn(mContext)) {
        Bitmap[] bitmaps = new Bitmap[url.length];
        // 从url 加载图片,获取bitmap
        new Thread(() -> {
            for (int i = 0; i < bitmaps.length; i++) {
                bitmaps[i] = !TextUtils.isEmpty(url[i]) ? returnBitMap(url[i]) : null;
            }
            //更新视图
            mHandler.post(() -> mRadarView.setDrawables(bitmaps));
        }).start();
    }

`

 // Fragment 的onDetach() 释放资源.
    @Override
    public void onDetach() {
        super.onDetach();
        if (mRadarView != null) mRadarView.recycle(); //释放bitmap
    }


XRadarView2.java.txt

用百分比不太实用!

setPercents传递的是0-1之间的数。一般实际项目中都是直接给出具体的数字,建议还是直接传递数值比较实际!
如果我一次设置多个雷达图貌似不支持!
xRadarView1.setPercents(percents);
xRadarView1.setPercents(percents1);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.