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