사용자가보기 A를 터치하고보기 위로 아래로 드래그하면 어떻게 터치 이벤트를 감지합니까?보기 B에서 터치 이벤트를 감지하고 싶습니다.다른보기에서 끌 때보기에서 터치 이벤트 감지
사용자가 처음에 감동하고답변
당신이 할 수있는 귀하의 요청에 따라 아래 코드를 사용하십시오 :
뷰 경계을 테스트하는방법이 TextView
final TextView viewA = (TextView) findViewById(R.id.textView);
final TextView viewB = (TextView) findViewById(R.id.textView2);
이 설정 viewA
빈 OnClickListener
가에 필요로
Rect outRect = new Rect();
int[] location = new int[2];
private boolean isViewInBounds(View view, int x, int y){
view.getDrawingRect(outRect);
view.getLocationOnScreen(location);
outRect.offset(location[0], location[1]);
return outRect.contains(x, y);
}
테스트를 (코드 beloow에 사용) 계속활성3210
viewA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {}
});
viewA.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int)event.getRawX();
int y = (int)event.getRawY();
if(event.getAction() == MotionEvent.ACTION_UP){
if(isViewInBounds(viewB, x, y))
viewB.dispatchTouchEvent(event);
else if(isViewInBounds(viewA, x, y)){
Log.d(TAG, "onTouch ViewA");
//Here goes code to execute on onTouch ViewA
}
}
// Further touch is not handled
return false;
}
});
ACTION_UP
까지 설정 viewB
당신은 또한 viewA
viewB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {}
});
viewB.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int)event.getRawX();
int y = (int)event.getRawY();
if(event.getAction() == MotionEvent.ACTION_UP){
if(isViewInBounds(viewA, x, y))
viewA.dispatchTouchEvent(event);
else if(isViewInBounds(viewB, x, y)){
Log.d(TAG, "onTouch ViewB");
//Here goes code to execute on onTouch ViewB
}
}
// Further touch is not handled
return false;
}
});
감사에 viewB 드래그에 눌러 원하는 경우에만 필요합니다.
2보다 큰보기의 경우 코드가 어떻게 보이나요? –
드래그를 사용하여 시도하고 프레임 워크를 드롭 B.
위로 끌면 경우내가보기 B에서 터치 리스너를 추가했지만 이벤트를 수신하지 않습니다.
만 avalible 즉 3.0 또는 그 이후 – Magakahn
Views A와 B가 포함 된 ViewGroup에서 override ViewGroup.dispatchTouchEvent(MotionEvent ev)
메서드가 필요하다고 확신합니다. 컨테이너는 MotionEvent.getAction() == MotionEvent.ACTION_DOWN
을 수신하면 대상 뷰를 정의한 다음 수신 할 때까지 다음 터치 이벤트를 모두 대상 뷰로 전달합니다 MotionEvent.getAction() == MotionEvent.ACTION_UP
또는 MotionEvent.ACTION_CANCEL
.
대상보기가 A 또는 컨테이너 자체입니다 (컨테이너 구현시 onInterceptTouchEvent(MotionEvent ev)
메소드 구현). 따라서 이러한 동작을 무시하고 터치 이벤트를 대상보기뿐만 아니라 터치 된 영역 아래의 모든보기 (예 : B보기)로 전달해야합니다.
관심이 있으시면 코드 샘플을 공유하면 도움을 드리겠습니다.
[나는 또한 이것에 동일한 문제가있다] (http://stackoverflow.com/questions/13309111/programatically-execute-another-touch-event-when-one-touch-event-ocentures-in-andr). 데모 코드를 제공해 줄 수 있습니까? –
B면에있을 때 수동으로 onTouch
이라고 부릅니다.
if (viewBRect.contains(x, y)) {
viewBsonTouch(view, motionEvent);
}
뷰 A의 onTouchEvent에서 true를 반환하면 이벤트가 전파되지 않습니다. 이 특별한 경우에 A가 B보다 낮 으면 온 스크린 A에서 false를 반환합니다.
일부 코드를 게시 할 수도 있습니다.다음과 같이
View
에서 onTouchEvent
를 오버라이드 (override) :
@Override
public boolean onTouchEvent(MotionEvent event)
{
float x = event.getRawX();
float y = event.getRawY();
if ((B.getLeft() <= x <= B.getRight()) &&
(B.getTop() <= y <= B.getBottom())
)
{
Log.i("A", "Motion Event is currently above B");
B.dispatchTouchEvent(event);
}
return true;
}
BView
에서, 같은 방법을 우선 확인하고 당신이 돌아 거짓 :
@Override
public boolean onTouchEvent(MotionEvent event)
{
//TODO handle touch event
return false;//this will allow A to continue using the event
}
@ dcanh121이 먼저 테스트 해 보겠습니다. 또는 건설적인 의견을 제시 할 수 있습니다. 예를 들어 왜 그것이 효과가 없다고 생각하는지, 어떻게 조정해야한다고 생각하는지 등입니다. – Phil
- 1. UILabel에서 터치 이벤트 감지
- 2. 보기에서 터치 이벤트 좌표 감지
- 3. 많은 아이들이있는 레이아웃에서 android 감지 터치 이벤트
- 4. iPhone에서 응용 프로그램의 모든 터치 이벤트 감지
- 5. 목표 C : UIScrollView에서 터치 이벤트 감지
- 6. iPhone의 다른보기에서 터치 응답을 변경 하시겠습니까?
- 7. Android 글로벌 터치 이벤트
- 8. iphone 키보드 터치 이벤트
- 9. 이동했을 때보기에서 삼각형이 사라짐
- 10. 비트 맵에서 터치 감지
- 11. 이미지보기에서 터치 감지
- 12. 멀티 터치 감지
- 13. Alpha가있는 PNG 터치 감지
- 14. 코코아 터치 - 모션 감지?
- 15. UIImageView 애니메이션에서 터치 감지
- 16. MPVolumeView에서의 터치 감지
- 17. 터치 스크린 데스크탑 감지
- 18. 언제든지 사용자가 터치 감지
- 19. UIButton 터치 감지
- 20. Android : 서비스에서 터치 감지
- 21. 스크롤보기 터치 감지
- 22. cocos2d에서 스프라이트 터치 감지
- 23. iPhone - 터치 영역 감지
- 24. 텍스트의 손가락 터치 감지
- 25. UIView 배열에서 터치 감지
- 26. 특정 sprite 터치 감지
- 27. 간단한 터치 동작 감지
- 28. UIScrollView의 단일 터치 감지
- 29. UIView 터치 감지
- 30. 외부에서 시작된 터치 감지
[이 참조] (http://stackoverflow.com/questions/13309111/programatically-execute-another-touch-event-when-one-touch-event-occures-in-andr) –