自定义View invalidate方法+postInvalidate方法+requestLayout方法详解_jianning-wu的博客-程序员秘密

技术标签: Android requestLayout  Android invalidate  invalidate()postInvalidate()区别  Android 自定义View  Android postInvalidate  

1.invalidate方法

在UI主线程中,用invalidate();本质是调用View的onDraw()绘制。

 

 

2.postInvalidate方法

主线程之外,用postInvalidate()。

 

 

postInvalidate()方法可以在UI线程执行,也可以在工作线程执行。而invalidate()只能在UI线程操作。但是从重绘速率讲:invalidate()效率高。

 

postInvalidate()源码:

 

postInvalidateDelayed()

 

所以:postInvalidate()底层也是通过handler来调用View的Invalidate()来刷新UI的。

 

 

3.requestLayout方法

和invalidate()相反,他只调用measure()和layout()过程,不会调用draw()。不会重新绘制任何视图包括该调用者本身。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37730482/article/details/80528159

智能推荐

设计模式 -- 单例模式_bai201444的博客-程序员秘密

一、简介  单例模式是比较常见的一种设计模式。在23中设计模式当中应该算是比较简单的一种了吧。那么什么是单例模式?其定义如下:            Ensure a class has only one instance, and provide a global point of access to it.  意思就是说:确保某一个类只有一个实例,而且自行实例...

HDOJ 2001 计算两点间的距离_薛定谔又死又生的猫的博客-程序员秘密

求两个坐标点之间的距离,注意打印的小数点位数就好。/** * Created by YangYuan on 2017/12/8. */public class Problem2001{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in);

httpclient使用参数设置_httpentity如何添加参数_meiye的博客-程序员秘密

参数设置1、httpclient 4.2.3HttpParams params = new BasicHttpParams();//设置连接超时时间Integer CONNECTION_TIMEOUT = 2 * 1000; //设置请求超时2秒钟 根据业务调整Integer SO_TIMEOUT = 2 * 1000; //设置等待数据超时时间2秒钟 根据业务调整

bilibiliclass51_C语言_strncpy 指定个数的字符串拷贝-函数详解_神迹小卒的博客-程序员秘密

strncpy指定个数的字符串拷贝库函数内的声明char * strncpy ( char * destination, const char * source, size_t num );简单例子#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>int main(){ char arr1[10] = "abcdefgh"; char arr2[] = "bit";

Keil调试教程_OverWatcher的博客-程序员秘密

Keil编译器的调试目录一、预设二、常用按钮介绍三、变量与I/O口的查看一、预设首先打开Options for Target...在Target标签下将Xtal(更改为单片机晶振频率值)Ctrl+F5或者点击调试按钮快捷图标,进入调试模式二、常用按钮介绍  1       2    3       4     5    6     7                    8           ...

Graphviz软件安装-配置环境变量后仍出错_graphviz配置环境变量失败_无为有处有还无的博客-程序员秘密

去官网下载安装包安装Graphviz软件并安装进入cmd输入 pip install graphviz因为我用的是pycharm,所以还得在setting中添加graphviz添加环境变量 环境变量配置在pycharm中运行代码进行测试from graphviz import Digraphdot = Digraph(comment='The Round Table')...

随便推点

FFT与NTT_aiwa6731的博客-程序员秘密

讲解:http://www.cnblogs.com/poorpool/p/8760748.html递归版FFT#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include &l...

【图像分割】基于灰狼算法最小交叉熵多阈值图像分割matlab代码_最小交叉熵图像分割_Matlab科研工作室的博客-程序员秘密

1 简介针对复杂图像的分割问题,提出一种基于灰狼算法的二维交叉熵多阈值图像分割方法.根据二维直方图斜分法得出交叉熵阈值选取公式,并将此推广到多阈值分割,以求得多个极值提高分割效果.由于二维交叉熵法在多阈值分割时计时长,复杂性高等问题,引入灰狼算法的思想,实现对多个阈值快速精确的寻优.最后,对标准图像进行分割以验证该算法,结果表明此算法比二维交叉熵穷举法计算效率高.2 部分代码%% 基于灰狼算法的最小交叉熵多阈值分割clearall;clcrng('default'..

POJ2240 套汇(单源最短路径)_Onlyan的博客-程序员秘密

给定N种货币以及它们之间的一些兑换率,问是否存在套汇的可能,使某种货币的金钱经过套汇之后变得更多。简单的单源最短路径问题,把每种货币看成一个点,点的初始值只需随便指定一个大于0的数,然后使用bellman-ford算法判定某个点的金钱是否可以无限增多,即是否存在正环。#include #include #include #include using namespace std;

k8s安装笔记_dashboard hello-world_力不竭!!!战不止!!!的博客-程序员秘密

K8S一、部署环境1.1 主机列表主机名Centos版本ipdocker versionflannel versionKeepalived version主机配置备注lvs-keepalived017.6.1810172.27.34.28//v1.3.54C4Glvs-keepalivedlvs-keepalived017.6.1810172.27.34.29//v1.3.54C4Glvs-keepalivedmaster017

Android实现贪吃蛇游戏一:游戏界面及控制_mlagents实现贪吃蛇_dgutkai的博客-程序员秘密

贪吃蛇游戏是一款经典休闲游戏,本文将在android上实现经典的贪吃蛇游戏,操作界面和以前那些游戏机一样。该游戏的实现思路主要是在一个View中将贪吃蛇的游戏界面绘制出来,游戏空间由16*32个小方块组成,使用一个数组记录每一个位置的状态(黑、白)。...

常用 API 函数(7): 位图、图标和光栅运算函数_aitanwu4387的博客-程序员秘密

BitBlt 将一幅位图从一个设备场景复制到另一个 CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 Copy...

推荐文章

热门文章

相关标签