Skip to content

view model

muune edited this page Feb 26, 2019 · 10 revisions

ChViewModel[목차]

ChViewModel(abstract class)

  • ChViewModel를 상속해서 VM클래스를 만든다.
  • style이 아닌 데이터를 바꾸는 것이 기본
  • style인 속성의 경우 @PROP var alpha = 1.0 이렇게 앞에 @PROP를 붙인다.
//SigninVM
@VM
@SuppressLint("StaticFieldLeak")
object SigninVM:ChViewModel(){
    override fun start(){
        holder.start()
        mx.forEachIndexed { i, _ -> mx[i] = 100.0 }
        ma.forEachIndexed { i, _ -> mx[i] = 0.0 }
    }
    override fun end(){
        holder.end()
        mx.forEachIndexed { i, _ -> mx[i] = 0.0 }
        ma.forEachIndexed { i, _ -> mx[i] = 0.0 }
    }
    override fun paused(){
        holder.paused()
    }
    val mx = mutableListOf(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
}
//SplashVM
@VM
object SplashVM:ChViewModel(){
    override fun start() {
        holder.start()
        title.start()
        alpha = 0.0
    }
    override fun end() {
        holder.end()
        title.end()
        alpha = 1.0
    }
    override fun resumeAnimation(it:ChItem){
        alpha = it.circleOut(0.0, 1.0)
    }
    val time = 500
    @PROP var alpha = 1.0

    val holder = Holder(0.0, 0.0, 1.0, 1.0)
    val title = Title
}

start() : ChViewModel

start()
  • View가 start될 때 데이터를 변경시키는 데 사용

end() : ChViewModel

end()
  • View가 end될 때 데이터를 변경시키는 데 사용

paused() : ChViewModel

paused()
  • View가 paused될 때 데이터를 변경시키는 데 사용

resumeAnimation() : ChViewModel

resumeAnimation(it: ChItem)
  • View가 resumeAnimation될 때 데이터를 변경시키는 데 사용
  • 매개변수가 ChItem으로 오기 때문에 easing처리를 할 수 있다.
  • 참고문서 - ChItem
override fun resumeAnimation(it: ChItem) {
    x = it.circleOut(Ch.window.width.toDouble(), 0.0)
    alpha = it.circleOut(0.5, 1.0)
}
override fun resumeAnimation(it:ChItem){
    alpha = it.circleOut(0.0, 1.0)
}

pauseAnimation() : ChViewModel

pauseAnimation(it: ChItem)
  • View가 pauseAnimation될 때 데이터를 변경시키는 데 사용
  • 매개변수가 ChItem으로 오기 때문에 easing처리를 할 수 있다.
  • 참고문서 - ChItem
override fun pauseAnimation(it: ChItem) {
    x = it.circleOut(0.0, -Ch.window.width.toDouble())
    alpha = it.circleOut(1.0, 0.5)
}
Clone this wiki locally