[VelocityTracker] 드레그 속도에 따른 이벤트 처리
Android/Class 2017. 11. 27. 12:01 |ListView를 보시면 화면을 터치한 후 드래그하는 속도에 따라 ListView의 스크롤링 속도가 변하는 것을 볼 수 있습니다.
천천히 하면 스크롤도 천천히 되고 빠르게 드래그하면 바퀴 돌 듯이 ListView가 스크롤 되지요. 이런 효과는 어떻게 구현될 수 있을까요?
안드로이드에서 제공하는 클래스를 통해 쉽게 구현할 수 있습니다. 다음의 코드를 보시죠.
public class MyOnTouchListener implements OnTouchListener {
private VelocityTracker mVelocityTracker;
public boolean onTouch(View v, MotionEvent event) {
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
mVelocityTracker.addMovement(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.v(TAG, "ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.v(TAG, "ACTION_MOVE");
mVelocityTracker.computeCurrentVelocity(1);
float velocity = mVelocityTracker.getXVelocity();
break;
case MotionEvent.ACTION_UP:
Log.v(TAG, "ACTION_UP");
if (mVelocityTracker != null) {
mVelocityTracker.recycle();
mVelocityTracker = null;
}
break;
}
return true;
}
}
'Android > Class' 카테고리의 다른 글
Context 클래스 (0) | 2017.10.10 |
---|---|
[TouchDelegate] 터치영역 확장 (0) | 2016.02.29 |
[Android] Nested RecyclerView 만들기 (0) | 2015.12.17 |
WeakReference & SoftReference (0) | 2015.11.20 |
[View] void onMeasure / View.MeasureSpec (0) | 2015.11.02 |