MPAndroidChart长单击侦听器
在我的应用程序中,我使用了一些条形图,当我触摸一个条形图时,会打开一个活动,显示有关所选值的一些信息。我正在使用“OnChartValueSelectedListener”来实现这一点 问题在于,这一点太过明智,无法触及。当我触摸屏幕只是为了滚动时,如果我触摸一个值,就会打开一个活动 我正在寻找类似“OnLongClickListener”的东西,以避免每次触摸这些条时都打开活动。但我什么也找不到。有什么方法可以在MP Android图表上模拟“长触摸值” 这是我代码的一部分:MPAndroidChart长单击侦听器,android,charts,mpandroidchart,Android,Charts,Mpandroidchart,在我的应用程序中,我使用了一些条形图,当我触摸一个条形图时,会打开一个活动,显示有关所选值的一些信息。我正在使用“OnChartValueSelectedListener”来实现这一点 问题在于,这一点太过明智,无法触及。当我触摸屏幕只是为了滚动时,如果我触摸一个值,就会打开一个活动 我正在寻找类似“OnLongClickListener”的东西,以避免每次触摸这些条时都打开活动。但我什么也找不到。有什么方法可以在MP Android图表上模拟“长触摸值” 这是我代码的一部分: mChart.s
mChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
// registra o estado da selecao para chamar esta funcao na funcao onNothingSelected
entry = e;
index = dataSetIndex;
highlight = h;
// caso algum cliente tenha sido cadastrado no dia selecionado
if(e.getVal() > 0) {
ViewUtil.exibirMensagemAguarde(R.string.aguarde, R.string.carregando_dados, OverviewActivity.this);
// guarda os dados para serem usados pelo metodo onNothingSelected
entry = e;
index = dataSetIndex;
highlight = h;
// obtem o ano atual
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
// obtem o dia selecionado e concatena o ano atual
dateSelected = xVals.get(h.getXIndex()) + "/" + currentYear;
// chama a tarefa assincrona que obtem os clientes cadastrados no dia selecionado
// e abre a activity
ClientesCadastradosDiaAsync task = new ClientesCadastradosDiaAsync();
task.execute();
}
}
@Override
public void onNothingSelected(){
onValueSelected(entry, index, highlight);
}
});
您的解决方案将涉及创建一个实现 查看上面链接的javadocs,您可以立即看到有一个方法:
void onChartLongPressed(MotionEvent me);
您必须使用所需的功能实现此方法。这可能涉及从MotionEvent
获取原始像素接触点,并将其转换为图表上的x和y值。然后,您可以根据需要打开相应的活动。关于这一点,我们可以这样做:
@Override
public void onChartLongPressed(MotionEvent me) {
float tappedX = me.getX();
float tappedY = me.getY();
MPPointD point = mChart.getTransformer(YAxis.AxisDependency.LEFT).getValuesByTouchPoint(tappedX, tappedY);
Log.d(TAG, "long pressed at: " + point.x + "," + point.y);
//TODO: check for long presses that don't correspond to a value on the chart
//launch the Activity as per your requirement
}
在中有一个自定义
OnChartGestureListener的示例,您的解决方案将涉及创建一个实现
查看上面链接的javadocs,您可以立即看到有一个方法:
void onChartLongPressed(MotionEvent me);
您必须使用所需的功能实现此方法。这可能涉及从MotionEvent
获取原始像素接触点,并将其转换为图表上的x和y值。然后,您可以根据需要打开相应的活动。关于这一点,我们可以这样做:
@Override
public void onChartLongPressed(MotionEvent me) {
float tappedX = me.getX();
float tappedY = me.getY();
MPPointD point = mChart.getTransformer(YAxis.AxisDependency.LEFT).getValuesByTouchPoint(tappedX, tappedY);
Log.d(TAG, "long pressed at: " + point.x + "," + point.y);
//TODO: check for long presses that don't correspond to a value on the chart
//launch the Activity as per your requirement
}
在