Метки оси X для времени (мм: ss) с помощью MPAndroidChart

#java #mpandroidchart

#java #mpandroidchart

Вопрос:

Я хотел бы отобразить метки xAxis как время в минутах и секундах mm:ss на моей линейной диаграмме MPAndroidChart. Я попытался создать ValueFormatter, однако, похоже, что это IAxisValueFormatter и getFormattedValue устарело.

У меня 40 кадров в секунду, поэтому для каждого 40-го кадра метки должны увеличиваться с 00: 01 и меняться с 00:59 на 01:00.

Можете ли вы помочь мне достичь этого?

введите описание изображения здесь

Мой код до сих пор для valueformatter является:

 xAxis.setValueFormatter(new MyFormatter());


public class MyFormatter implements IAxisValueFormatter {
@Override
public String getFormattedValue(float value, AxisBase axis) {

    int second = (int) value / 40
    return second   "s" //make it a string and return

}
  

Ответ №1:

Попробуйте это:

 import android.util.Log;
import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.formatter.ValueFormatter;

public class XAxisValueFormatter extends ValueFormatter {
    @Override
    public String getAxisLabel(float value, AxisBase axis) {
        Log.d("ADebugTag", "Value: "   Float.toString(value));
        int axisValue = (int) value/40;
        if (axisValue >= 0) {
            String sh = String.format("d:d", (axisValue / 3600 * 60   ((axisValue % 3600) / 60)), (axisValue % 60));
            return sh;
        } else {
            return "";
        }
    }
}