在 Kotlin 中单击按钮后每秒刷新自定义视图

Posted

技术标签:

【中文标题】在 Kotlin 中单击按钮后每秒刷新自定义视图【英文标题】:Refreshing custom view every second after cclicking button in Kotlin 【发布时间】:2021-11-11 21:53:03 【问题描述】:

我用两个自定义视图创建了线性布局。

class myView1(context: Context?, attrs: AttributeSet?) : View(context, attrs) 
...
 override fun onDraw(canvas: Canvas?)..


class myView2(context: Context?, attrs: AttributeSet?) : View(context, attrs) 
...
 override fun onDraw(canvas: Canvas?)..

我有按钮。我想有这样的情况:

如果单击按钮:开始循环,每秒调用一次 onDraw(每秒刷新一次视图) 如果再次单击按钮:中断循环。

我正在尝试使用 .invalidate(),但它不起作用。

如何调用创建该循环?

【问题讨论】:

【参考方案1】:

我不能写评论,所以我会回答,你没有写出它是如何不起作用的invalidate()方法,invalidate() problem, 无论如何,我添加了一个循环,您需要在其中调用invalidate()

  var timer = Timer()
            var isTimerWork = false
    
            btn.setOnClickListener 
                if (isTimerWork) 
                    isTimerWork = false
    
                    timer.cancel()
                    timer = Timer()
                 else 
                    isTimerWork = true
    
                    timer.scheduleAtFixedRate(object : TimerTask() 
                        override fun run() 
    //                       invalidate view
                        
                    , 0, 1000)
                
            

【讨论】:

以上是关于在 Kotlin 中单击按钮后每秒刷新自定义视图的主要内容,如果未能解决你的问题,请参考以下文章