美文网首页
Android 的invalidate 与postInvalid

Android 的invalidate 与postInvalid

作者: 因为我的心 | 来源:发表于2020-11-18 10:17 被阅读0次

一、前言:

区别:
  • invalidate
    用于进行View的刷新,在UI线程调用

  • postinvalidate
    用于进行View的刷新,在非UI线程调用,将非UI线程切换到UI线程,最后也是调用invalidate。

二、解析

1、postInvalidate() 方法

对于线程中的刷新一个 View 为基类的界面,可以使用 postInvalidate() 方法在线程中来处理,其中还提供了一些重写方法比如 postInvalidate(int left,int top,int right,int bottom) 来刷新一个矩形区域,以及延时执行,比如postInvalidateDelayed(long delayMilliseconds) 或 postInvalidateDelayed(long delayMilliseconds,int left,int top,int right,int bottom) 方法,其中第一个参数为毫秒,如下:

void postInvalidate ()
void postInvalidate (int left, int top, int right, int bottom)
void postInvalidateDelayed (long delayMilliseconds)
void postInvalidateDelayed (long delayMilliseconds, int left, int top, int right, int bottom)

2、View.postDelayed()方法

在Android里,获取View宽高是个很长见得的话题了。众所周知,在Oncreate里直接调用View.getWidth或者View.getMeasuredWidth返回都是0。所以获取宽高时机很重要,对于这个问题的解决方法概括起来有四种方法。

     view.post(new Runnable() {
          @Override
          public void run() {
              int width=mTextView.getMeasuredWidth();//View宽度
              int height=mTextView.getMeasuredHeight());//View高度
          }
    });

相关文章

网友评论

      本文标题:Android 的invalidate 与postInvalid

      本文链接:https://www.haomeiwen.com/subject/paiqiktx.html