MPAndroidChart Pie обрабатывает OnChartValueSelectedListener и OnSwipeTouchListener - PullRequest
0 голосов
/ 31 мая 2019

Попытка захватить оба типа событий, используя код ниже. Результаты, основанные на этом коде, показывают, что OnSwipeTouchListener использует или запутывает события OnChartValueSelectedListener.

Я отслеживаю следующие события в OnSwipeTouchListener: OnSwipeLeft, OnSwipeRight и OnDoubleTap.

Я бы предпочел использовать эти примитивы высокого уровня, если это возможно, вместо того, чтобы пытаться построить его на более низком уровне, используя OnChartGestureListener, как показано здесь:

https://github.com/PhilJay/MPAndroidChart/wiki/Interaction-with-the-Chart

    peakChart.let {
        // settings
        it.legend.isEnabled = false
        it.setDrawEntryLabels(true)
        //it.setDrawSliceText(true)
        it.setEntryLabelTextSize(12.toFloat())
        it.setTouchEnabled(true)

        // touch
        it.setOnChartValueSelectedListener(object : OnChartValueSelectedListener {
            override fun onValueSelected(e: Entry, h: Highlight) {
                val index = chartPageControl.selection
                toast("duration: ${durationIndex[h.x.toInt()]}, type=${thresholdType[index]}")
            }
            override fun onNothingSelected() {
            }
        })

        // swiping
        it.setOnTouchListener(object : OnSwipeTouchListener(applicationContext) {
            override fun onSwipeLeft() {
                val chartCount = thresholdType.size
                if (chartPageControl.selection == chartCount-1 ) {
                    chartPageControl.selection = 0
                } else {
                    chartPageControl.selection += 1
                }
                loadPeaks()
                super.onSwipeLeft()
            }

            override fun onSwipeRight() {
                val chartCount = thresholdType.size
                if (chartPageControl.selection == 0 ) {
                    chartPageControl.selection = chartCount-1
                } else {
                    chartPageControl.selection -= 1
                }
                loadPeaks()
                super.onSwipeRight()
            }

            override fun onDoubleTap() {
                onSwipeLeft()
            }
        })
    }
...