Articles of ontouchevent

Android MotionEvent ACTION_MOVE效率。 如何提高性能?

我目前正在开发一个允许自由绘图的应用程序。 我目前使用的方法如下: currentLine是一个列表,用于保存ACTION_MOVE返回的所有点的历史记录。 public boolean onTouchEvent (MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_MOVE: Point p = new Point(event.getX(),event.getY()); currentLine.addPoint(p); invalidate(); break; } return true; } 然后我接受这些点并在我class级的onDraw方法中绘制它们。 @Override protected void onDraw(Canvas c) { super.onDraw(c); //Draw Background Color c.drawColor(Color.BLUE); //Setup Paint Paint p = new Paint(); p.setStyle(Style.FILL); p.setColor(COLOR.WHITE); //iterate through points if(currentLine.size()>0){ for(int x = 0;x<currentLine.size();x++){ […]

onTouch,onLong在android中一起点击

我正在动态地将图像视图添加到父布局。 我正在onTouch添加图像执行放大/缩小操作。 我想删除它上面的onLongPress的添加视图。 img.setOnLongClickListener(longClickAction); img.setOnTouchListener(touchAction); onLongPress: OnLongClickListener longClickAction = new OnLongClickListener() { @Override public boolean onLongClick(View v) { parentLayout.removeView((ImageView)v); return false; } }; onTouch: OnTouchListener touchAction = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { ImageView i = (ImageView)v; //perfrom zoom operation on touch of imageview zoom(i, event); return true; } }; […]

是否可以将onTouchEvent传递给Android中的多个视图?

我已经在SO上阅读了关于这个主题的一些问题,但是还没有find一个可靠的答案。 我有一个framelayout,我堆叠多个自定义视图,但onTouch事件只适用于顶视图。 (自定义视图是具有相同onTouch事件的相同视图,只是其中的多个) 的FrameLayout customView [2] <—这是添加的最后一个视图,也是唯一一个接收该事件的视图 customView [1] customView [0] 我正在Android 2.2上测试它,我想知道下面的其他视图是否有任何方法可以知道触摸发生的位置? 编辑 (添加一些代码) 我正在添加一些代码,以帮助解释我遇到问题的地方。 起初我只是自动让onTouchEvent返回true。 这使得最后一个视图(在我的情况下是customerView [2] )将是唯一一个生成值的视图。 但是,一旦我添加了设置onTouchEvent以返回true或false的方法,现在返回生成值的唯一视图是customView [0] 。 我希望这能解决我所要求的问题。 我对此很陌生,我感谢你花时间解释它(当然我感谢你的耐心)。 此外,我意识到我的TextView不会更新每个touchEvent的值,我正在努力修复它。 我的活动: public class MyActivity extend Activity { CustomView[] customView; TextView[] textView; int numViews 3; //FrameLayout and Params created @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); for(int i = 0; […]

Android ACTION_UP甚至从未调用过

我正在尝试制作一个小型的机器人Jump and Run游戏,但我的问题是我无法正确配置事件ACTION_UP。 在这里我的代码: public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()){ case MotionEvent.ACTION_DOWN: Log.d(“OTE”, “down”); touchDownTrue = true; break; case MotionEvent.ACTION_UP: Log.d(“OTE”, “UP”); touchDownTrue = false; break; } } 从来没有调用MotionEvent.ACTION_UP,我不知道为什么,如果我使用ACTION_CANCEL也会发生同样的情况

如何识别canvas上绘制的角色

我正在使用手指画画画线,到目前为止我已经提出了以下代码: case MotionEvent.ACTION_MOVE: //return if touch is in this area of canvas if (x<=430 || y=490) return true; //draw path using x and y co-ordinates mPath.quadTo(previousPoint.x, previousPoint.y, (x+previousPoint.x)/2,(y+previousPoint.y)/2); canvas.drawPath(mPath, paint); previousPoint.x = x; previousPoint.y = y; //invalidate canvas on move imageView.invalidate(); break; case MotionEvent.ACTION_UP: Xend=x; Yend=y; //validate that is it true? if((Xstart>=780 && Xstart=780 && […]

从imageview触摸点,您可以调整MAT的大小以获得该点颜色吗?

在横向方向,我使用myImageView.setImageBitmap(myBitmap)并使用ontouch侦听器来获取getX和getY并调整myImageView位置(与getRawX和getRawY相同)。 然后我使用bitmapToMat构建MAT以使用OpenCV更多地处理图像。 我find了两个resize的场景,其中onTouch位置将在我触摸的位置绘制一个圆圈,但有时位置将位于Mat之外并导致NPE并在处理期间失败。 场景1: resize(myImageView.getWidth(), myImageView.getHeight()) 场景2: resize(myImageView.getHeight(), myImageView.getWidth())和 x = x(myImage.getHeight()/myImageView.getWidth()) y = y(myImage.getWidth()/myImageView.getHeight()) 如果我不改变x,我可以点击NPE图像中的任何地方,但画出的圆圈远不在我触摸的地方。 处理matToBitmap(myMAT, newBitmap)和myImageView.setImageBitmap(newBitmap) 。 我显然错过了一些东西,但有没有一个简单的方法来获得触摸位置并在MAT中使用该位置? 任何帮助都是极好的!

处理触摸事件 – onInterceptTouchEvent和onTouchEvent

我希望能够在屏幕上的任何位置滑动以调用某个function。 但我也想Linear Layouts中使用Buttons ,我希望能够点击它。 如果我在Button上滑动我想要onInterceptTouchEvent来Intercept对Button的onTouchEvent的调用并执行滑动操作。 如果我只是单击一个Button我不希望调用onInterceptTouchEvent 。 相反,我希望调用Button的onTouchEvent并执行Button click 但是当我尝试实现onInterceptTouchEvent时,我遇到了错误。 这是我的代码: public class Game extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.game_activity); //other code…. } } @Override public boolean onInterceptTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: swipeScreen(); //if action recognized as swipe then swipe break; case […]

