전편은 여기에.
2012/04/12 - [Android Study] - Android Custom Widget 만들기 4편 

음 이제 Handler 하고 몇가지 함수? 하고 Listener만 설명 하면 될듯.
이번엔 덩치큰 Handler 부터... 
    // Button animation을 담당하는 handler
    private class ButtonMoveHandler extends Handler {
       // handler 에 message가 전달 되면 호출 되는 함수
        @Override
        public void handleMessage(Message msg) {
          // message 종류 구분
            switch (msg.what) {
          // message 가 animation 시작 일 때
            case ANIMATION_MESSAGE_START :
             // animation 구분 값은 ture
                mIsAnimation = true;
              // 현재 left 값을 얻어옴
                int left = mSource.left;
              // on 상태에서 시작 했다면
                if (mIsOn == true) {
                 // 움직일 delta 값이 양수 라면
                    if (mMoveDelta > 0) {
                    // MOVE_TO_RIGHT_LEFT 값 보다 크게 움직였을 경우
                    // MOVE_TO_RIGHT_LEFT 값은 80 
                        if (left < MOVE_TO_RIGHT_LEFT) {
                       // 오른쪽으로 animation 시작
                            this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_RIGHT);
                    // MOVE_TO_RIGHT_LEFT 값 보다 작게 움직였을 경우 
                        } else {
                       // 왼쪽으로 animation 시작
                            this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_LEFT);
                        }
                 // 움직일 delta 값이 음수 라면  
                    } else {
                    // 왼쪽으로 animation 시작  
                        this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_LEFT);
                    }
              // off 상태에서 시작 했다면  
                } else {
                 // animation 방향을 구분 하기 위한 최대 값 계산
                    int max = mBtnWidth - mMovementLimite - MOVE_TO_RIGHT_LEFT;
                 // 움직일 delta 값이 음수 라면  
                    if (mMoveDelta < 0) {
                     // left 값이 계산된 값 보다 크게 움직였을 경우
                        if (left > max) {
                        // 왼쪽으로 animation 시작  
                            this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_LEFT);
                     // left 값이 계산된 값 보다 작게 움직였을 경우  
                        } else {
                        // 오른쪽으로 animation 시작  
                            this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_RIGHT);
                        }
                 // 움직일 delta 값이 양수 라면  
                    } else {
                    // 오른쪽으로 animation 시작    
                        this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_RIGHT);
                    }
                }
                break;
          // message 가 animation left 이동 일 때  
            case ANIMATION_MESSAGE_MOVE_LEFT :
              // 이동 delta 값은 DURATION_VALUE와 같음 (한 스텝에 이동 할 거리)
              // DURATION_VALUE 는 13
                mMoveDelta = DULATION_VALUE;
              // onDraw 호출
                invalidate();
              // 다시 자기 자신 호출 (종료 될 때까지 반복 호출)
                this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_LEFT);
                break;
          // message 가 animation right 이동 일 때
            case ANIMATION_MESSAGE_MOVE_RIGHT :
              // 이동 delta 값은 - DURATION_VALUE와 같음 (한 스텝에 이동 할 거리)  
              // DURATION_VALUE 는 13  
                mMoveDelta = DULATION_VALUE * -1;
              // onDraw 호출  
                invalidate();
              // 다시 자기 자신 호출 (종료 될 때까지 반복 호출)  
                this.sendEmptyMessage(ANIMATION_MESSAGE_MOVE_RIGHT);
                break;
          // message 가 animation stop 일 때 
            case ANIMATION_MESSAGE_STOP :
              // animation flag false로 설정
                mIsAnimation = false;
              // 움직일 delta 값 0으로 설정 
                mMoveDelta = 0;
              // 화면 갱신을 위한 onDraw 호출 
                invalidate();
              // left, right 이동 animation handler message 삭제 
                this.removeMessages(ANIMATION_MESSAGE_MOVE_RIGHT);
                this.removeMessages(ANIMATION_MESSAGE_MOVE_LEFT);
              // Listener 를 호출 최종 결과 통보 
                onResult();
                break;
            }
        }
    } 

이로써 덩치 큰놈들은 죄다 설명 끝났음 후~ 아구 힘들다.
담편에는 가벼운 메소드 몇 개만 하면 끝날듯?

'Android' 카테고리의 다른 글

Android Custom Widget 만들기 7편  (0) 2012.04.12
Android Custom Widget 만들기 6편  (0) 2012.04.12
Android Custom Widget 만들기 4편  (0) 2012.04.12
Android Custom Widget 만들기 3편  (0) 2012.04.12
Android Custom Widget 만들기 2편  (0) 2012.04.12

+ Recent posts