AndroidPlot FixedSizeEditableXYSeries如何使用

时间:2017-02-16 23:55:41

标签: androidplot

我是android新手,非常新的android情节。你能指点一个使用FixedSizeEditableXYSeries的例子吗?

我的目标是创建一个流图,显示Android应用程序中的最新传感器读数。

由于

===================更新 - 与@Nick讨论后==================== < / p>

public class MainActivity extends AppCompatActivity {


    // Create the redrawer so that the plot is updated
    private Redrawer redrawer;

    // create the message receiver - data is received via broadcasts
    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // Get extra data included in the Intent
            String message = intent.getStringExtra("CurrentHR");

            Log.d("ReceivedHR ",message);

            // Now put the new data point at the end of the FixedSizeEditableXYSeries, move all data points by 1.
            for (int index=0;index<9;index++){

                if(index<9){
                    hrHistory.setY(hrHistory.getY(index+1),index);
                }else{
                    hrHistory.setY(Float.parseFloat(message),9);
                }
            }


        }
    };

    // create a few references
    private XYPlot xyPlot;
    private FixedSizeEditableXYSeries hrHistory;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_heart_rate);

        // Now find the plot views
        xyPlot = (XYPlot)findViewById(R.id.xyPlot);

        // Declare the local broadcast manager
        LocalBroadcastManager.getInstance(this).registerReceiver(
                mMessageReceiver, new IntentFilter("hrUpdate"));


        // now put in some data
        hrHistory = new FixedSizeEditableXYSeries("HR",10);

        xyPlot.addSeries(hrHistory, new LineAndPointFormatter(Color.GREEN,Color.RED,null,null));
        xyPlot.setRangeBoundaries(40, 120, BoundaryMode.FIXED);
        xyPlot.setDomainBoundaries(0, 20, BoundaryMode.FIXED);
    }

    @Override
    protected void onResume(){
        super.onResume();


        // set a redraw rate of 1hz and start immediately:
        redrawer = new Redrawer(xyPlot, 1, true);
    }
}

这给了我一个漂亮的图表但没有线条。当新数据填满FixedSizeEditableXYSeries时,情节看起来不像是更新。

1 个答案:

答案 0 :(得分:1)

如果你想要滚动行为,那么FixedSizeEditableXYSeries将是错误的选择;当您的数据滚动时,您基本上将最新值排入队列并将最旧的值出列;链表类型结构将是更好的选择。

您可以实施XYSeries并使用您喜欢的任何合适的数据结构进行备份,也可以使用SimpleXYSeries,它已经支持队列操作la removeFirst()和{{1} }。在演示应用程序中有一个动态滚动图的一个很好的例子:OrientationSensorExampleActivity。行235-245显示上述具体操作。