Articles of ontouchevent

View.onTouchEvent仅注册ACTION_DOWN事件

我正在实现一个自定义TextView ,我想在触摸视图时执行一些操作。 我认为onTouchEvent方法可以在视图中为我提供全方位的触摸,而无需使用setOnTouchListener (我正在尝试在视图中而不是在活动中完成所有工作,因此它是可移植的),但是唯一的触摸事件已注册是ACTION_DOWN 。 如果我使用OnTouchListener在活动中设置OnTouchListener ,我会获得全部触摸事件,但onTouchEvent却没有。 任何人都知道为什么会这样,或者任何人都可以提供一个不涉及使用setOnTouchListener的解决方案(这会阻止实现活动设置自己的监听器)?

无法在Android设备上获取Javascript中的touchevents坐标

我正在测试HTML5canvas并使用Javascript来绘制支持触控的设备。 虽然我在iOS设备上工作但我无法在Android上使用它。 我把它缩小到event.pageX没有返回坐标,而是返回0或未定义(基于浏览器)。 我在Opera Mobile和Dolphin浏览器上运行Cyanogen 7.1的手机上测试了它,并在运行标准浏览器的Galaxy Tab 10.1(Android 3.1)上进行了测试。 我修改了代码,在显示event.pageX,event.layerX和event.clientX坐标的touchstart事件上显示警报(我知道clientX应该只适用于iOS)。 canvas.addEventListener(‘touchstart’, function(e) { if (readyToDraw){ alert(“PageX: “+e.pageX+”,”+e.pageY+”\n LayerX: “+e.layerX+”,”+e.layerY+”\n + clientX: “+e.clientX+”,”+e.clientY); // prevent the browsers default action! e.preventDefault(); paint = true; // Get coordinates var c = getCoords(e); addClick(cx, cy, false); } }); 我已经在iOS中使用完整的绘图,但甚至无法让Android注册坐标,任何想法? 最终编辑:我解决了这个问题,看到了接受的答案。

处理拦截触摸事件而不扩展ViewGroup

我有一个RelativeLayout ,这个布局有近10个视图。 我已将OnTouchListener设置为此布局并在其中执行一些工作并返回true 。 当我触摸没有View的布局(空区域的意思)时,这个监听器工作正常。 如果我触摸此布局的子视图,则此侦听器不会触发… 从文档中,我了解到我们可以通过扩展ViewGroup(所以这里是RelativeLayout)覆盖onInterceptTouchEvent() )并在子视图消耗此事件之前处理触摸事件… 这将做一个技巧,但我需要通过将RelativeLayout替换为CustomRelativeLayout来修改我需要此function的许多xml文件。 所以我的问题是: 有没有办法在RelativeLayout子视图消耗事件之前处理RelativeLayout (ofcourse ViewGroup)的触摸事件? 我不想扩展RelativeLayout ……

动态生成的线条,有效发光

我想用这样的发光效果绘制线条 问题 – 我必须根据用户的交互在程序中生成这一行(行的forms将在onTouchEvent – ACTION_MOVE生成)。 我可以在没有xml文件或绘制预制位图的情况下生成此效果吗?

方法onTouchEvent未被调用

我遇到了问题,我的方法 @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); } 是新的叫。 任何想法为什么会这样? 我正在构建一个google的api 4.0.3应用程序,我正在尝试为我的viewFliper启用滑动。 但是,如果触摸更新,它就无法工作。 BTW: public class MainActivity extends SherlockMapActivity implements ActionBar.TabListener { 那是我活动的宣言。 并检测我实施的滑动: SimpleOnGestureListener simpleOnGestureListener = new SimpleOnGestureListener(){ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) { float sensitvity = 50; if((e1.getX() – e2.getX()) > sensitvity){ SwipeLeft(); }else if((e2.getX() – […]

Android onTouchEvent坐标跳过

我的应用程序,我有一个要求用户在屏幕上移动它的元素,并执行此操作我使用RelativeLayout和onTouchListener。 我遇到的问题是在我的onTouchListener里面, getX()和getY()得到了一些奇怪的结果。 我将下面这行代码添加到我的onTouch() – > ACTION_MOVE块中: Log.v("example", "Touch: {x:" + event.getX() + " } {y:" + event.getY() + "}"); 以下是我的LogCat结果。 04-29 03:16:11.000:V / myApp(24188):触摸! 04-29 03:16:11.057:V / myApp(24188):Touch:{x:69.78699} {y:107.774216} 04-29 03:16:11.103:V / myApp(24188):Touch:{x:77.86926} {y:173.37648} 04-29 03:16:11.158:V / myApp(24188):Touch:{x:69.78699} {y:108.781845} 04-29 03:16:11.205:V / myApp(24188):Touch:{x:77.86926} {y:174.38597} 04-29 03:16:11.463:V / myApp(24188):Touch:{x:69.78699} {y:109.64778} 04-29 03:16:11.502:V / myApp(24188):Touch:{x:77.86926} {y:175.62172} […]

MyGestureDetector扩展了SimpleOnGestureListener

我正在实现一个扩展SimpleOnGestureListener的MyGestureDetector。 我从以下地址借用了该课程: http : //www.codeshogun.com/blog/tag/view-flipper/ ,允许在ViewFlipper中进行滑动操作。 我不能如果在模拟器上运行。 有什么build议么? 以下是所有的代码: main.java import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.KeyEvent; import android.view.MotionEvent;import android.view.View; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.webkit.WebView; import android.widget.ViewFlipper; public class main extends Activity { private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int […]

Android:似乎无法正确使用MotionEvent.ACTION_MOVE

我对Android编程和Java相当陌生(尽pipe我对C#有一些经验,所以这很有帮助)。 在这个时候,我正在蠢蠢欲动,想知道一切是如何运作的。 我做了一个实现onTouchListener的活动。 我已经覆盖onTouch并在event.getAction()上有一个开关: public boolean onTouch(View v, MotionEvent event) { float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); […]

将Android NestedScrollView水平滑动传递给父视图

我试图做一个左右滑动卡系统(如Tinder),卡上有一个NestedScrollView。 目标是,如果用户只是上下滑动,NestedScrollView将滚动,但如果用户向左或向右滑动,则卡将使用该滑动。 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="4dp" card_view:cardUseCompatPadding="true"> <android.support.v4.widget.NestedScrollView android:id="@+id/nested_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dp"> <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.v7.widget.CardView> (我使用的卡片库是https://github.com/wenchaojiang/AndroidSwipeableCardStack ) compile 'com.github.wenchaojiang:AndroidSwipeableCardStack:0.1.5' 当我在NestedScrollView上放一个margin_top并在这个空白区域内触摸时,CardStack可以正确地抓住我的input,并且卡片向左或向右移动,但是如果我在其他地方触摸并拖动,NestedScrollView会抓住我的input而不pipe方向如何。 我应该扩展/覆盖哪个类/ onTouchEvent来获得这种效果,或者可能会有一个更简单的方法? 谢谢!

WebView摆脱双击缩放。

我读了很多关于放大WebViews的话题,没有find答案。 这是我的设置: 我通常使用这些设置的自定义网页视图: getSettings().setBuiltInZoomControls(false); getSettings().setSupportZoom(false); getSettings().setUseWideViewPort(true); getSettings().setLoadWithOverviewMode(true); 让我在这里注意,我依靠OverviewMode,以及在WideViewPort以扩展我的WebView。 我也覆盖我的OnTouchEvent,并委托所有合适的事件到手势检测器: @Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector.onTouchEvent(event)) return true; return super.onTouchEvent(event); } 这里是它的侦听器实现拦截所有doubleTap事件: @Override public boolean onDoubleTapEvent(MotionEvent e) { // Do nothing! return true; } @Override public boolean onDoubleTap(MotionEvent e) { // Do nothing! return true; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { // Do […]