Articles of ontouchlistener

onTouchListener无法正常工作

我的活动中有以下代码。 在我的xml中,video视图位于线性布局中。 但是,单击视图时, onTouchListener永远不会触发。 我尝试将onTouchListener更改为onTouchListener ,但是没有做任何事情。 我也尝试将onTouchListener更改为onTouchListener ,但没有。 任何人都知道为什么听众没有开火? 谢谢。 private VideoView vvLive; LinearLayout linearLayoutLiveVideo; linearLayoutLiveVideo.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View v, MotionEvent event){ Log.d(TAG, “onTouch entered”); if(event.getAction() == MotionEvent.ACTION_UP) { Log.d(TAG, “ACTION_UP”); } return false; } }); 编辑 :我意识到上面的代码实际上是有效的。 日食中的东西弄乱了LogCat。 重新启动eclipse后,LogCat会打印第一个“onTouch输入”日志。 但是,“ACTION_UP”没有打印出来。 我将MotionEvent更改为MotionEvent.ACTION_DOWN并立即打印LogCat。 为什么ACTION_DOWN有效但ACTION_UP没有?

在各种Activity中使用相同的onTouchEvent

我在MainActivity.class使用onTouchEvent 。 它工作正常:如果用户用手指制作双L,我称之为片段。 我想在另一个Activity使用这个onTouchEvent ,但是如果我复制所有代码,我认为它很脏。 为此,我TouchListenerImpl创建了一个工具TouchListenerImpl : class TouchListenerImpl implements View.OnTouchListener { private boolean movingDownL, movingDownR, movingLeft, movingRight, movingSuccessL, movingSuccessR = false; private Point oldCoordsL, oldCoordsR, startPointL, startPointR = new Point(0, 0); private boolean admin_touch = false; private OnLTouch callback; void setCallback(OnLTouch c) { callback = c; } interface OnLTouch { void lTouchSuccess(); } @Override […]

Android:将手势事件传递给另一个视图

我继续在Sticky ListView上工作,其中ListView中的指定视图在经过时会粘到顶部和/或底部。 我通过设置一个与列表项相同的视图,并在列表项在屏幕上和屏幕上传递时显示或隐藏它。 我的问题是,当这些“粘性”项目存在时,我希望它们对触摸作出反应,就像它们是listview本身的一部分一样。 例如,向下粘贴顶部粘贴应该发送列表视图向下滚动。 我的问题是,是否可以为此视图分配触摸侦听器,然后将这些事件直接传递给列表。 我希望它会像以下一样简单: ListView list; …. stickyview.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent motionEvent) { list.onTouchEvent(motionEvent); return false; } });

Android:ImageView getID(); 返回整数

