2012-01-11 4 views
7

분할 터치 이벤트가 작동하려고합니다. 즉, 여러보기에서 터치 입력을 별도로 감지 할 수 있습니다.분할 모션 이벤트 - 여러보기에 동시에 입력 허용

이 기능은 벌집에 추가되었으며 호환성 라이브러리를 사용하여 백 포트 할 수 있습니다. 대한 추가 정보를 원하시면 여기있다 : http://developer.android.com/sdk/android-3.0.html -> "분할 터치 이벤트"

그것은 기본적으로 말한다 아래로 스크롤 : 는 이전에는 단 하나의 뷰가 한 번에 터치 이벤트를 받아 들일 수 있습니다. Android 3.0에서는보기 및 창 전체에서 터치 이벤트를 분할하기위한 지원이 추가되어 서로 다른보기가 동시에 터치 이벤트를 허용 할 수 있습니다. 응용 프로그램이 Android 3.0을 대상으로 할 때 터치 이벤트 분할이 기본적으로 사용됩니다. 즉, 응용 프로그램에서 android : minSdkVersion 또는 android : targetSdkVersion 속성 값을 "11"로 설정 한 경우입니다. 2 imageviews 상단 하나가 바닥 동안 '포인터'의 태그로 Log.e 이벤트를 생산하고 감동이있는 프로젝트에서 https://sites.google.com/site/droidbean/hologramlwp/downloadmodels/attachments/SplitMotionTest.rar?attredirects=0&d=1

: 여기

내가 그것을 테스트하기 위해 사용하고 샘플 프로젝트 보기가 'pointer2'를 생성하지만 톱뷰를 터치 한 다음 분리 된 손가락으로 두 번째를 터치하면 (둘 다 별도의 뷰를 터치 함) 진저 브레드의 첫 번째보기의 메시지 만 생성합니다.

동일한 프로젝트가 벌집에서 실행되면 올바르게 작동하며 두보기 모두 해당 '포인터'로그 항목을 생성합니다.

제 질문은 진저 브레드 나 다른 낮은 안드로이드 버전을 실행하는 전화에서 어떻게 똑같은 효과를 얻습니까?

+0

는 모든 터치 이벤트를 캡처하는'onInterceptTouch'를 사용하여 시도 가지고 한 다음의 의견에 파견? – JiTHiN

답변

1

진저 브레드는 터치 이벤트 분리를 지원하지 않으므로 한 가지 해결 방법은 두보기 위에 오버레이를 만드는 것입니다. 예 : 빈 RelativeLayout을 xml의 다른 뷰 뒤에 추가하거나 두 뷰를 덮는 코드에서 오버레이라고 부르 자. 오버레이의 OnTouchListener를 설정하고 이벤트가 발생한보기 (x, y)를 프로그래밍 방식으로 결정합니다. 그런 다음 결정된보기의 onTouchEvent로 이벤트를 보냅니다.

매우 친절하지 않아서 고쳐졌습니다.

예 :

public boolean onTouch(View v, MotionEvent event) 
    { 
     if(view1.hitTest(event)) 
     { 
      return view1.onTouchEvent(event); 
     } else if(view2.hitTest(event)) 
     { 
      return view2.onTouchEvent(event); 
     } 
     return false; 
    } 
+0

고마워,이게 내가 끝내야 할 방법이야. – behelit