每日总结

  老师又发布了个人作业的第三阶段,这次的要求包括生成柱状图,折线图还有密度地图。前两部分在网上找到了相关的内容即可生成,后续地图的实现没有思路就暂时不做这一部分了。

对于折线图的实现,在网上查找相关内容,找到了这部分的代码,将自己的数据整理进去即可实现折线图的显示,

代码如下:

public class ZheXianTu extends AppCompatActivity {
private DataBase databaseHelper; //用于创建帮助器对象
private SQLiteDatabase db; //用于创建数据库对象
private static final String name = "JZ.db"; //数据库名称
private static final int version = 1; //数据库版本
private LocationManager locationManager;
private LineChart lineChart;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zhe_xian_tu);
Intent intent=getIntent();
String Id=intent.getStringExtra("ThisID");
List<reason> YUAN=new ArrayList<>();
TextView textView1 = (TextView) findViewById(R.id.textView11);
databaseHelper = new DataBase(this, name, null, version);
DataBase moh=new DataBase(this,"JZ.db", null, 1);
SQLiteDatabase db = moh.getReadableDatabase(); // 以只读的方式打开数据库
String sql = "select * from jilu where xuehao="+Id+";";
Cursor cursor = db.rawQuery(sql, null);
while (cursor.moveToNext()) {
String id = cursor.getString(cursor.getColumnIndex("xuehao"));
String riqi=cursor.getString(cursor.getColumnIndex("riqi"));
String time=cursor.getString(cursor.getColumnIndex("time"));
String dizhi=cursor.getString(cursor.getColumnIndex("dizhi"));
String wendu=cursor.getString(cursor.getColumnIndex("wendu"));
String teshu=cursor.getString(cursor.getColumnIndex("teshu"));
String yuanyin=cursor.getString(cursor.getColumnIndex("yuanyin"));
String banji=cursor.getString(cursor.getColumnIndex("banji"));
reason person = new reason(id,riqi,time,dizhi,wendu,teshu,yuanyin);
YUAN.add(person); // 添加到数组
}
cursor.close();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}

//初始化控件
lineChart = findViewById(R.id.lc);
initLineChart(YUAN);
}
private void initLineChart(List<reason> list){
lineChart.animateXY(2000, 2000); // 呈现动画
Description description = new Description();
description.setText(""); //自定义描述
lineChart.setDescription(description);
Legend legend = lineChart.getLegend();
legend.setTextColor(Color.WHITE);
setYAxis(list);
setXAxis(list);
setData(list);

}
private void setYAxis(List<reason> list){
YAxis yAxisLeft = lineChart.getAxisLeft();// 左边Y轴
yAxisLeft.setDrawAxisLine(true); // 绘制Y轴
yAxisLeft.setDrawLabels(true); // 绘制标签
yAxisLeft.setAxisMaxValue(40); // 设置Y轴最大值
yAxisLeft.setAxisMinValue(32); // 设置Y轴最小值
yAxisLeft.setGranularity(3f); // 设置间隔尺寸
yAxisLeft.setTextColor(Color.WHITE); //设置颜色
yAxisLeft.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return (int)value + "℃";
}
});
// 右侧Y轴
lineChart.getAxisRight().setEnabled(false); // 不启用
}
private void setXAxis(List<reason> list){
// X轴
XAxis xAxis = lineChart.getXAxis();
xAxis.setDrawAxisLine(false); // 不绘制X轴
xAxis.setDrawGridLines(false); // 不绘制网格线
// 模拟X轴标签数据
final String[] weekStrs = new String[list.size()];
for(int i=0;i<list.size();i++){
weekStrs[i]=list.get(i).getRiqi().substring(5);
}
xAxis.setLabelCount(weekStrs.length); // 设置标签数量
xAxis.setTextColor(Color.GREEN); // 文本颜色
xAxis.setTextSize(10f); // 文本大小为18dp
xAxis.setGranularity(1f); // 设置间隔尺寸
// 使图表左右留出点空位
xAxis.setAxisMinimum(-0.1f); // 设置X轴最小值
//设置颜色
xAxis.setTextColor(Color.WHITE);
// 设置标签的显示格式
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return weekStrs[(int) value];
}
});
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // 在底部显示
}
private void setData(List<reason> list){

List<Entry> shuju=new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
shuju.add(new Entry(i, Float.parseFloat(list.get(i).getWendu())));

}
// 2. 分别通过每一组Entry对象集合的数据创建折线数据集
LineDataSet lineDataSet1 = new LineDataSet(shuju, "温度");

lineDataSet1.setCircleRadius(5); //设置点圆的半径

lineDataSet1.setDrawCircleHole(false); // 不绘制圆洞,即为实心圆点

// 值的字体大小为12dp
lineDataSet1.setValueTextSize(12f);

//将每一组折线数据集添加到折线数据中
LineData lineData = new LineData(lineDataSet1);
//设置颜色
lineData.setValueTextColor(Color.WHITE);
//将折线数据设置给图表
lineChart.setData(lineData);
}

}

posted @ 2021-03-15 19:42  软工新人  阅读(84)  评论(0编辑  收藏  举报