use*_*197 22 android invalidation android-layout
Android invalidate()
和postInvalidate()
方法有什么区别?每个人何时被召唤?必须只在扩展的类中调用方法View
吗?
Dha*_*dra 38
如果您想从中重新绘制视图,invalidate()
可以调用postInvalidate()
方法.
如果您想从中重新绘制视图,View
可以调用postInvalidate
方法.
从View类派生的每个类都有invalidate和postInvalidate方法.如果调用invalidate,它会告诉系统当前视图已更改,并且应该尽快重绘.由于此方法只能从您的UIThread中调用,因此当您不在UIThread中并且仍希望通知系统您的View已被更改时,需要另一种方法.postInvalidate方法从非UIThread通知系统,并且尽快在UIThread上的下一个eventloop中重新绘制View.它也在SDK文档中简要解释:
更新:
从其他线程使用postInvalidate时会出现一些问题(比如没有立即更新UI),这样会更有效:
runOnUiThread(new Runnable() {
public void run() {
myImageView.setImageBitmap(image);
imageView.invalidate();
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20879 次 |
最近记录: |