zoukankan      html  css  js  c++  java
  • 每日总结

      昨天实现了折线图,今天实现柱状图的显示。其实两者的实现思路差不多,都是先获得数据,然后将数据和图标绑定即可,

    代码如下:

    public class ZHUZHUANGTU 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 BarChart barChart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 去除状态栏
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_z_h_u_z_h_u_a_n_g_t_u);
    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();
    initBarChart(YUAN);
    }
    private void initBarChart(List<reason> list) {
    barChart = findViewById(R.id.bar_chart2);
    barChart.getDescription().setEnabled(false); // 不显示描述
    barChart.setExtraOffsets(20, 20, 20, 20); // 设置饼图的偏移量,类似于内边距 ,设置视图窗口大小
    setAxis(list); // 设置坐标轴
    setLegend(); // 设置图例
    setData(list); // 设置数据
    }
    private void setData(List<reason> list) {
    List<IBarDataSet> sets = new ArrayList<>();
    // 此处有两个DataSet,所以有两条柱子,BarEntry()中的x和y分别表示显示的位置和高度
    // x是横坐标,表示位置,y是纵坐标,表示高度
    List<BarEntry> barEntries1 = new ArrayList<>();
    for(int i=0;i<list.size();i++){
    barEntries1.add(new BarEntry(i, Float.parseFloat(list.get(i).getWendu())));
    }

    BarDataSet barDataSet1 = new BarDataSet(barEntries1, "");
    barDataSet1.setValueTextColor(Color.RED); // 值的颜色
    barDataSet1.setValueTextSize(15f); // 值的大小
    barDataSet1.setColor(Color.parseColor("#F7F709")); // 柱子的颜色
    barDataSet1.setLabel("温度"); // 设置标签之后,图例的内容默认会以设置的标签显示
    // 设置柱子上数据显示的格式
    barDataSet1.setValueFormatter(new IValueFormatter() {
    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
    // 此处的value默认保存一位小数
    return value + "°C";
    }
    });

    sets.add(barDataSet1);
    BarData barData = new BarData(sets);
    barData.setBarWidth(0.3f); // 设置柱子的宽度
    barChart.setData(barData);
    }

    private void setLegend() {
    Legend legend = barChart.getLegend();
    legend.setFormSize(12f); // 图例的图形大小
    legend.setTextSize(15f); // 图例的文字大小
    legend.setDrawInside(true); // 设置图例在图中
    legend.setOrientation(Legend.LegendOrientation.VERTICAL); // 图例的方向为垂直
    legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT); //显示位置,水平右对齐
    legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); // 显示位置,垂直上对齐
    // 设置水平与垂直方向的偏移量
    legend.setYOffset(55f);
    legend.setXOffset(30f);
    }
    private void setAxis(List<reason> list) {
    // 设置x轴
    XAxis xAxis = barChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // 设置x轴显示在下方,默认在上方
    xAxis.setDrawGridLines(false); // 将此设置为true,绘制该轴的网格线。
    xAxis.setLabelCount(5); // 设置x轴上的标签个数
    xAxis.setTextSize(10f); // x轴上标签的大小
    String labelName[] =new String[list.size()];
    for(int i=0;i<list.size();i++){
    labelName[i]=list.get(i).getRiqi().substring(5);
    }
    // 设置x轴显示的值的格式
    xAxis.setValueFormatter(new IAxisValueFormatter() {
    @Override
    public String getFormattedValue(float value, AxisBase axis) {
    if ((int) value < labelName.length) {
    return labelName[(int) value];
    } else {
    return "";
    }
    }
    });
    xAxis.setYOffset(15); // 设置标签对x轴的偏移量,垂直方向

    // 设置y轴,y轴有两条,分别为左和右
    YAxis yAxis_right = barChart.getAxisRight();
    yAxis_right.setAxisMaximum(600f); // 设置y轴的最大值
    yAxis_right.setAxisMinimum(0f); // 设置y轴的最小值
    yAxis_right.setEnabled(false); // 不显示右边的y轴

    YAxis yAxis_left = barChart.getAxisLeft();
    yAxis_left.setAxisMaximum(40f);
    yAxis_left.setAxisMinimum(30f);
    yAxis_left.setTextSize(15f); // 设置y轴的标签大小
    }
    }
  • 相关阅读:
    c#基础问题笔记(一)
    自动化技术中的进给电气传动研习笔记2
    自动化技术中的进给电气传动研习笔记1
    汉字在电脑中是如何存储与编码的呢?
    三十分钟掌握STL
    python练习:函数2
    python练习:函数3
    Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form ResumeForm needs updating.
    vue 数组对象取对象的属性: Cannot read property 'xxxx' of undefined
    python练习:函数4
  • 原文地址:https://www.cnblogs.com/ruangongwangxiansheng/p/14908737.html
Copyright © 2011-2022 走看看