kotlin - Runnable not running on floating action bar on Android -
i have been trying fab rotate , change icon reason runnable doesn't work @ all.
here code :
private val handler: handler = handler() private var isrotate: boolean = false private val rotate: animation = rotateanimation(0.tofloat(),90.tofloat(),0.tofloat(),0.tofloat()) private val r: runnable = runnable { fun run() { if (isrotate) { fab2.setimagedrawable(resourcescompat.getdrawable(resources, r.drawable.ic_menu_camera, null)) isrotate = false } else { fab2.setimagedrawable(resourcescompat.getdrawable(resources, r.drawable.ic_menu_gallery, null)) isrotate = true } } } override fun oncreate(savedinstancestate: bundle?) { ... rotate.duration = 1000 rotate.repeatcount = 0 rotate.repeatmode = animation.reverse rotate.fillafter = true fab2?.setonclicklistener { view -> objectanimator.offloat(view,"rotation",0.tofloat(),90.tofloat()).setduration(800).start() view.handler.postdelayed(r,400) } } the button rotates icon not change implying onclicklistener working runnable isn't.
how make happen?
you declaring runnable in wrong way. lambda expression declare run() function , declare run() function inside.
correct way declare object should be:
private val r: runnable = object: runnable { override fun run() { if (isrotate) { fab2.setimagedrawable(resourcescompat.getdrawable(resources, r.drawable.ic_menu_camera, null)) isrotate = false } else { fab2.setimagedrawable(resourcescompat.getdrawable(resources, r.drawable.ic_menu_gallery, null)) isrotate = true } } } or(lambda expression):
private val r: runnable = runnable { if (isrotate) { fab2.setimagedrawable(resourcescompat.getdrawable(resources, r.drawable.ic_menu_camera, null)) isrotate = false } else { fab2.setimagedrawable(resourcescompat.getdrawable(resources, r.drawable.ic_menu_gallery, null)) isrotate = true } }
Comments
Post a Comment