전편 필요한분 여기~
2012/04/12 - [Android Study] - Android Custom Widget 만들기 5편 

후 곧 마무리 지어 지을 수 있을듯.
 
    // 결과물 Listener에 전달 하는 함수
    private void onResult() {
       // Listener 객체가 null 이 아닐 경우만 호출
        if (mListener != null) mListener.onResult(mIsOn);
    }
    // Listener 등록 함수
    public void setOnButtonClickListener(OnButtonClickListener listener) {
        mListener = listener;
    }
    // on off toggle 함수
    public void toggleOnOff() {
        mHandler.sendEmptyMessage(ANIMATION_MESSAGE_START);
    }
    // on off setting 함수
    public void setOnOff(boolean isOn) {
        mIsOn = isOn;
       // 기본 값은 on 상태를 가정하고 설정
        int left = 0;
        int right = mMovementLimite;
       // off 상태 일때
        if (mIsOn == false) {
            left = mBtnWidth - mMovementLimite;
            right = mBtnWidth;
        }
       // button rect left, right 위치 지정
        mSource.left = left;
        mSource.right = right;
       // 움직일 delta 값 초기화 
        mMoveDelta = 0;
       // 화면 갱신
        invalidate();
    }
    // 현재 상태 얻어 오기 (on 이면 true)
    public boolean getIsOn() {
        return mIsOn;
    } 
    // Listener 등록을 위한 interface 함수
    public interface OnButtonClickListener {
       // On - Off 상태 변경되면 호출됨
        public abstract void onResult(boolean onResult);
    }
    // 저장된 instance restore 함수
    @Override
    protected void onRestoreInstanceState(Parcelable state) {
       // EXTRA_ON_OFF_SAVE_KEY 값으로 on off 저장된 instance 값 읽어 옴
       // EXTRA_ON_OFF_SAVE_KEY 는 string으로 아무 것이든 상관 없음 
        mIsOn = ((Bundle)state).getBoolean(EXTRA_ON_OFF_SAVE_KEY);
       // 움직일 delta 값 초기화 
        mMoveDelta = 0;
       // 기본 값은 on 상태를 가정하고 설정
        int left = 0;
        int right = mMovementLimite;
       // off 상태 일때
        if (mIsOn == false) {
            left = mBtnWidth - mMovementLimite;
            right = mBtnWidth;
        }
       // button rect가 null 일경우 새로 생성
        if (mSource == null) {
            mSource = new Rect(left, 0, right, mBtnHeight);
       // button rect가 null 이 아니면 left, right 위치 설정 
        } else {
            mSource.left = left;
            mSource.right = right;
        }
       // 기존에 저장되어 있는 state 부모 클래스에 에 전달
       // 기존 instance 정보는 EXTRA_SAVE_INSTANCE_KEY 사용
        super.onRestoreInstanceState(((Bundle)state).getParcelable(
         EXTRA_SAVE_INSTANCE_KEY));
    }
   // instance 저장 함수
    @Override
    protected Parcelable onSaveInstanceState() {
       // instance 저장 할 bundle 생성
        Bundle bundle = new Bundle();
       // EXTRA_SAVE_INSTANCE_KEY 사용 하여 기존 instance 저장
        bundle.putParcelable(EXTRA_SAVE_INSTANCE_KEY, super.onSaveInstanceState());
       // EXTRA_ON_OFF_SAVE_KEY 사용 하여 기존 on off 상태 저장  
        bundle.putBoolean(EXTRA_ON_OFF_SAVE_KEY, mIsOn);
       // bundle 전달
        return bundle;
    } 

실 사용 법은 담편에... 후~ 

'Android' 카테고리의 다른 글

Android AsyncTask 함정 카드  (1) 2014.08.03
Android Custom Widget 만들기 7편  (0) 2012.04.12
Android Custom Widget 만들기 5편  (0) 2012.04.12
Android Custom Widget 만들기 4편  (0) 2012.04.12
Android Custom Widget 만들기 3편  (0) 2012.04.12

+ Recent posts