Achartengine: перерисовка графа поверх нормального графа - PullRequest
1 голос
/ 09 марта 2012

В моем приложении я переключаю вид двух разных графиков.В первый раз график рисуется идеально, но когда я перехожу к другому и возвращаюсь, он выглядит так, как будто он рисует два раза один и тот же график, но разных размеров, и как только вы щелкаете по графику, он меняется и выглядит идеально.

Экран, когда он выглядит проводным, выглядит так:

The screen when it looks wired is:

Код, который рисует график, всегда один и тот же.Эта функция:

private void downloadInfo(String app, String object) {
    // Display flow graph
    //
    String query = "Select name from relation where obj_app = '" + app
            + "' and obj_name = '" + object
            + "' and obj_type = 1 and type= 22";
    String data = "name";
    String comparateur = new DataBaseAccess().execute(query, data);
    String compAux[] = comparateur.split("&");
    query = "Select * from data_1h where app = '" + app
            + "' and obj_name = '" + compAux[0] + "' and obj_type= 22";
    String file = new DataBaseAccess().execute(query, "file-date");
    String[] fileAux = file.split("&");
    date = fileAux[1];
    GraphicalView mChartView = new DebitGraph().execute(ShowGraph.this,
            fileAux[0], fileAux[1], compAux[0], object);
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.graph1);
    layout.removeAllViews();
    Display display = getWindowManager().getDefaultDisplay();
    RelativeLayout.LayoutParams paramsForChart1 = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.FILL_PARENT);
//  paramsForChart1.bottomMargin = 25;
    layout.addView(mChartView, paramsForChart1);
    // Display Meteo graph
    query = "Select name from relation where obj_app = '" + app
            + "' and obj_name = '" + object
            + "' and obj_type = 1 and type= 20";
    data = "name";
    String station = new DataBaseAccess().execute(query, data);
    String stationAux[] = station.split("&");
    query = "Select * from data_1h where app = '" + app
            + "' and obj_name = '" + stationAux[0] + "' and obj_type= 20";
    data = "file-date";
    file = new DataBaseAccess().execute(query, data);
    fileAux = file.split("&");
    GraphicalView mChartView2 = new Meteo().execute(ShowGraph.this,
            fileAux[0], fileAux[1], stationAux[0], prec, temp);
    RelativeLayout.LayoutParams paramsForChart2 = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.FILL_PARENT);
    layout = (RelativeLayout) findViewById(R.id.graph2);
    layout.removeAllViews();
//  paramsForChart2.bottomMargin = 25;
    layout.addView(mChartView2, paramsForChart2);

    // Display check boxes for temperature and precipitation
    RelativeLayout check = (RelativeLayout) findViewById(R.id.checks);
    check = (RelativeLayout) findViewById(R.id.checks);
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout checkbox = (LinearLayout) inflater.inflate(
            R.layout.checkboxes, null);
    check.addView(checkbox);

    // Update text bar text with meteo info
    /*
     * TextView meteo = (TextView) findViewById(R.id.meteo);
     * meteo.setText("Méteo " + stationAux[0] + " " + fileAux[1]);
     * meteo.setTextColor(Color.BLACK); meteo.setTextSize(14);
     */
    if (MyDialog.isShowing()) {
        MyDialog.dismiss();
    }
}

Я также изменил библиотеку achartengine, чтобы изменить кнопки масштабирования, но не более того!

В моем logCat я получаю это предупреждение каждый раз, когда экран сходит с ума:

03-13 12:01:16.767: W/InputManagerService(229): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@2b1fb958

Я искал эту ошибку на форуме, но любой из найденных ответов полезен!

Для получения дополнительной информации, похоже, у меня такая же проблема, как этаpost:

Achartengine: перерисовка графа поверх обычного графа

Но когда я комментирую свой onResume (), проблема не исчезает!

Есть идеи?Спасибо!

1 Ответ

2 голосов
/ 10 марта 2012

Когда вы вернетесь к представлению диаграммы, вам может потребоваться вызвать для него функцию repaint ().

Еще один способ избежать таких экранных артефактов - вызвать renderer.setInScroll (true);

Dan

...