안 드 로 이 드 제스처 조작 식별

14367 단어 android
(다음으로 이동:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1020/448.html)
우선, 안 드 로 이 드 시스템 에 서 는 제스처 상호작용 이 다음 과 같은 순서 로 실 행 됩 니 다.1. 접촉 스크린 에 접촉 하 는 순간 모 션 이벤트 이벤트 가 발생 합 니 다.2. 이 사건 은 OnTouch Listener 에 의 해 감청 되 었 고 onTouch () 방법 에서 이 MotionEvent 대상 을 얻 었 습 니 다.3. Gesture Detector (제스처 인식 기) 를 통 해 MotionEvent 대상 을 OnGesture Listener 로 전송 합 니 다.4. OnGesture Listener 는 이 대상 을 얻 고 해당 대상 이 봉 인 된 정 보 를 듣 고 적당 한 피드백 을 한다.이 순 서 는 제스처 상호작용 의 원리 라 고 할 수 있 습 니 다. 모 션 이벤트, Gesture Detector, OnGesture Listener 에 대해 알 아 보 겠 습 니 다.MotionEvent: 제스처, 터치 펜, 궤적 구 등 을 봉인 하 는 동작 이벤트 입 니 다.그 내부 에는 두 개의 중요 한 속성 X 와 Y 가 봉인 되 어 있 는데 이 두 속성 은 각각 가로축 과 세로 축의 좌 표를 기록 하 는 데 사용 된다.Gesture Detector: 각종 제스처 를 식별 합 니 다.OnGesture Listener: 이것 은 제스처 상호작용 의 감청 인터페이스 로 여러 가지 추상 적 인 방법 을 제공 하고 Gesture Detector 의 제스처 식별 결과 에 따라 대응 하 는 방법 을 호출 합 니 다.다음은 제 가 그림 을 전환 하 는 코드 예 시 를 통 해 제스처 상호작용 의 실현 을 보 여 드 리 고 여러분 들 이 위의 집행 순서 와 각 제스처 동작의 구분 에 대해 더욱 깊 은 이해 와 기억 을 가지 도록 하 겠 습 니 다.우선, ImageView 만 있 는 레이아웃 파일 인 main. xml 을 제공 합 니 다.
 1 <?xml version="1.0" encoding="utf-8"?> 
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3 android:orientation="vertical"
 4 android:layout_width="fill_parent"
 5 android:layout_height="fill_parent"> 
 6    
 7  <ImageView android:id="@+id/image"
 8 android:layout_width="fill_parent"
 9 android:layout_height="fill_parent"
10 android:layout_gravity="center"/> 
11 </LinearLayout>

그리고 우리 의 Activity 를 완성 합 니 다. 터치 스크린 의 터치 이벤트 와 제스처 시간 을 감청 해 야 하기 때문에 이 Activity 는 OnTouch Listener 와 OnGesture Listener 두 개의 인 터 페 이 스 를 실현 하고 그 중의 방법 을 다시 써 야 합 니 다.구체 적 인 코드 는 다음 과 같다.
 1    
 2 //           GestureDetector  waiyuwu.blogcn.com 
 3 private GestureDetector detector = new GestureDetector(this); 
 4 //
 5 int[] girls = new int[]{R.drawable.girl1, R.drawable.girl2, R.drawable.girl3}; 
 6 //
 7 private int index; 
 8 private ImageView image; 
 9    
