Articles of ontouchevent

在onTouchEvent中,ACTION_UP不起作用

我想在玩家触摸屏幕时阅读,何时不在。 @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ //ACTION UP actionOnUP = true; Log.v(“MC”, “Up”); } if(event.getAction() == 0){ //ACTION DOWN actionOnUP = false; Log.v(“MC”, “Down”); } Log.v(“MC”, event.getAction() + ” “); return super.onTouchEvent(event); } 这段代码,是的,它可以工作,但只有当玩家触摸屏幕(ACTION_DOWN),但是当他没有触摸屏幕(ACTION_UP)时,没有任何反应:/ ^这是LogCat的屏幕forms。 你可以看到:这只是ACTION_DOWN,但没有关于ACTION_UP的内容。 类正在扩展视图: public class MainClass extends SurfaceView implements SurfaceHolder.Callback { 你可以帮我吗? 编辑:我的游戏基于这个教程: http : //www.droidnova.com/2d-tutorial-series-part-v,848.html

如何在子视图组和父视图组触摸事件之间进行更改

我决定发布这个问题并回答这个问题的评论 : 如何处理子视图中的单击,并触摸父ViewGroups? 我将粘贴评论: 假设我想覆盖触摸事件只是为了处理一些孩子,我可以在这个函数中做些什么让它工作? 我的意思是,对于一些孩子来说,它会像往常一样工作,对于一些人来说,父母视图将决定他们是否会接触到触摸事件。 所以问题是:如何阻止父onTouchEvent()覆盖某些子元素’ onTouchEvent() ,同时让它覆盖其他子元素?

Android绘制一条线来跟随你的手指

我想要做的是绘制一条跟随我的手指的线。 我已经创建了一个自定义视图,并且我有一个可以工作的onTouchEvent() 。 我可以在onDraw()方法中绘制一条静态线而不会有太多麻烦。 当我的手指移动时,我不确定如何画线。 public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { Log.e(TAG, ” – DOWN -“); Log.e(TAG, ” getX: ” + event.getX()); break; } case MotionEvent.ACTION_UP: { Log.e(TAG, ” – UP -“); Log.e(TAG, ” getX: ” + event.getX()); break; } } return true; } 你曾经做过一段时间的任何暗示可以给出什么? 我是否需要在onTouchEvent()上设置坐标并不断使视图无效以便小线段绘制? 最后,我只想用手指在屏幕上进行基本涂鸦,以进行此实验。

通过父级捕获onTouch事件,处理它并传递给子级

我试图理解Android如何处理触摸事件并且有点困惑。 根据我的理解,触摸事件被发送到根视图并传递给孩子们。 我有一个FrameLayout ,它是Fragment的容器。 第一个片段视图是ScrollView ,第二个是某种Gallery (Horizo​​ntalListView),最后一个也是FrameLayout 。 每次布局中只有一个片段。 我想要做的是识别屏幕上的用户滑动,以供应用程序使用。 我想计算滑动并在经过一些滑动后做一些事情。 我试图将OnTouchListener放在顶部的FrameLayout但是当孩子是ScrollView或Gallery时它不会被调用。 我试图在onTouch的最后返回false和true ,但是我得到了相同的结果 – 它永远不会被调用。 我该怎么做? 我只是想“透明地”处理触摸事件并传递它们,就像我甚至没有触摸它们一样。

在扩展/缩小或在android中拖动后获取canvas坐标

我正在开发一个应用程序,我在其中粘贴图像,在canvas上绘图和绘画。 此应用程序还可以向上/向下缩放canvas或将其拖动到不同的位置。 我的问题是:在缩放或拖animation布后,我无法获得正确的canvas坐标。 我想在缩放或拖animation布后绘制手指画,但无法find我触摸的正确位置.. :(我也是新的蜜蜂。这是代码。 @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); //canvas.translate(mPosX, mPosY); canvas.scale(mScaleFactor, mScaleFactor, super.getWidth() * 0.5f, super.getHeight() * 0.5f); mIcon.draw(canvas); for (Path path : listPath) { canvas.drawPath(path, paint); } canvas.restore(); } public TouchExampleView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onTouchEvent(MotionEvent ev) { // Let […]

关闭onTouchOutside上的DialogFragment(不是Dialog)

我已经搜索了有关解除对话onTouchOutside的所有答案,但是,我在我的应用程序中使用DialogFragment 。 当用户在DialogFragment区域外单击时,如何解除DialogFragment 。 我已经检查了Dialog的setCanceledOnTouchOutside的源代码 public void setCanceledOnTouchOutside(boolean cancel) { if (cancel && !mCancelable) { mCancelable = true; } mCanceledOnTouchOutside = cancel; } 还有另一个可能有趣的function是isOutOfBounds private boolean isOutOfBounds(MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); final int slop = ViewConfiguration.get(mContext).getScaledWindowTouchSlop(); final View decorView = getWindow().getDecorView(); return (x < -slop) […]

Android – 如何圆形缩放/放大部分图像?

我试图让用户触摸图像,然后基本上一个圆形放大镜将显示将允许用户更好地选择图像上的某个区域。 当用户释放触摸时,放大的部分将消失。 这用于几个照片编辑应用程序,我正在尝试实现我自己的版本。 我下面的代码确实放大了图像视图的圆形部分,但是一旦我松开手指就不会删除或清除缩放。 我目前使用canvas = new Canvas(bitMap);将一个位图设置为canvascanvas = new Canvas(bitMap); 然后使用takenPhoto.setImageBitmap(bitMap);设置imageview takenPhoto.setImageBitmap(bitMap); 我不确定我是否正确地采取行动。 onTouch代码如下: zoomPos = new PointF(0,0); takenPhoto.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: zoomPos.x = event.getX(); zoomPos.y = event.getY(); matrix.reset(); matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y); shader.setLocalMatrix(matrix); canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint); […]

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 ……