티스토리 뷰

모바일 프로그래밍

Android - Choreographer 예제

두덕리온라인 2021. 6. 2. 20:16
728x90
반응형

아래와 같은 예제를 통해 Android에서 Choreographer를 사용하면 60fps일때 매 프레임 16.66ms마다 callback을 받을수 있다.

class MainActivity : AppCompatActivity(), Choreographer.FrameCallback {
    lateinit var time: TextView
    lateinit var choreographer: Choreographer
    private val format = SimpleDateFormat("mm:ss.SSS", Locale.US)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        time = findViewById<TextView>(R.id.time)

        choreographer = Choreographer.getInstance()
        choreographer.postFrameCallback(this)
    }

    private val TIME_CONVERT_MS_TO_NS = 1_000_000L
    private val TIME_CONVERT_NS_TO_MS = 1.0/TIME_CONVERT_MS_TO_NS
    override fun doFrame(frameTimeNanos: Long) {
        Log.e("TAG","doFrame ${frameTimeNanos*TIME_CONVERT_NS_TO_MS}")

        time.text = format.format(Date((frameTimeNanos*TIME_CONVERT_NS_TO_MS).toLong()))
        choreographer.removeFrameCallback(this)
        choreographer.postFrameCallback(this)
    }
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday