如何在 TouchEvent 之后重绘视图?

Posted

技术标签:

【中文标题】如何在 TouchEvent 之后重绘视图?【英文标题】:How can I redraw a View after a TouchEvent? 【发布时间】:2012-02-01 01:06:03 【问题描述】:

我对@9​​87654321@ 进行了子类化,以获得用户可以用手指在其上“绘图”的视图。我实现了接口View.OnTouchListener

如何在onTouch 方法中触发视图的重绘?我是否需要实现线程/可运行?我以为invalidate()会触发重绘,但这不起作用。

【问题讨论】:

【参考方案1】:

只需在视图的 onTouchEvent 方法中调用 this.invalidate,它确实应该工作除非你没有在你的 onDraw 方法中做正确的事情。确保你引用的是正确的画布在覆盖的 onDraw 方法中绘制事物,而不是例如构造函数。

@Override
public boolean onTouchEvent(MotionEvent event) 
    this.invalidate();
    return true;

【讨论】:

谢谢您的回答。我忘了注册 OnTouchListener:this.setOnTouchListener(this); 现在可以正常使用了!

以上是关于如何在 TouchEvent 之后重绘视图?的主要内容,如果未能解决你的问题,请参考以下文章

UILabel 重绘视图。如何避免这种行为?

如何使用 swift 清除和重绘 UIView 的内容(存在于视图控制器中)?

当在相同的 ViewController 下触摸具有相同父视图的两个视图时,iOS 无法获取新的 touchEvent

SwiftUI 在视图之间切换

iPhone:如何在捏缩放uiscrollview时重绘子视图

如何在 SWIFT 中重绘我的视图?