Skip to content

Commit a5909ab

Browse files
committed
Feat: 4주차 미션 SongActivity에 Timer Seekbar 기능 추가
1 parent 4e0ba48 commit a5909ab

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

Heather/FLOClone/app/src/main/java/com/example/floclone/SongActivity.kt

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ package com.example.floclone
33
import android.content.Intent
44
import android.graphics.PorterDuff
55
import android.os.Bundle
6+
import android.os.Handler
7+
import android.os.Looper
68
import android.view.View
7-
import android.widget.TextView
9+
import android.widget.SeekBar
810
import androidx.appcompat.app.AppCompatActivity
911
import androidx.core.content.ContextCompat
1012
import com.example.floclone.databinding.ActivitySongBinding
13+
import java.util.concurrent.TimeUnit
1114

1215
class SongActivity : AppCompatActivity() {
1316

@@ -66,6 +69,20 @@ class SongActivity : AppCompatActivity() {
6669
binding.songMusicTitleTv.text = intent.getStringExtra("title")
6770
binding.songSingerNameTv.text = intent.getStringExtra("singer")
6871
}
72+
73+
// SeekBar 설정
74+
binding.songProgressSb.max = 60000 // 1분
75+
updateSeekBar()
76+
77+
binding.songProgressSb.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
78+
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
79+
binding.songStartTimeTv.text = String.format("%02d:%02d",
80+
TimeUnit.MILLISECONDS.toMinutes(progress.toLong()),
81+
TimeUnit.MILLISECONDS.toSeconds(progress.toLong()) % 60)
82+
}
83+
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
84+
override fun onStopTrackingTouch(seekBar: SeekBar?) {}
85+
})
6986
}
7087

7188
// 재생 버튼의 상태를 바꿔주는 메서드
@@ -87,6 +104,20 @@ class SongActivity : AppCompatActivity() {
87104
setResult(RESULT_OK, returnIntent)
88105
}
89106

107+
108+
private fun updateSeekBar() {
109+
val handler = Handler(Looper.getMainLooper())
110+
handler.postDelayed(object : Runnable {
111+
override fun run() {
112+
if(binding.songMiniplayerIv.visibility == View.GONE) { // 음악이 재생 중일 때
113+
val currentPosition = binding.songProgressSb.progress + 1000 // 1초씩 증가
114+
binding.songProgressSb.progress = currentPosition
115+
}
116+
handler.postDelayed(this, 1000)
117+
}
118+
}, 1000)
119+
}
120+
90121
override fun onBackPressed() {
91122
returnSongTitle() // 뒤로가기 눌렀을 때도 데이터 반환
92123
super.onBackPressed()

0 commit comments

Comments
 (0)