android - 如何在 MPAndroidChart 中制作可拖动的 LimitLine

标签 android mpandroidchart

我已经设法使用 MP Android Chart 创建了一个折线图,并希望创建一条可拖动的线来设置限制。因此,如果该值越过线值,则用户会收到警报。我的用例类似于 Android 系统数据使用限制。

我遇到了 LimitLines - https://github.com/PhilJay/MPAndroidChart/wiki/The-Axis并且还使用触摸事件回调 https://github.com/PhilJay/MPAndroidChart/wiki/Interaction-with-the-Chart 进行拖动

我的问题是我是否可以在对翻译(onChartTranslate)事件的响应中动态添加限制线,以便我可以模拟限制设置?这是比尝试重载 MarkerView 更好的方法吗?

最佳答案

我设法创建了一个可拖动的(水平)LimitLine通过使用 OnChartGestureListener监听拖动事件的开始和结束:

chart.onChartGestureListener = object: OnChartGestureListener {
    override fun onChartGestureEnd(me: MotionEvent?, lastPerformedGesture: ChartTouchListener.ChartGesture?) {
        if (lastPerformedGesture == ChartTouchListener.ChartGesture.DRAG && limitLineDragEnabled) {
            me?.let {
                displayLimitLine(me)
            }
            limitLineDragEnabled = false
        }
    }

    override fun onChartLongPressed(me: MotionEvent?) {
        if (binding.chart.isFullyZoomedOut) {
            limitLineDragEnabled = true

            me?.let {
                displayLimitLine(me)
            }
        }
    }
}
ChartTouchListener捕获MotionEvents在拖动开始和结束之间(遗憾的是,OnChartGestureListener 无法帮助我):
chart.onTouchListener = object: BarLineChartTouchListener(chart,  chart.viewPortHandler.matrixTouch, 3f) {

    @SuppressLint("ClickableViewAccessibility")
    override fun onTouch(v: View?, me: MotionEvent?): Boolean {
        if (limitLineDragEnabled) {
            me?.let {
                displayLimitLine(me)
            }
        }

        return super.onTouch(v, me)
    }

}

关于android - 如何在 MPAndroidChart 中制作可拖动的 LimitLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32135964/

相关文章:

java - 在 Java 中复制大型数组的最有效方法

android - MPAndroid Chart如何制作流畅的折线图

java - 如何自动缩放图形以使其适合 Y 轴?

java - MPAndroidchart mChart 在 onCreate 和 onResume 之间设置为 null

java - Mpandroidchart(水平图表)设置每个条形图不同的颜色

android - 如何删除小数点并保留 PieChart 值中的百分比?

android - 我的应用程序出现蓝牙问题

Android,强制关闭应用程序后到底发生了什么?

java - 从 JSON 对象中提取字符串

java - Android 首选项 Null 异常