一. 描述事件传递分发机制

Activity-->window-->顶级View(DecorView)-->ViewGroup-->View

dispatchTouchEvent

onInterceptTouchEvent 1.返回true拦截调用自己的false调用子类 2.View没有拦截方法

onTouchEvent 不消费则调用父类的onTouchEvent

requstDisallowInterceptTouchEvent子View干预父View

二. 事件分发中的onTouch和onTouchEvent有什么区别,该如何使用

onTouch方法优先级比onTouchEvent高,会先触发。假如onTouch方法返回false,会接着触发onTouchEvent,反之onTouchEvent方法不会被调用。内置诸如click事件的实现等等都基于onTouchEvent,假如onTouch返回true,这些事件将不会被触发。

三. View和ViewGroup分别有哪些事件分发相关的回调方法

ViewGroup

OndispathTouchEvent

OnInterceptTouchEvent

OnTouchEvent

View

OndispathTouchEvent

OnTouchEvent

View没有onInterceptTouchEvent

四. View刷新机制

在Android的View刷新机制中,父View负责刷新(invalidateChild)、布局(layoutChild)显示子View。而当子View需要刷新时,则是通知父View刷新子view来完成

invalidate()和postInvalidate() 的区别及使用

当Invalidate()被调用的时候,View的OnDraw()就会被调用;Invalidate()是刷新UI,UI更新必须在主线程,所以invalidate必须在UI线程中被调用,如果在子线程中更新视图的就调用postInvalidate()

postInvalidate()实际调用的方法,mHandler.sendMessageDelayed,在子线程中用handler发送消息,所以才能在子线程中使用

五. View绘制流程

Measure => setMeasuredDimension => onMeasure

onLayout

onDraw

六. 自定义View如何提供获取View属性的接口

  • 在res/values目录下新建一个attrs.xml文件

<declare-styleable name="CustomView">

<attr name="color" format="color"/>

<attr name="font" format="dimension"/>

</declare-styleable>

  • 使用自定义View 设置自定义属性
  • 构造函数中可以获取自定义属性

自定义view局部刷新_View相关推荐

  1. android 自定义view局部刷新,Android 优化之局部刷新

    RecyclerView 局部刷新 相信现在已经很少人不用 RecyclerView 了,如果只有一个 item 的数据源改变的时候,大家都会用 notifyItemChanged(int posit ...

  2. Android 调用12306接口,GitHub - AndroidyxChen/loading-12306: 仿PC端12306的刷新loading的自定义view...

    loading-12306 仿PC端12306的刷新loading的自定义view 效果图: 核心代码及实现逻辑如下: mPaint.setColor(mColor); mPaint.setTextS ...

  3. android旋转不重绘,Android自定义view仿微信刷新旋转小风车

    本文实例为大家分享了Android仿微信刷新旋转小风车 具体代码,供大家参考,具体内容如下 不太会录像,没办法,智能截图了 不多说了,直接上代码 package com.shipneg.demoysp ...

  4. Android 自定义View中invalidate()的自动清屏含义以及屏幕刷新

    invalidate()含义 invalidate()是用来刷新View的,必须是在UI线程中进行工作.比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面.invali ...

  5. android新闻项目、饮食助手、下拉刷新、自定义View进度条、ReactNative阅读器等源码...

    Android精选源码 Android仿照36Kr官方新闻项目课程源码 一个优雅美观的下拉刷新布局,众多样式可选 安卓版本的VegaScroll滚动布局 android物流详情的弹框 健身饮食记录助手 ...

  6. Android自定义View如此简单 实现点击动画+进度刷新的提交/下载按钮(填坑面试题)

    SubmitButton 背景 实现思路 继承View 面试题:构造方法如何选择 自定义属性 面试题:styleable.AttributeSet.TypedArray的关系 测量宽高 面试题:UNS ...

  7. android刷新时的圆形动画_Android自定义view渐变圆形动画

    本文实例为大家分享了Android自定义view渐变圆形动画的具体代码,供大家参考,具体内容如下 直接上效果图 自定义属性 attrs.xml文件 创建一个类 ProgressRing继承自 view ...

  8. Android 仿微信刷新旋转小风车 自定义view

    不太会录像,没办法,智能截图了 不多说了,直接上代码 package com.shipneg.demoysp.demo;import android.content.Context; import a ...

  9. Android自定义view刷新方法

    目录 描述 描述 Android view的刷新有三个方式: //只会触发执行onDraw方法,只会改变绘制里面的内容,条目的绘制 invalidate(); //只会触发执行onDraw方法,但是可 ...

  10. 自定义View相关面试题

    目录 一.ListView中图片错位的问题是怎么产生的?有什么好的解决方案? 二.说一说你对RecycleView的认识. 三.RecyclerView与ListView有哪几层缓存机制 四.Recy ...

最新文章

  1. mustache 渲染文本一直渲染不出来
  2. 简述bios在计算机系统中的作用,BIOS的主要作用
  3. 模版引擎总结之综合分析模版引擎
  4. nssl1322,jzoj(初中)2109-清兵线【dp】
  5. hadoop源码分析_Spark2.x精通:Job触发流程源码深度剖析(一)
  6. 使用libjpeg进行JPEG图像解码
  7. (四)微调ResNet50以诊断COVID-19
  8. 森林病虫害高光谱遥感监测的研究进展
  9. python opencv —— 背景提取(MOG、KNN)、识别与检测(Haar Cascade)
  10. 迅捷cad_迅捷功能
  11. Docker 镜像地址修改
  12. Web前端开发工具和框架
  13. 红巨星粒子Red Giant Trapcode Suite
  14. 没有对手的人生是孤单的
  15. 数码管与74HC573,74HC138电路
  16. Python-集合练习(协助学生做问卷调查)
  17. 2022中国老博会/老龄用品展/智慧养老展/北京老年产业展
  18. Havel-Hakimi定理(判断是否可图序列)
  19. openTSDB详解之Writing Data
  20. 人脸识别不开手机也能解锁吗_为什么不应该用脸解锁手机

热门文章

  1. 【图像融合】基于matlab高斯金字塔+拉普拉斯金字塔彩色水下图像融合【含Matlab源码 1629期】
  2. 【缺陷检测】基于matlab GUI计算机视觉缺陷检测系统【含Matlab源码 1845期】
  3. 【图像融合】基于matlab遗传算法图像融合【含Matlab源码 1624期】
  4. 【语音去噪】基于matlab改进谱减法语音去噪【含Matlab源码 569期】
  5. 查询解析MySQL_mysql内部查询过程详解
  6. 深度学习行人检测简介_深度学习简介
  7. dask 于数据分析_利用Dask ML框架进行欺诈检测-端到端数据分析
  8. 在pycharm中安装pygame
  9. arduino cc3000 php,【arduino】新手求助, 想问一下关於CC3000设置的问题
  10. insert同时添加两张表_Q语言——表的高级查询语言(一)