0

ここに画像の説明を入力してください

ここに画像の説明を入力してください

現在、AChartEngineを使用してAndroidで棒グラフを作成しています。アプリケーションを実行した後、最初はエミュレータが下の最初の画像のように表示されます。しかし、私はこれを行う方法を下の2番目の画像のように示す必要がありますか?

また、背景の色を変更する必要があります。また、棒グラフの色を変更したいのですが、これらの方法は?

これらのコードを試しましたが、機能しません

renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.GRAY);

参考のために私の情報源を見つけてください。

Chart.java

public class Chart extends Activity {
EditText edt1, edt2;
TextView txtv1;
Button btn;
Bundle data;

String[] orderNo = new String[10];
int[] freightRate = new int[10];
int[] marginPercent = new int[10];

@Override
public void onCreate(Bundle savedInstanceState)     {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    edt1 = (EditText) findViewById(R.id.editText1);
    edt2 = (EditText) findViewById(R.id.editText2);
    btn = (Button) findViewById(R.id.button1);

    btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            getTMSChart(edt1.getText().toString(), edt2.getText().toString());
            Intent intnt = new Intent(v.getContext(), BarGraphActivity.class);
            intnt.putExtras(data);

            startActivity(intnt);
        }
    });
}

public void getTMSChart(String FromDate, String ToDate) 
{

    System.setProperty("http.keepAlive", "false");
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

    envelope.dotNet = true;

    String METHOD = "GetTMSChart";
    String NAMESPACE = "http://tempuri.org/";
    String SOAP_ACTION = "http://tempuri.org/GetTMSChart";
    String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";

    SoapObject request = new SoapObject(NAMESPACE, METHOD);

    request.addProperty("FromDate", FromDate.trim());
    request.addProperty("ToDate", ToDate.trim());
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapObject result = (SoapObject) envelope.bodyIn;
        SoapObject root = (SoapObject) ((SoapObject) (result).getProperty(0)).getProperty("NewDataSet");
        int tablesCount = root.getPropertyCount();

        data = new Bundle();

        for (int i = 0; i < tablesCount; i++) {

            SoapObject table = (SoapObject) root.getProperty(i);
            orderNo[i] = table.getPropertyAsString("Order_No");
            freightRate[i] = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
            marginPercent[i] = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));               

/*Toast.makeText(getApplicationContext(), "Order No:" + orderNo[i] + "\nFreigtRate:" + freightRate[i] + "\nMarginPc:" + marginPercent[i], Toast.LENGTH_SHORT).show();*/
        }
        data.putStringArray("orderno", orderNo);
        data.putIntArray("freightrate", freightRate);
        data.putIntArray("marginpercent", marginPercent);
        data.putInt("count",tablesCount);
    }
catch (Exception e) 
{
    Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
    e.printStackTrace();
    }   }}

BarGraphActivity.java

public class BarGraphActivity extends Activity{

String[] orderNo = new String[10];
int[] freightRate = new int[10];
int[] marginPercent = new int[10];
int count;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);

    Bundle idata = getIntent().getExtras();
    if (idata !=null)
    {
        orderNo = idata.getStringArray("orderno");  
        freightRate = idata.getIntArray("freightrate");
        marginPercent = idata.getIntArray("marginpercent");
        count = idata.getInt("count");


        CategorySeries series = new CategorySeries("Order-FreightRate Graph");
        for ( int i = 0; i < count; i++){
            series.add(orderNo[i], freightRate[i]);
        }


        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        dataset.addSeries(series.toXYSeries());

        XYSeriesRenderer renderer = new XYSeriesRenderer();
        renderer.setDisplayChartValues(true);
        //renderer.setChartValuesSpacing(1);



        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.addSeriesRenderer(renderer);

        for ( int i = 0; i < count; i++){
            mRenderer.addXTextLabel(i+1, orderNo[i]);
            }

        mRenderer.setZoomButtonsVisible(true);
        mRenderer.setBarSpacing(0.5);


        Intent intent = ChartFactory.getBarChartIntent(getApplicationContext(), dataset, mRenderer, Type.DEFAULT);
        startActivity(intent);      
        }        }  }

貴重なお時間をいただきありがとうございます!..

4

1 に答える 1

1

こんにちは、チャートの背景色を変更したい場合は、これらの方法を使用してください

   mrenderer.setApplyBackgroundColor(true);
   mrenderer.setBackgroundColor(Color.parseColor("#898989")); // here you have to give hexa decimal code 
   mrenderer.setMarginsColor(Color.parseColor("#898989")); // here you have to give hexa decimal code

バーの色を変更したい場合は、このようにすることを意味します

       int[] colors = new int[] { Color.parseColor("#DAE1EB"), Color.parseColor("#406193")};
     int color_length = colors.length;
     for (int i = 0; i < color_length; i++) 
     {
         SimpleSeriesRenderer r = new SimpleSeriesRenderer();
         r.setColor(colors[i]);
         r.setChartValuesSpacing(5);
         mrenderer.addSeriesRenderer(r);
     }   

複数のレンダラーを作成する場合は、デュアルバーに異なる色を使用することを意味します。単一のバーを作成する場合は、1つの色のみを指定することを意味します。それは動作します。

于 2012-11-16T09:33:18.067 に答える