【问题标题】:How do I make a draggable LimitLine in MPAndroidChart如何在 MPAndroidChart 中制作可拖动的 LimitLine
【发布时间】:2015-08-21 08:41:01
【问题描述】:

我已经设法使用 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 更好的方法吗?

【问题讨论】:

  • 您不能在 MPAndroidChart 中使用限制线。您可以尝试使用 FrameLayout 来包含 MPAndroidChart 和可拖动的线。
  • 查看这个问题,了解如何在包含可拖动线条的图表上制作 FrameLayout:stackoverflow.com/questions/36083802/…

标签: android mpandroidchart


【解决方案1】:

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

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)
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多