android hellochart 实时绘制点

来源:互联网 发布:linux vi命令怎么使用 编辑:程序博客网 时间:2024/06/09 17:24
导入

compile 'com.github.lecho:hellocharts-library:1.5.8@aar'


布局文件

<lecho.lib.hellocharts.view.LineChartView    android:id="@+id/line_chart"    android:layout_width="match_parent"    android:layout_height="400dp" /><TextView    android:id="@+id/light_intensity_text"    android:layout_width="match_parent"    android:layout_height="40dp" />
主要代码
public class MainActivity extends AppCompatActivity implements SensorEventListener{    private LineChartView lineChartView;    private TextView lightIntensityTExtView;    private List<PointValue> pointValues=new ArrayList<>();    private List<AxisValue> axisValues=new ArrayList<>();    private List<Line> lines=new ArrayList<>();    LineChartData data=new LineChartData();    private SensorManager sensorManager;    private Sensor lightSensor;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lineChartView=(LineChartView)findViewById(R.id.line_chart);        lightIntensityTExtView=(TextView)findViewById(R.id.light_intensity_text);        sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);        lightSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);        initLineChart();    }    @Override    protected void onResume() {        super.onResume();        sensorManager.registerListener(this,lightSensor,sensorManager.SENSOR_DELAY_NORMAL);    }    @Override    protected void onStop() {        super.onStop();        sensorManager.unregisterListener(this);    }    @Override    public void onSensorChanged(SensorEvent event) {        lightIntensityTExtView.setText("光强:"+event.values[0]);        drawNewPoint(event.values[0]);        Log.d("point size:",Integer.toString(pointValues.size()));        Log.d("axis size:",Integer.toString(axisValues.size()));    }    @Override    public void onAccuracyChanged(Sensor sensor, int accuracy) {    }    private void initLineChart(){        //坐标轴        Axis axisX=new Axis();     //   axisX.setHasTiltedLabels(true);        axisX.setTextColor(Color.BLACK);        axisX.setMaxLabelChars(5);        axisX.setValues(axisValues);        axisX.setMaxLabelChars(5);        data.setAxisXBottom(axisX);        Axis axisY=new Axis();        axisY.setName("Y");        data.setAxisYLeft(axisY);        //设置行为属性        lineChartView.setInteractive(true);        lineChartView.setZoomType(ZoomType.HORIZONTAL_AND_VERTICAL);        lineChartView.setScrollEnabled(true);        lineChartView.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);        lineChartView.setVisibility(View.VISIBLE);    }    private void drawNewPoint(float value){        axisValues.add(new AxisValue(axisValues.size()+1).setLabel(Integer.toString(axisValues.size()+1)));        pointValues.add(new PointValue(pointValues.size()+1,(int)value));        Line line=new Line(pointValues).setColor(Color.BLUE);        line.setShape(ValueShape.CIRCLE);        line.setCubic(true);        line.setFilled(false);        line.setHasLabels(true);        line.setHasLines(true);        lines.add(line);        data.setLines(lines);        lineChartView.setLineChartData(data);        lineChartView.setZoomType(ZoomType.VERTICAL);        int x=axisValues.size();        Log.d("x-------->",Integer.toString(x));        if (x>20){            lineChartView.setCurrentViewport(refreshViewport(x-20,x,lineChartView.getMaximumViewport().height(),0));        }        }    private Viewport refreshViewport(float left,float right,float top,float bottom){        Viewport viewport=new Viewport();        viewport.left=left;        viewport.right=right;        viewport.top=top;        viewport.bottom=bottom;        return viewport;    }}