首页 > 代码库 > 怎么在popupwindow上监听手势
怎么在popupwindow上监听手势
============问题描述============
具体就是我写了一个popupwindow类,implements OnGestureListener,但是一般都得在onTouchEvent里边返回true,可是popupwindow里边没有这个方法,所以当有手势的时候就没走OnGestureListener的那些onSingleTapUp、onShowPress等方法。。请问如何解决这个问题。
就是说我想在popupwindow弹出后,监听上边的手势。
============解决方案1============
我觉得你可以思考一下一下2个问题:
(1)是不是非的监听整个popwindow窗口的手势,如果监听里面某一个控件的手势行不行?
(2)为什么要让popwindow窗体来继承 OnGestureListener,为什么不直接新建一个手势类,然后让popwindows窗体来绑定这个类。
我给你2种解决方案:
(1)根据你的描述,假定你如果得到了onTouchEvent的事件就可以解决这个问题,所以我给出的第一个解决方案是:implements OnTouchListener, OnGestureListener多继承一个OnTouchListener事件,里面自动继承一个onTouch事件,该事件和你刚纔所说的onTouchEvent等价。
(2)第二种方法,有点取巧,假设你的popwindow的布局文件类似如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/poplayout" android:layout_width="match_parent" android:layout_height="match_parent" > ...... </RelativeLayout>
新建一个类叫做MyGestureListener.java,代码如下:
class MyGestureListener implements OnTouchListener, OnGestureListener { @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onTouch(View v, MotionEvent event) { gesture_detector.onTouchEvent(event); return false; } }
在对应的函数中调用:
RelativeLayout poplayout=poplayout=(RelativeLayout)findViewById(R.id.pop); poplayout.setOnTouchListener(new MyGestureListener());
这样一来就能实现手势调用了,在MyGestureListener类中该干嘛干嘛。
怎么在popupwindow上监听手势
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。