MPChart BarChart柱状图长按跳转

本文介绍如何在MP图表库中实现柱状图的长按事件,通过自定义监听器和触摸事件处理,实现单击和长按时的不同响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目使用了Barchart,柱状图,MP有好几个点击、触摸事件,但是对于每一条柱的点击、触摸事件只有2个:

setOnChartValueSelectedListener和setOnTouchListener(barchart的触摸)。

 

默认点击某一条时,弹出框,继承MarkerView ,重写refreshContent和getoffset,(如需其他,自行添加)

以上是实现了每条柱的点击事件--单击显示、隐藏信息。

好了,需求是长按每条柱,实现ac跳转,找了MP的所有点击、长按、触摸,没有item柱的长按。

纠结了一番,最后解决:方法(setOnChartValueSelectedListener和setOnTouchListener(barchart的触摸)

 

chartDetection.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
    @Override
    public void onValueSelected(Entry entry, Highlight highlight) {
        fisrthx = highlight.getXPx();
        
        Log.v("t", "点击某一条" + highlight.getXPx());
    }

    @Override
    public void onNothingSelected() {

    }
});

 
 chartDetection.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        fisrtTime = System.currentTimeMillis();
                        isClick = false;
                        break;
                    case MotionEvent.ACTION_UP:
                //100是用来检测为点击事件
                        if (System.currentTimeMillis() - fisrtTime > 100) {
                //400是长按,15是触摸偏移量,这个是根据event.getX()和highlight.getXPx()得来,按实际情况计算

                            if (System.currentTimeMillis() - fisrtTime > 400 && Math.abs(event.getX() - fisrthx) < 15) {
                                parseY(entryY);
//                                Log.v("t", "st" + st);
                               
                                isClick = true;
                            }
                        } else {
                            isClick = false;
                        }
                        break;
                }          
                Log.v("t", "touch" + event.getX());
                return isClick;
            }
        });

isClick初始为false,只有当触摸为大于400ms时才判断为长按事件

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值