依赖
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