UIScrollView 有一个取消机制,当它检测到“滚动”时,它会取消子视图的触摸。
我想知道是否可以以编程方式取消触摸事件(已经开始)。
我在滚动视图中有一个可拖动的视图。
我可以让可拖动视图接收触摸,但我想知道如何在需要时停止接收触摸事件并将触摸事件提供给滚动视图。
我有两个活动 A 和 B。我希望在 A 中捕获一个触摸事件 MotionEvent.ACTION_DOWN,同时仍然按住,启动 B,然后在 B 中捕获释放事件 MotionEvent.ACTION_UP。
在 A 中有一个 View v,它有一个带有以下回调的 OnTouchListener:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
startActivity(new Intent(A.this, B.class));
break;
case MotionEvent.ACTION_UP:
// not called
break;
}
// false doesn't work either
return true;
}
Run Code Online (Sandbox Code Playgroud)
在 B 中,有一个重叠的 View v2(在原始 v 之上),具有相同类型的 OnTouchListener,但是当活动开始时,B 的“onTouch”不会被调用,除非我移动手指(重新生成触摸事件)。
简而言之,我正在做一个应用程序,当按住屏幕时会出现一个新的活动,当我松开手指时会结束。
是否不可能将 MotionEvent.ACTION_DOWNed 状态从一个视图转移到另一个视图?或者新活动 B 是否清除任何当前仅适用于 A 的“屏幕触摸侦听器”,因为它是在那里启动的?
感谢您对如何将这些 MotionEvents 分派到活动和/或解决我的问题的任何解决方案/黑客的任何解释。
检测 AppWidget 上的 OnTouch。如果可以的话?你好!我正在尝试为 Android 2.1 创建我的第一个 AppWidget,其中客户端可能有机会在我的自定义视图上选择一个项目。我将为其创建一个自定义视图和一个滑块,客户可以通过将滑块拉到自定义视图上来进行选择。为此,我想检测AppWidget的onTouch(以确定X、Y坐标),有办法做到这一点吗?
我看到了可以在 AppWidget 中使用的有效小部件列表:
然而它们不符合我的需要。我用谷歌搜索过这个,但没有找到任何可以帮助我的东西。有没有办法在 AppWidget 中检测 OnTouch?也许这需要我拥有更新的 API 版本。
我正在尝试使用触摸视图事件实现我自己的拖放。我想通过长按触发拖动,在 onLongClick 中,我将视图阴影创建为位图,并将该位图设置为 imageview。我想拖动这个图像视图。我的问题是,在长按事件之后,imageview 没有立即响应触摸事件。我必须停止触摸屏幕并再次点击图像视图,然后我的图像正在移动。
一些相关代码:
mCategoryNews.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.setVisibility(View.INVISIBLE);
ImageView shadow = (ImageView) getView().findViewById(R.id.imgViewShadow);
shadow.setLayoutParams(new FrameLayout.LayoutParams(v.getWidth(), v.getHeight()));
shadow.setImageBitmap(Utils.loadBitmapFromView(v));
shadow.bringToFront();
((FrameLayout.LayoutParams) shadow.getLayoutParams()).leftMargin = rowCategories1.getLeft();
((FrameLayout.LayoutParams) shadow.getLayoutParams()).topMargin = rowCategories1.getTop();
return true;
}
});
private View.OnTouchListener mDragShadowTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(TAG, "onTouch");
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
Log.d(TAG, "action move");
int x = (int) event.getRawX();//- rowCategories1.getLeft() - v.getWidth() / 2;
int y = (int) event.getRawY();//- rowCategories1.getTop() - …Run Code Online (Sandbox Code Playgroud) 我已经在网络和文档中搜索以拦截点击事件并让超级管理在 Android 应用程序中滚动。
例如:默认情况下,当我滚动视图时,另一个视图随之移动。我能够获得点击事件,但在我获得 onDown 返回 true 的那一刻;另一个视图无法随之滚动。我试图在 onScroll 上返回 false ,因为它没有成功。
我已经用基本的 onTouchListener 或 GestureDetectorCompat 代码做了同样的事情。
使用手势检测器:
mGestureDetector = new GestureDetectorCompat(mContext, new ClickListener());
mRootFrameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
});
class ClickListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
Log.d(LOG_TAG, "onDown");
return true;
}
@Override
public void onShowPress(MotionEvent e) {
Log.d(LOG_TAG, "onShowPress");
}
@Override
public boolean onSingleTapUp(MotionEvent event) {
Log.d(LOG_TAG, "click");
return true;
}
@Override
public boolean onScroll(MotionEvent e1, …Run Code Online (Sandbox Code Playgroud) 如何将 scoll 事件从子 recyclerview 传递给父 recyclerview?
B recyclerview 是 A recyclerview 的 itemview 的子项。
A 在 ViewPager 的片段中,viewpager 在 CoordinatorLayout 下。
浏览器有
app:layout_behavior="@string/appbar_scrolling_view_behavior"
这个 artibute。
当我滚动 A 时,AppbarLayout 的偏移量是变化的。但是,...如果我向上/向下滚动 B,则只有 A 滚动。
这是一个 recyclerview 的 itemview
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/fold_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/name_project_item"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/hip_text"
android:textSize="14sp" />
<LinearLayout
android:id="@+id/create_canvas"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="@dimen/activity_horizontal_margin">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/fab_add">
</ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Create Canvas"
android:textColor="@color/hip_text" />
</LinearLayout>
</LinearLayout> …Run Code Online (Sandbox Code Playgroud) 我们构建了一个 React Native 平板电脑亭应用程序,它向前台的用户显示多页输入字段。用户必须填写所有表格并在最后发送它们。
用户可以随时离开信息亭,这将导致他们的最后一个屏幕成为下一个用户的“欢迎屏幕”。为避免这种情况,如果没有用户交互(屏幕上的任何触摸事件),应用程序会在一段时间后重置。
现在,我们使用倒计时并在每个输入字段、按钮和背景触摸上重置它。这导致将重置回调传递给许多组件。它有效,但它只是很多冗余,很容易导致错误。
有没有什么办法,我们可以在view的最上面加一个overlay,可以捕获所有的touch事件并调用reset回调,同时也可以将touch事件传递给下面的views?因此,当用户单击按钮时,覆盖层会调用其回调,但也会单击按钮(输入字段等也是如此)。
我们还尝试了手势响应系统,但无法让触摸事件通过——它总是被带有手势响应系统的组件所消耗。
设置
我有 2 个屏幕,我们称它们为 A 和 B。
屏幕 A 显示由手机后置摄像头(我无法进一步访问的第三方库)记录的摄像头图像。屏幕 B 具有半透明背景和一些 UI 元素(例如按钮)
任务
我无法直接(第三方)将 UI 元素添加到屏幕 A,这就是为什么我使用react-native-navigation V2通过屏幕 A 顶部的Navigation.showOverlay覆盖屏幕 B。
问题
两个屏幕都需要对触摸事件做出反应,但似乎屏幕 B 的覆盖在屏幕 A 上阻止了这些事件。
题
是否有可能将所有触摸事件从屏幕 B(带有覆盖的 UI)传递到屏幕 A(相机屏幕,它也需要对触摸事件做出反应),以便两个屏幕都能够对用户输入做出反应?
如果有人对我正在谈论的第三方组件感兴趣:https : //github.com/brave-digital/react-native-wikitude/issues/10
javascript touch-event react-native react-native-navigation react-native-navigation-v2
使用 ThreeJS 开发网页游戏。在 iOS 上,长按会在 0.5 秒过去后产生小的触觉振动反馈。
由于我希望用户能够按住手指四处走动,因此这是一种分心。
我已经为touchStart, touchEnd, touchMove, touchCancel, and 使用了 preventDefault 和 stopPropagation ,contextMenu我错过了什么?
每个都是这样实现的:
function onTouchStart(event) {
event.preventDefault();
event.stopPropagation();
...
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在创建一个带有自定义拖放事件的应用程序,由于其中有无限的道具和其他数据,我编写了很多代码,因此无法在此处共享它。这是一个带有事件的日历。用户可以将事件从一个日期拖放到另一个日期,也可以按时放置带有可拖动事件的日历屏幕截图请查看
我已经上传了带有所有功能调试器的网站......
**如何产生问题**
当我们拖动事件时它会正常工作。(打开检查元素)现在通过触摸屏幕拖动事件它会产生错误错误截图看看,错误截图打开下拉菜单
请帮助我已经尝试了在互联网上找到的有关此问题的所有解决方案但没有解决请不要提及此解决方案的重复我已经尝试了所有这些但没有成功
如何在网站上打开日历上的事件请在此屏幕中查看它具有打开事件日历的步骤
对于代码和调试,请访问链接到我的网站,但有错误
我已经为您添加了所有功能的调试器,以便您可以调试它......谢谢......
touch-event ×10
android ×5
javascript ×3
react-native ×2
gesture ×1
ios ×1
iphone ×1
java ×1
jquery ×1
motion ×1
overlay ×1
reactjs ×1
safari ×1
touch ×1
view ×1