Я пытаюсь создать различные диаграммы для своего приложения, и я использую AndroidPlot. Я хочу провести между различными графиками, так что, когда я прокручиваю левый элемент, нарисован, например, новый график.Звонки не нарисованы и ACTION_MOVE не обнаружены в OnTouchListener
Я внедрил OnTouchListener
и функцию drawChart(String Discipline)
, которая должна нарисовать график, однако, когда drawChart вызывается из OnTouch
, он не работает.
Кроме того, если я пытаюсь обнаружить ACTION_MOVE, ничего не происходит, обнаруживается только ACTION_DOWN. Я не понимаю, почему.
Вот код:
import android.content.Intent;
import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import com.androidplot.Plot;
import com.androidplot.xy.BoundaryMode;
import com.androidplot.xy.LineAndPointFormatter;
import com.androidplot.xy.PointLabelFormatter;
import com.androidplot.xy.SimpleXYSeries;
import com.androidplot.xy.XYPlot;
import com.androidplot.xy.XYSeries;
import com.androidplot.xy.XYStepMode;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* A placeholder fragment containing a simple view.
*/
public class DrawChartsFragment extends Fragment implements View.OnTouchListener{
XYPlot plot;
public DrawChartsFragment() {
}
Number[] getXcoord(int length){
Number[] tmp = new Number[length];
for (int i = 0; i < length; i++){
tmp[i] = i;
}
return tmp;
}
private void drawChart(String Discipline){
plot = (XYPlot)getActivity().findViewById(R.id.plot);
Number[] data = Statistic.getDataPoint(Discipline);
List<Number> list = Arrays.asList(data);
Number[] x = getXcoord(list.size());
XYSeries series = new SimpleXYSeries(Arrays.asList(x),list,Discipline);
LineAndPointFormatter series1Format = new LineAndPointFormatter();
series1Format.setPointLabelFormatter(new PointLabelFormatter());
series1Format.configure(getActivity().getApplicationContext(),
R.xml.line_point_formatter_with_labels);
plot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 5);
plot.setRangeBoundaries(0, 100, BoundaryMode.FIXED);
plot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 10);
plot.addSeries(series, series1Format);
plot.setTitle(Discipline);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
plot = (XYPlot)getActivity().findViewById(R.id.plot);
// plot.setOnTouchListener(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_draw_charts, container, false);
rootView.setOnTouchListener(this);
return rootView;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
drawChart("Skeet");
switch (event.getAction()){
case MotionEvent.ACTION_MOVE:
MainActivity.showToast("Move");
return true;
}
return false;
return false;
}
}
Если я позвоню drawChart("Skeet")
из onActivityCreated
, он отлично работает. Но при вызове из OnTouchListener
, то я только получаю много сообщений, как:
Глядя на объект, содержащий: textPaint.color
Попытка найти поглотитель для textPaint в классе com.androidplot.xy.PointLabelFormatter
Вызов getTextPaint на экземпляре com.androidplot.xy.PointLabelFormatter
Похоже, что это не может прочитать параметры из XML-файла? Любые идеи приветствуются!
/Erik