【问题标题】:RxAndroid - using RxView.touches clears other handlersRxAndroid - 使用 RxView.touches 清除其他处理程序
【发布时间】:2017-07-09 19:12:28
【问题描述】:

我正在尝试将触摸处理程序添加到FabricView,但似乎这样做我无法再绘制草图了。事实上,FabricView 本身定义了一个 Touch 处理程序,但似乎我的尝试 - 使用 RxAndroid2 - 清除了预定义的处理程序,而不是链接到它。

我想要的是能够使用我的处理程序,而无需清除现有的处理程序。

这是我主要活动的一部分(sketchview 是 FabricView 的一个实例)

sketchView.backgroundMode = FabricView.BACKGROUND_STYLE_NOTEBOOK_PAPER
    RxView.touches(sketchView, {_ -> true}).subscribe { // setting to false let me sketch, but I don't get any toast
        event -> when(event.action){
            MotionEvent.ACTION_DOWN -> {
                toast("Starting")
            }
            MotionEvent.ACTION_UP -> {
                toast("Stopping")
            }
            else -> {}
        }
    }

这是我的 app.gradle 的摘录:

compile 'com.github.antwankakki:FabricView:latest'
compile 'com.rmtheis:tess-two:7.0.0'
compile "io.reactivex.rxjava2:rxjava:2.1.0"
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
compile "org.jetbrains.anko:anko-commons:$anko_version"

为了使用 FabricView,我们必须在根 gradle 构建的 allProjects 部分中包含 JitPack。

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
        mavenCentral()
        maven { url "https://jitpack.io" }
    }
}

这是the page of the FabricView source code

【问题讨论】:

    标签: kotlin rx-android


    【解决方案1】:

    RxView.touches() 会返回一个ViewTouchObservable,它会在订阅时调用view.setOnTouchListener(listener) 来观察触摸事件。

    警告:创建的 observable 使用View.setOnTouchListener() 来观察触摸。一次只能将一个 observable 用于视图。

    像这样你将触摸事件绝对绑定到这个 observable。它返回true,因此不会调用onTouchEvent()。要同时使用这两种行为,您可能需要稍微重写 ViewTouchObservable 并返回 false

    【讨论】:

    • 在尝试调整代码时遇到问题:第 11 行 import static com.jakewharton.rxbinding2.internal.Preconditions.checkMainThread; 实际上它是 Jake Wharton 实现的内部代码。
    • 您可以内联它或尝试忽略RestrictTo 部分。
    • 谢谢。继续实施您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多