我正在尝试将触摸处理程序添加到FabricView,但似乎这样做我无法再素描了。事实上,FabricView本身定义了一个触摸处理程序,但似乎我的尝试 - 使用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,我们必须将JitPack包含在根gradle构建的allProjects部分。
allprojects {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
mavenCentral()
maven { url "https://jitpack.io" }
}
}
这是 FabricView 源代码的页面。
RxView.touches()
返回一个ViewTouchObservable
,该在订阅时调用view.setOnTouchListener(listener)
以观察触摸事件。
警告:创建的可观察量使用
View.setOnTouchListener()
来观察触摸。一个视图一次只能使用一个可观察量。
像这样,您将触摸事件绝对绑定到此可观察对象。它返回true
,因此不会调用onTouchEvent()
。若要同时使用这两种行为,可能需要稍微重写ViewTouchObservable
并改为返回false
。