초급 6.뽀모도로 타이머

정리

chain - 가로나 세로의 같은 라인이라면 체인설정 가능

  • app:layout_constraintHorizontal_chainStyle="packed"

seekBar - 슬라이더로 이동가능, 여기서는 1분 타이머이므로 max 60

<SeekBar
        android:max="60">

seekBar.setOnSeekBarChangeListener의 3개 콜백 함수

 override fun onProgressChanged(
                    seekBar: SeekBar?,
                    progress: Int,
                    fromUser: Boolean
                ) {
                    if (fromUser) { //사용자가 실제로 조작했을때만 업데이트
                        updateRemainTimes(progress * 60 * 1000L)
                    }
                }

                override fun onStartTrackingTouch(seekBar: SeekBar?) { // 다시 조작시킬 때
                    currentCountDownTimer?.cancel() //현재 카운트시간을 멈춤
                    currentCountDownTimer = null

                }

                override fun onStopTrackingTouch(seekBar: SeekBar?) { // 조작을 멈췄을 때, 카운트 시작

                    seekBar ?: return // 더이상 카운트다운을 진행하지않음

                    currentCountDownTimer = createCountDownTimer(seekBar.progress * 60 * 1000L)
                    currentCountDownTimer?.start() //중간에 코드 수정으로 언제든 null이 될수 있으므로
                }

SoundPool

  • 오디오 파일을 메모리에 로드해서 빠르게 재생할 수 있는 클래스

null?인 인자일 경우, null이 아닐경우에만 let으로 호출하는 함수

tickingSoundId?.let { soundId ->
          soundPool.play(soundId, 1F, 1F, 0, -1, 1F)
                  //좌우 볼륨, 동시에 재생하는게 아니기 때문에 우선순위는 0, 무한반복 loop -1, 재생속도
           }

Pause나 Resume은 원래 각 streamId를 받아 중지, 재개할수있지만
여기서는 활성화함수가 하나이므로 autoPause, autoResume 사용

사운드 미디어 파일들은 많은 메모리가 필요 - 따라서 사용하지않을때 메모리에서 해제

override fun onDestroy() {
        super.onDestroy()
        soundPool.release() // 로드된 사운드 파일들이 사용하지 않을때 해제됨.
    }

themes에서 레이아웃 이전에, 윈도우 색깔자체를 바꿈

<item name="android:windowBackground">@color/pomodoro_red</item> 

지금은 롤리팝 상위버전이고, 상태바 색깔바꾸기

 <item name="android:statusBarColor" >@color/pomodoro_red</item> 

Baseline - text 아래쪽의 선에 맞춤

app:layout_constraintBaseline_toBaselineOf="@id/remainMinutesTextView"

이미지

  • 200 * 200dp 사이즈를 벡터 drawable로 사용할것을 권장, 그 이상은 밀도별로 프로젝트에 저장

색상 - 두자리씩 각각 알파, 레드, 그린, 블루 (알파가 00은 투명)

<color name="transparent">#00000000</color> 

seekBar 속성

<SeekBar
        android:layout_marginHorizontal="20dp" // 좌우동시에 마진
        android:max="60" //최대값 60
        android:progressDrawable="@color/transparent" //progress색깔
        android:thumb="@drawable/ic_thumb" // 커서
        app:tickMark="@drawable/drawable_tick_mark" /> //tickMark를 android가 아닌 app으로 설정해야 깔끔함.






좋은 웹페이지 즐겨찾기