在Gingerbread中实现拖放

我需要知道如何在Android中为Gingerbread版本实现Drag&Drop。 据我所知,Gingerbread默认不支持。 我编码的是:一个ViewGroup类来保存动态添加的子项,每个孩子应该在长时间点击之后能够通过手指点击/移动来移动。 为了解决这个问题,我有一个OnLongClickListener附加到每个View的子OnLongClickListener ,我的ViewGroup已经实现了onTouch()方法来获取down / up / move事件和onLongClick()方法来响应每个孩子的长按。 现在我的问题如下:我长按一个孩子,我可以移动它并可以通过ACTION_UP事件结束动作。 但是,我不能再次点击这个孩子了 – 有没有办法可以处理这个问题? 我想,我不需要一个真正的D&D库/函数,因为我只会在这个ViewGroup订购一些图标 – 每个孩子都会通过代码添加到ViewGroup ,所以我认为我没有真正的DropTarget。

在Android 4.0导航栏劫持第一次触摸事件

在没有硬件导航键的Android 4.0设备上,Android会渲染导航栏。 如果需要,可以使用setSystemUiVisibility()隐藏它。 如果这样做,让我们说如果你想获得尽可能多的屏幕进行播放,当你第一次触摸屏幕时(是的,在View实现View.onTouchEvent() ),Android和你的API会先劫持不会被叫。 只有一个导航栏可见,它才会被调用。 现在,通过听取以下内容可以避免这种情况: http://developer.android.com/reference/android/view/View.OnSystemUiVisibilityChangeListener.html 当导航栏可见时,只需执行首次触摸即可执行的操作。 有没有其他方法可以做同样的事情,那就是Android 4.0会在导航栏完成之后将触摸事件传播到我的应用程序?

如何在android中使用Ontouchevent突出显示这个pdf页面

在这里,我想在android中使用onTouchevent来突出显示这个文本