10 @Override 
11 public void onCreate(Bundle savedInstanceState) { 
12 super.onCreate(savedInstanceState); 
13 setContentView(R.layout.main); 
14 image = (ImageView)findViewById(R.id.image); 
15 //         girl  
16 image.setImageResource(girls[index]); 
17 //    ImageView          
18 image.setOnTouchListener(this); 
19 //         ,               ,      。 
20 image.setLongClickable(true); 
21 detector.setIsLongpressEnabled(true); 
22 }//             
23 public void goNext(){ 
24 index++; 
25 index = Math.abs(index % girls.length); 
26 image.setImageResource(girls[index]); 
27 } 
28    
29 //  OnTouchListener onTouch   
30 //          ,       (         ,   )      。 
31 @Override 
32 public boolean onTouch(View v, MotionEvent event) { 
33 detector.onTouchEvent(event); 
34 return true; 
35 } 
36    
37 //          
38 @Override 
39 public boolean onDown(MotionEvent e) { 
40 return false; 
41 } 
42    
43 //          
44 @Override 
45 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
46 float velocityY) { 
47 //velocityX       ,              
48 if(velocityX < 0){ 
49 goNext(); 
50 }else if(velocityX > 0){ 
51 goPrevious(); 
52 } 
53 return false; 
54 } 
55    
56 //             
57 public void goPrevious(){ 
58 index--; 
59 index = Math.abs(index % girls.length); 
60 image.setImageResource(girls[index]); 
61 } 
62    
63 //        
64 @Override 
65 public void onLongPress(MotionEvent e) { 
66 } 
67    
68 //       
69 @Override 
70 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
71 float distanceY) { 
72 return false; 
73 } 
74    
75 //        
76 @Override 
77 public void onShowPress(MotionEvent e) { 
78 } 
79    
80 //        
81 @Override 
82 public boolean onSingleTapUp(MotionEvent e) { 
83 return false; 
84 } 
85 }

안 드 로 이 드 를 처음 배 웠 을 때 부터 구 글 의 문서 가 별로 라 고 생각 했 고 제스처 를 연구 할 때 구 글 의 문서 가 너무 못 쓴 것 같 았 다.많은 상수, 속성, 방법 이 설명 조차 없다.설명 이 없 으 면 되 지만 OnGesture Listener 에 서 는 손짓 이 이렇게 많 습 니 다. 설명 이 하나 도 없습니다. 끊임없이 시도 하기 전에 누가 onLongPress 와 onShowPress, onScroll 과 onFling 의 관계 와 차 이 를 알 수 있 습 니까?구 글 은 문서 에 큰 수술 을 해 야 합 니 다.다행히 나 는 끊임없이 반복 되 는 시 도 를 거 쳤 다.개인의 관점 에서 이 몇 가지 손짓 동작 에 대해 정 의 를 내 렸 다.
  • 누 르 기 (onDown): 방금 손가락 이 터치 스크린 에 닿 는 순간 바로 건 드 린 순간 입 니 다.
  • 던 지기 (onFling): 손가락 이 터치 스크린 에서 빠르게 움 직 이 고 풀 리 는 동작.
  • 길 게 누 르 기 (onLongPress): 손가락 을 한동안 누 르 고 놓 지 않 았 습 니 다.
  • 스크롤 (onScroll): 손가락 이 터치 스크린 에서 미 끄 러 집 니 다.
  • 누 르 기 (onShow Press): 손가락 을 터치 스크린 에 누 르 면 시간 범위 가 누 르 면 효과 가 나타 나 고 길 게 누 르 기 전에.
  • 들 어 올 리 기 (onSingle Tap Up): 손가락 이 터치 스크린 을 떠 나 는 순간.

  • 이런 정 의 를 제외 하고 저 는 경험 이 라 고 할 수 있 는 경험 을 정리 하 였 습 니 다. 여기 서 여러분 과 공유 하 겠 습 니 다.
  • 모든 제스처 동작 은 한 번 누 르 기 (onDown) 동작 을 먼저 수행 합 니 다.
  • 길 게 누 르 기 (onLongPress) 동작 전에 반드시 한 번 누 르 기 (onShowPress) 동작 을 수행 합 니 다.
  • 누 르 고 (onShowPress) 동작 과 누 르 고 (onDown) 동작 을 한 번 씩 들 어 올 리 는 동작 을 수행 합 니 다.
  • 길 게 누 르 기 (onLongPress), 스크롤 (onScroll), 던 지기 (onFling) 동작 을 한 후 들 기 (onSingleTapUp) 동작 을 수행 하지 않 습 니 다.

  • 좋은 웹페이지 즐겨찾기