Android Velocity Tracker 클래스 와 Scroller 클래스

4103 단어 velocity
  • 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();
    
        }
    
    }

  • 좋은 웹페이지 즐겨찾기