Android

Android 个性雷达图分析表

2021-07-16  本文已影响0人  遇见编程

依赖

 implementation 'q.rorbin:RadarView:1.0.4'
xml code 说明
app:radar_layer setLayer 雷达网层数
app:rotation_enable setRotationEnable 是否打开手势旋转
app:web_mode setWebMode 雷达网模式(多边形、圆形...)
app:max_value setMaxValue 最外圈的值
app:vertex_line_color setVertexLineColor 顶点连线颜色
app:vertex_line_width setVertexLineWidth 顶点连线宽度
app:layer_line_color setLayerLineColor 雷达网线条颜色
app:layer_line_width setLayerLineWidth 雷达网线条宽度
app:vertex_text setVertexText 顶点文字内容(字符串数组)
app:vertex_text_color setVertexTextColor 顶点文字颜色
app:vertex_text_size setVertexTextSize 顶点文字大小
app:vertex_icon_size setVertexIconSize 顶点图片的尺寸限制值
app:vertex_icon_position setVertexIconPosition 顶点图片相对于顶点文字的位置
app:vertex_icon_margin setVertexIconMargin 顶点图片相对于顶点文字的间距
app:vertex_text_offset setVertexTextOffset 顶点图文距最外层网偏移量
app:center_text_color setCenterTextColor 中心文字颜色
app:center_text_size setCenterTextSize 中心文字大小
app:center_text setCenterText 中心文字内容
方法说明
code 说明
setLayerColor 设置雷达网各层颜色
animeValue 展现一次数据添加动画
addData 添加数据
removeRadarData 删除一组数据
clearRadarData 删除所有数据
setEmptyHint 设置空数据时的提示
setMaxValue 设置数据区最大限制值
setMaxValues 设置数据区各顶点最大限制值
setVertexIconBitmap setVertexIconResid 设置顶点图片内容
添加数据

创建并添加数据

List<Float> values = new ArrayList<>();
Collections.addAll(values, 3.2f, 6.7f, 2f, 7f, 5.6f);
RadarData data = new RadarData(values);
mRadarView.addData(data);
code 说明
setLabel 数据的标注
setValue 设置(更改)数据值
setLineWidth 设置边线宽度
setValueText 数据值的描述
setValueTextEnable 是否显示描述
setValueTextSize 描述的文字大小
setVauleTextColor 描述的文字颜色

布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <rorbin.q.radarview.RadarView
        android:id="@+id/radarView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layer_line_color="#99FFFFFF"
        app:vertex_icon_margin="10dp"
        app:vertex_icon_position="top"
        app:vertex_icon_size="30dp"
        app:vertex_line_color="#99FFFFFF"
        app:vertex_text_color="#000 "
        app:vertex_text_offset="30dp" />

</RelativeLayout>

直接上代码

import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import rorbin.q.radarview.RadarData;
import rorbin.q.radarview.RadarView;

public class MainActivity extends AppCompatActivity {

    private RadarView mRadarView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //getSupportActionBar().hide();
        mRadarView = (RadarView) findViewById(R.id.radarView);
        mRadarView.setEmptyHint("无数据");

        List<Integer> layerColor = new ArrayList<>();
        Collections.addAll(layerColor, 0x3300bcd4, 0x3303a9f4, 0x335677fc, 0x333f51b5, 0x33673ab7);
        mRadarView.setLayerColor(layerColor);

        List<String> vertexText = new ArrayList<>();
        Collections.addAll(vertexText, "力量", "敏捷", "速度", "智力", "精神", "耐力");
        mRadarView.setVertexText(vertexText);

        List<Integer> res = new ArrayList<>();
        Collections.addAll(res, R.mipmap.power, R.mipmap.agile, R.mipmap.speed,
                R.mipmap.intelligence, R.mipmap.spirit, R.mipmap.endurance);
        mRadarView.setVertexIconResid(res);

        List<Float> values = new ArrayList<>();
        Collections.addAll(values, 3f, 6f, 2f, 7f, 5f, 1f);
        RadarData data = new RadarData(values);
        mRadarView.addData(data);

        List<Float> values2 = new ArrayList<>();
        Collections.addAll(values2, 7f, 1f, 4f, 2f, 8f, 3f);
        RadarData data2 = new RadarData(values2);
        data2.setValueTextEnable(true);
        data2.setVauleTextColor(Color.WHITE);
        data2.setValueTextSize(dp2px(10));
        data2.setLineWidth(dp2px(1));
        mRadarView.addData(data2);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = new MenuInflater(this);
        inflater.inflate(R.menu.main_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @SuppressLint("NonConstantResourceId")
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.toggle_rotation:
                mRadarView.setRotationEnable(!mRadarView.isRotationEnable());
                break;
            case R.id.anime_value:
                mRadarView.animeValue(2000);
                break;
            case R.id.change_layer:
                int randomInt = new Random().nextInt(6) + 1;
                mRadarView.setLayer(randomInt);
                break;
            case R.id.change_web_mode:
                if (mRadarView.getWebMode() == RadarView.WEB_MODE_POLYGON) {
                    mRadarView.setWebMode(RadarView.WEB_MODE_CIRCLE);
                } else {
                    mRadarView.setWebMode(RadarView.WEB_MODE_POLYGON);
                }
                break;
            case R.id.toggle_line_enable:
                mRadarView.setRadarLineEnable(!mRadarView.isRadarLineEnable());
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    private float dp2px(float dpValue) {
        final float scale = getResources().getDisplayMetrics().density;
        return dpValue * scale + 0.5f;
    }
}

main_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/toggle_rotation"
        android:title="toggle_rotation" />
    <item
        android:id="@+id/anime_value"
        android:title="anime_value" />

    <item
        android:id="@+id/change_layer"
        android:title="change_layer" />
    <item
        android:id="@+id/change_web_mode"
        android:title="change_web_mode" />

    <item
        android:id="@+id/toggle_line_enable"
        android:title="toggle_line_enable" />
</menu>
agile.png endurance.png intelligence.png lucky.png magic.png power.png speed.png spirit.png strength.png will.png

最后附上链接https://github.com/qstumn/RadarChart

上一篇 下一篇

猜你喜欢

热点阅读