Velocity Tracker 류:터치 스크린 이벤트 의 속 도 를 추적 하 는 데 사용 되 며,일반적으로 Velocity Tracker 를 사용 하 는 절 차 는 다음 과 같 습 니 다.static VelocityTracker obtain():VelocityTracker 인 스 턴 스 가 져 오기void addMovement(MotionEvent event):motion event 를 Velocity Tracker 인 스 턴 스 에 추가 합 니 다void coptute CurrentVelocity(int units):현재 속 도 를 계산 합 니 다.units 는 속도 단 위 를 설정 하 는 데 사 용 됩 니 다.units 는 1 로 밀리초 당 몇 픽 셀 을 표시 하고 units 는 1000 으로 초당 몇 픽 셀 을 표시 합 니까 Scroller 류 는 스크롤 을 패키지 합 니 다.view 스크롤 의 위 치 를 계산 할 때 스크롤 이 발생 하 는 시간 을 설정 할 수 있 습 니 다.스크롤 이 끝 날 때 coptute ScrollOffset 함 수 는 false 로 돌아 갑 니 다.그렇지 않 으 면 true 로 돌아 갑 니 다. 상용 함수:Public void startScroll(int startX,int startY,int dx,int dy,int duration):굴 러 가 는 기점 좌표,가로 축 과 세로 축 이 굴 러 가 는 거리 와 굴 러 가 는 시간 을 설정 합 니 다.주의해 야 할 것 은 dx<0 은 오른쪽으로 구 르 는 것 이 고,D<0 은 아래로 구 르 는 것 이다.
Public boolean coptute Scroll Offset():true 로 돌아 가 스크롤 이 완료 되 지 않 았 음 을 설명 합 니 다.false 는 스크롤 이 완료 되 었 음 을 설명 합 니 다.이 함 수 는 보통 View.coptute Scroll 함수 에 놓 여 스크롤 이 끝 났 는 지 여 부 를 판단 합 니 다.duration 시간 내 에 false 로 돌아 가기pubilc final int getCurrX():스크롤 시작 점 의 가로축 거리,즉 startX 의 거리 에 비해 화면 왼쪽 상단 에 있 는 것 이 아 닙 니 다.스크롤 이 완료 되 지 않 았 을 때 이 값 은 계속 변 합 니 다. Public final int getFinalX():굴 러 가 는 거리,즉 dx 의 값 을 되 돌려 줍 니 다.오른쪽으로 굴 러 서 마이너스를 되 돌려 줍 니 다.
View 스크롤 과 관련 된 함수: Public void coptute Scroll():View 류 의 빈 함수 입 니 다.부모 용기 가 하위 view 의 위 치 를 업데이트 해 야 할 때 호출 합 니 다Public void scrollTo(int x,int y):view 를 지정 한 위치 로 스크롤 합 니 다.이 위 치 는 view 의 초기 위치 에 대한 거리 입 니 다.Public void scrollBy(int x,int y):view 를 굴 리 는 거리,오른쪽 과 아래로 마이너스 Scroller 클래스 를 사용 하여 ViewGroup 의 인 스 턴 스 를 사용자 정의 합 니 다. public class MyViewGroup extends LinearLayout {
private boolean recover=true;
Scroller mScroller=null;
public MyViewGroup(Context context, AttributeSet attrs) {
super(context, attrs);
mScroller=new Scroller(context);
}
//
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
int deltX=mScroller.getCurrX();
int deltY=mScroller.getCurrY();
scrollTo(deltX, deltY);
postInvalidate();
}
}
public void beginScroll(){
if (!recover) {
mScroller.startScroll(0, 0, 0, 0, 10000);
recover = true;
} else {
mScroller.startScroll(0, 0, -100, -100, 10000);
recover = false;
}
invalidate();
}
}