2013-06-20 14 views
6

Quando eseguo il codice qui sotto e aggiungere in mySimpleXYPlot.getGraphWidget().getBorderPaint().setColor(Color.WHITE);androidPlot bordo nero

l'applicazione si blocca quando lancio sul mio dispositivo.

quello che sto cercando di ottenere è eliminare il bordo nero attorno all'intero grafico. ha uno spessore di circa 2 cm sul lato superiore, sinistro e inferiore del grafico. C'è un modo per sbarazzarmi di questo confine nero?

public class MainActivity extends Activity { 

private XYPlot mySimpleXYPlot; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

// Create a couple arrays of y-values to plot: 
    Number[] days = { 1 , 2 , 3 , 4 , 5 , 6 , 7 }; 
    Number[] values = { 380, 1433, 1965, 3200, 3651, 3215, 3217 }; 

    // initialize our XYPlot reference: 
    mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); 
    mySimpleXYPlot.getBackgroundPaint().setColor(Color.WHITE); 
    mySimpleXYPlot.setBorderStyle(XYPlot.BorderStyle.NONE, null, null); 
    mySimpleXYPlot.getGraphWidget().getBackgroundPaint().setColor(Color.WHITE); 
    mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE); 



    // Domain 
    mySimpleXYPlot.getGraphWidget().setDomainLabelPaint(null); 
    mySimpleXYPlot.getGraphWidget().setDomainOriginLinePaint(null); 
    mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, days.length);  
    mySimpleXYPlot.setDomainValueFormat(new DecimalFormat("0")); 


    //Range 
    mySimpleXYPlot.getGraphWidget().setRangeOriginLinePaint(null); 
    mySimpleXYPlot.setRangeStep(XYStepMode.SUBDIVIDE, values.length); 
    mySimpleXYPlot.setRangeValueFormat(new DecimalFormat("0")); 


    //Remove legend 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getLegendWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getDomainLabelWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getRangeLabelWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getTitleWidget()); 

    // Turn the above arrays into XYSeries': 
    XYSeries series1 = new SimpleXYSeries(
      Arrays.asList(days),   
      Arrays.asList(values), 
      "Series1");        // Set the display title of the series 

    // Create a formatter to use for drawing a series using LineAndPointRenderer: 
    LineAndPointFormatter series1Format = new LineAndPointFormatter(
      Color.rgb(0, 200, 0),     // line color 
      Color.rgb(0, 100, 0),     // point color 
      Color.CYAN);       // fill color 

// setup our line fill paint to be a slightly transparent gradient: 
    Paint lineFill = new Paint(); 
    lineFill.setAlpha(200); 
    lineFill.setShader(new LinearGradient(0, 0, 0, 250, Color.WHITE, Color.GREEN, Shader.TileMode.MIRROR)); 

    series1Format.setFillPaint(lineFill); 

    // add a new series' to the xyplot: 
    mySimpleXYPlot.addSeries(series1, series1Format); 

    // by default, AndroidPlot displays developer guides to aid in laying out your plot. 
    // To get rid of them call disableAllMarkup(): 
    mySimpleXYPlot.disableAllMarkup(); 
} 

} 

risposta

11

Se si vuole sbarazzarsi di tutto il colore dietro il grafico, è necessario disporre dei seguenti tre metodi. Ognuno di questi si libera di diverse parti.

//This gets rid of the gray grid 
mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.TRANSPARENT); 

//This gets rid of the black border (up to the graph) there is no black border around the labels 
mysimpleXYPlot.getBackgroundPaint().setColor(Color.TRANSPARENT); 

//This gets rid of the black behind the graph 
mySimpleXYPlot.getGraphWidget().getBackgroundPaint().setColor(Color.TRANSPARENT); 

//With a new release of AndroidPlot you have to also set the border paint 
plot.getBorderPaint().setColor(Color.TRANSPARENT); 

Spero che questo aiuti.

+4

FWIW Ho dovuto chiamare 'mXYPlot.setPlotMargin {Left, Right, Top, Bottom} (0);' per nascondere tutti i bordi. – Diederik

+1

@Diederik, penso di amarti. – Joakim

3

linea di confine può essere nascosto con questo metodo:

plot.setBorderPaint(null); 
plot.setPlotMargins(0, 0, 0, 0); 
0

sono stato in grado di capire come risolvere il grafico con queste informazioni, ma ho dovuto mettere insieme le informazioni da alcuni di questi posti. Sembra che ci siano 4 diverse aree di sfondo: * griglia (e etichette degli assi) * area intorno al grafico * bordo attorno al grafico. * margine intorno al confine

  1. Il colore di sfondo per la griglia e la gamma/sono impostate le etichette di dominio utilizzando plot.getGraphWidget().getBackgroundPaint().setColor(background_color);

  2. L'area intorno alla griglia può ottenere fissato dal: plot.getBackgroundPaint().setColor(background_color);

  3. Questo lascia ancora un bordo disegnato attorno al grafico. È possibile sbarazzarsi di confine: plot.setBorderPaint(null);

o impostare il colore di sfondo

plot.getBorderPaint().setColor(background_color);

  1. Questo lascia il margine intorno l'intera trama. Questo può essere rimosso utilizzando plot.setPlotMargins(0, 0, 0, 0);

Ci dovrebbe essere un modo per cambiare il colore del margine invece di rimuoverlo ma non preoccuparsi di capirlo.