그동안 객체 터치에 대한 이벤트 처리 시, 단순히
findViewById(R.id.view1).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int action = motionEvent.getAction();
if(action==MotionEvent.ACTION_DOWN)
// do something...
else{
// do something...
}
return false;
}
});
위의 코드와 같이 각 객체에 대해 새로운 onTouch 함수를 오버라이드해서 처리해주어 왔었다.
하지만, 이와같이 코드를 작성하면 같은 코드가 중복될 것이고, 객체지향프로그래밍의 관점에서 효율적이지 못한 코드일 것이다.
이때, GestureDetector 클래스의 객체를 사용하면 더 효율적일 것이다.
코드 사용 예시)
public class MainActivity extends AppCompatActivity {
// GestureDetector 변수 전역선언
GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
/* .... */
detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent motionEvent) {
// do something...
return true;
}
/* onShowPress(), onSingleTapUp(), onScroll(), onLongPress(), onFling() ... 등등 */});
findViewById(R.id.view).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {detector.onTouchEvent(motionEvent); // detector에게 이벤트 전달, 처리요청
return true;
}
});
}
'프로그래밍 > 안드로이드 앱 프로그래밍' 카테고리의 다른 글
[Android] Java 코드에서 px->dp변환 과정없이 바로 값 적용하기 (0) | 2019.01.18 |
---|---|
[Android] Toast 가지고 놀기 (위치지정, 모양/색 변경) (1) | 2019.01.16 |
[안드로이드 앱개발] bitmap drawable 사이즈 변경(재조정)하기 (0) | 2018.08.07 |
[안드로이드 앱개발] layout 남은 공간 채우기 (Linear layout) (0) | 2018.08.07 |
Android - fragment에서 ActionBar 가지고 놀기 (0) | 2018.01.16 |