1. (public) VideoView.setMediaController(MediaController controller) 호출
    1. 이미 MediaController가 설정되어 있는 경우 보이지 않도록 처리(hide() 호출)
    2. 내부적으로 사용하는 handler message를 제거
    3. MediaController를 포함하고 있는 decor view를 제거
    4. (private) VideoView.attachMediaController() 호출
      1. media controller와 media player가 상호 참조될 수 있도록 설정
      2. media controller가 추가될 view를 결정
      3. (public) MediaController.setAnchorView() 호출
        • (MediaController 자체는 FrameLayout 이므로) 자신에 포함된 모든 자식 views를 삭제
        • (protected) MediaController.makeControllerView() 호출
          • com.android.internal.R.layout.media_controller(.xml)를 이용해 view group을 inflate
          • (private) MediaController.initControllerView() 호출
            1. ImageButton(pause, fast forward, rewind, next and previous) 초기화
            2. ProgressBar(or SeekBar) 초기화
            3. TextView(end time and current time) 초기화
            4. StringBuilder and Formatter instance 생성
            5. (private) installPrevNextListeners() 호출
              1. Next와 Previous 버튼에 listener를 설정하고, listener가 null이 아닌경우에만 각 버튼을 활성화
          • inflate된 ViewGroup을 반환
        • makeControllerView()가 반환한 ViewGroup instance를 LayoutParams(MATCH_PARENT, MATCH_PARENT)와 함께, 자신(MediaController, FrameLayout)의 child로 추가
      4. VideoView의 상태가 ERROR, IDLE, or PREPARING이 아닌경우 MediaController를 활성화

Posted by 세월의돌