在 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 中单击按钮后每秒刷新自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

从列表视图中删除一行后刷新片段

在 xcode 中的自定义视图中给出高度后刷新情节提要视图控制器

在xcode中自定义视图中给出高度后刷新故事板视图控制器

故事板无需单击按钮即可应用推送(模态,推送,自定义)

Android:从自定义列表视图中单击的按钮获取列表视图项目

单击自定义按钮时如何创建视图