我已经设置了一个onTouch类来确定何时按下了我的40个按钮之一。 我面临的问题是确定按下了哪个按钮。 如果我使用: int ID = iv.getId(); 当我点击“widgetA1”按钮时 我收到以下ID: 2131099684 我希望它返回字符串ID“widgetA1” 来自:game.xml 来自:game.java public boolean onTouch(View v, MotionEvent event) { ImageView iv = (ImageView)v; int ID = iv.getId(); String strID = new Integer(ID).toString(); Log.d(TAG,strID); //…. etc } + – + – + – + – + – + – 我其他明智的工作正常,它知道你按什么按钮。 我是这个Android JAVA的新手。 如果你们能帮助我,请告诉我。

在视图的Ontouch方法中单击触摸检测

我在自定义视图的ontouch方法中需要单点触摸检测。 我尝试在ACTION-DOWN和ACTION-UP中获取x和y值,在ACTION-UP中我给出了一个条件,即如果ACTIONDOWN和ACTION-UP中的X和Y的值相等,则将其作为单击。 我的代码如下 @Override public boolean onTouchEvent(MotionEvent ev) { if (!mSupportsZoom && !mSupportsPan) return false; mScaleDetector.onTouchEvent(ev); final int action = ev.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { final float x = ev.getX(); final float y = ev.getY(); mLastTouchX = x; //here i get x and y values in action down mLastTouchY = y; […]

OnTouch可以工作,但是OnClickListener没有?

我创建了一个小部件/控件,我可以重用我通过扩展RelativeLayout创建的。 然后,在我的一个活动中,我在循环中创建了一堆这些小部件。 但是,当我想让每个小部件响应一次点击时,我遇到了一个问题。 我发现设置OnTouchListener有效: this.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View arg0, MotionEvent arg1) { //Triggers debug message } }); 但是OnClickListener没有: this.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { //Doesn’t trigger debug message } }); 为什么是这样?

如何在同一列表视图中实现ontouch和onfling?

我有一个listview并实现onclick和onfling.problem是当我做fling(从左向右滑动),listview的onclick事件也正在执行。如何解决这个问题? 如何区分listview中的触摸(点击)和投掷(滑动)? listClickListener = new OnItemClickListener() { public void onItemClick(AdapterView parent, View v,int position, long id) { //Job of Onclick Listener } }; mContactList.setOnItemClickListener(listClickListener); mContactList.setAdapter(adapter); // Gesture detection gestureDetector = new GestureDetector(new MyGestureDetector(prosNos)); gestureListener = new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (gestureDetector.onTouchEvent(event)) { return true; } return false; } }; […]

从其他视图拖动时检测视图上的触摸事件

如果用户触摸视图A并在视图B上拖动到底部,如何检测触摸事件。我想在视图B中检测触摸事件。 我在视图B中添加了触摸侦听器,但如果用户最初触摸A并拖过B,则不会接收事件。

Android上的“按住”按钮需要使用onTouchListener更改状态(自定义XML选择器)

我有一个按钮图形需要“按住”function,所以我没有使用onClickListener,而是使用onTouchListener,以便应用程序可以对 MotionEvent.ACTION_DOWN, 和 MotionEvent.ACTION_UP 根据触发这两个事件的速度,我可以在两者之间的时间内运行“pressAndHoldHandler”。 无论如何,长话短说:我在同一个应用程序中有许多“基本”按钮,不需要按住function,所以他们使用的是onClickListener。 这些按钮中的每一个都已使用自己的XML选择器文件以图形方式自定义: 所以,这里的问题是:使用onTouchListener无法访问上面的选择器。 只有onClickListener将使用自己的方法的onClick()部分拉入状态更改,因此这些“按住”按钮永远不会更改状态。 对用户来说非常可怕的反馈。 我正在通过执行以下操作在ACTION_DOWN和ACTION_UP的开关案例中强制执行上述操作: if (action == MotionEvent.ACTION_DOWN) { btn_chicken.setBackgroundResource(R.drawable.btn_chicken_s3); } else if (action == MotionEvent.ACTION_UP) { btn_chicken.setBackgroundResource(R.drawable.btn_chicken_off); } 但它似乎是一个黑客,它错过了“专注但没有压力”的阶段。 之前有人绊过这个吗?

RecyclerView中的滑动和OnClick事件

我正在尝试实现一个轻扫以解除RecyclerView中的操作,但是当我在ViewHolder中的任何View上设置OnClickListener时,它会覆盖该视图上的所有OnTouch事件。 我可以放弃OnClickListener并处理TouchListener中的所有点击,但如果我在RecycleView的子视图中有多个按钮,那将是很多代码,这看起来不是正确的方法。 在我的RecyleView中我设置了Swipe以解除侦听器( 类似于此 ): setOnTouchListener(touchListener); setOnScrollListener(touchListener.makeScrollListener()); 它在ListView中工作,但在RecycleView中,OnClickListener阻止OnTouchListner事件。 ViewHolder视图的布局示例。 在RecyclerView.Adapter中充气: @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = mInflater.inflate(R.layout.push_card_view_compat, viewGroup, false); return new ViewHolder(v, onClickListener, onKeepListener); } ViewHolder: public ViewHolder(final View itemView, final OnViewHolderClickListener onClickListener, final OnKeepListener onKeepListener) { super(itemView); keepButton = (ImageView) itemView.findViewById(R.id.keep_icon); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) […]