如何在java中使用chart动态设置图表大小??
发布网友
发布时间:2022-04-30 05:32
我来回答
共2个回答
热心网友
时间:2023-10-17 08:38
List<PointValue> valuesLow = new ArrayList<PointValue>(); //每天的最低温度
List<PointValue> valuesHigh = new ArrayList<PointValue>(); //每天的最高温度
for(int i=0;i<list.size();i++){ //list为数据集合 数据结构如下:
/** "future":[
{
"date":"2016-03-25",
"dayTime":"晴",
"night":"晴",
"temperature":"15°C / 3°C",
"week":"今天",
"wind":"无持续风向 小于3级"
},
] */
String[] temp=list.get(i).getTemperature().split("/",2);
//x轴座标其实就是从i开始到需要的那天结束 此次截取字符串。。
valuesHihg.add(new PointValue(i,Integer.parseInt(temp[0].trim().substring(0,temp[0].length()-3).trim())).setLabel(temp[0]));
if (temp[1].length()==0||temp[1]==null||temp.length==1)
temp[1] = "0000";
valuesLow.add(new PointValue(i,Integer.parseInt(temp[1].trim().substring(0,temp[1].length()-3).trim())).setLabel(temp[1]));
}
initLineChart(valuesHigh,valuesLow);//处理图表
下面就是对图表各属性的设置了
/**
* 初始化LineChart的一些设置
*/
private void initLineChart(List<PointValue> highPointValues,List<PointValue> lowPointValues){
List<Line> lines = new ArrayList<Line>();
Line line = new Line(highPointValues).setColor(Color.parseColor("#C0D79C")).setStrokeWidth(1); //折线的颜色、粗细
line.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状 这里是圆形 (有三种 :ValueShape.SQUARE ValueShape.CIRCLE ValueShape.SQUARE)
line.setCubic(true);//曲线是否平滑
line.setFilled(false);//是否填充曲线的面积
line.setHasLabels(true);//曲线的数据坐标是否加上备注
line.setPointRadius(3); //座标点大小
line.setHasLabelsOnlyForSelected(false);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效)
line.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示
line.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示
lines.add(line);
Line lineLow = new Line(lowPointValues).setColor(Color.parseColor("#C0D79C")).setStrokeWidth(1);
lineLow.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状 这里是圆形 (有三种 :ValueShape.SQUARE ValueShape.CIRCLE ValueShape.SQUARE)
lineLow.setCubic(true);//曲线是否平滑
lineLow.setFilled(false);//是否填充曲线的面积
lineLow.setHasLabels(true);//曲线的数据坐标是否加上备注
lineLow.setPointRadius(3);
lineLow.setHasLabelsOnlyForSelected(false);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效)
lineLow.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示
lineLow.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示
lines.add(lineLow);
LineChartData data = new LineChartData();
data.setValueLabelBackgroundColor(Color.TRANSPARENT); //此处设置坐标点旁边的文字背景
data.setValueLabelBackgroundEnabled(false);
data.setValueLabelsTextColor(Color.BLACK); //此处设置坐标点旁边的文字颜色 data.setLines(lines);
//设置行为属性,支持缩放、滑动以及平移
mWeatherChart.setInteractive(false);
// mWeatherChart.setZoomType(ZoomType.HORIZONTAL_AND_VERTICAL);
// mWeatherChart.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
mWeatherChart.setScrollEnabled(false);
mWeatherChart.setLineChartData(data);
mWeatherChart.setValueTouchEnabled(false);
mWeatherChart.setFocusableInTouchMode(false);
mWeatherChart.setVisibility(View.VISIBLE);
mWeatherChart.startDataAnimation();
}追问我只要改变他的长与宽,你这么多有点乱还望请给我个简便的大神
热心网友
时间:2023-10-17 08:38
源代码放上来研究一下
热心网友
时间:2023-10-17 08:38
List<PointValue> valuesLow = new ArrayList<PointValue>(); //每天的最低温度
List<PointValue> valuesHigh = new ArrayList<PointValue>(); //每天的最高温度
for(int i=0;i<list.size();i++){ //list为数据集合 数据结构如下:
/** "future":[
{
"date":"2016-03-25",
"dayTime":"晴",
"night":"晴",
"temperature":"15°C / 3°C",
"week":"今天",
"wind":"无持续风向 小于3级"
},
] */
String[] temp=list.get(i).getTemperature().split("/",2);
//x轴座标其实就是从i开始到需要的那天结束 此次截取字符串。。
valuesHihg.add(new PointValue(i,Integer.parseInt(temp[0].trim().substring(0,temp[0].length()-3).trim())).setLabel(temp[0]));
if (temp[1].length()==0||temp[1]==null||temp.length==1)
temp[1] = "0000";
valuesLow.add(new PointValue(i,Integer.parseInt(temp[1].trim().substring(0,temp[1].length()-3).trim())).setLabel(temp[1]));
}
initLineChart(valuesHigh,valuesLow);//处理图表
下面就是对图表各属性的设置了
/**
* 初始化LineChart的一些设置
*/
private void initLineChart(List<PointValue> highPointValues,List<PointValue> lowPointValues){
List<Line> lines = new ArrayList<Line>();
Line line = new Line(highPointValues).setColor(Color.parseColor("#C0D79C")).setStrokeWidth(1); //折线的颜色、粗细
line.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状 这里是圆形 (有三种 :ValueShape.SQUARE ValueShape.CIRCLE ValueShape.SQUARE)
line.setCubic(true);//曲线是否平滑
line.setFilled(false);//是否填充曲线的面积
line.setHasLabels(true);//曲线的数据坐标是否加上备注
line.setPointRadius(3); //座标点大小
line.setHasLabelsOnlyForSelected(false);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效)
line.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示
line.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示
lines.add(line);
Line lineLow = new Line(lowPointValues).setColor(Color.parseColor("#C0D79C")).setStrokeWidth(1);
lineLow.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状 这里是圆形 (有三种 :ValueShape.SQUARE ValueShape.CIRCLE ValueShape.SQUARE)
lineLow.setCubic(true);//曲线是否平滑
lineLow.setFilled(false);//是否填充曲线的面积
lineLow.setHasLabels(true);//曲线的数据坐标是否加上备注
lineLow.setPointRadius(3);
lineLow.setHasLabelsOnlyForSelected(false);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效)
lineLow.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示
lineLow.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示
lines.add(lineLow);
LineChartData data = new LineChartData();
data.setValueLabelBackgroundColor(Color.TRANSPARENT); //此处设置坐标点旁边的文字背景
data.setValueLabelBackgroundEnabled(false);
data.setValueLabelsTextColor(Color.BLACK); //此处设置坐标点旁边的文字颜色 data.setLines(lines);
//设置行为属性,支持缩放、滑动以及平移
mWeatherChart.setInteractive(false);
// mWeatherChart.setZoomType(ZoomType.HORIZONTAL_AND_VERTICAL);
// mWeatherChart.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
mWeatherChart.setScrollEnabled(false);
mWeatherChart.setLineChartData(data);
mWeatherChart.setValueTouchEnabled(false);
mWeatherChart.setFocusableInTouchMode(false);
mWeatherChart.setVisibility(View.VISIBLE);
mWeatherChart.startDataAnimation();
}追问我只要改变他的长与宽,你这么多有点乱还望请给我个简便的大神
热心网友
时间:2023-10-17 08:38
源代码放上来研究一下