westlinkin
V2EX  ›  Android

关于android的手势识别

  •  
  •   westlinkin · May 8, 2011 · 15538 views
    This topic created in 5531 days ago, the information mentioned may be changed or developed.
    android有两种手势识别方式:一类是触摸屏手势识别,另一类是输入法手势识别。两种方式我都可以分别实现,但是我想在一个应用中同时实现就不行了。

    触摸屏方式我所实现的是左右滑动切换activity,是在一个listview上监听的,数据的显示也在listview上

    输入法手势识别需要一个GestureOverlayView,在这个控件上绘制图形。由用户自定义手势功能

    也不能用以个FrameLayout,将两种控件重叠显示。

    问:该怎么样使两种手势识别方法同时有效,又不影响我应用程序数据的显示和操作。
    3 replies    1970-01-01 08:00:00 +08:00
    obiwong
        1
    obiwong  
       May 9, 2011
    同一时刻android只能有一个view能接受输入,但你要的是将输入「同时」分发到两个view:一个GestureOverlayView,另一个ListView。换一种理解是GestureOverlayView收到输入事件处理完后不丢弃,继续将事件传递给Listview。按照这个思路,设置GestureOverlayView的OnTouchListener, 让它再调用Listview的onTouch方法并返回false就行了。

    Layout大概是:

    <FrameLayout xmlns:android=... layout_w="fill_p" layout_h="fill_p">
    <ListView layout_w="fill_p" layout_h="fill_p"/>
    <android.gesture.GestureOverlayView layout_w="f_p" layout_h="f_p"/>
    </FrameLayout>

    Activity.onCreate代码大概是:

    GestureOverlayView gov;
    gov.setOnTouchListener(new OnTouchListener() {
    onTouch(MotionEvent me) {
    list.onTouchEvent(me);
    return false;
    }}
    westlinkin
        2
    westlinkin  
    OP
       May 9, 2011
    @obiwong 这样对listview的单个项可以操作么?
    obiwong
        3
    obiwong  
       May 9, 2011
    @westlinkin 可以。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2758 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:18 · PVG 23:18 · LAX 08:18 · JFK 11:18
    ♥ Do have faith in what you're doing.