Android View系统学习文章汇总




一、Android 窗口与View管理(16篇)

自定义视图基础学习

浮动视图多种实现方式

触发重绘的方法源码整理

invalidate - (待整合成1篇)




** scroll - (待整合成2篇)



二、触摸事件学习(13篇)





三、ListView控件学习(8篇)

1. ListView简单使用

《ListView setAdapter has already been called 异常》

《Android ListView HeaderView和FooterView引出的Position问题》

《Android ListView加载图片》

 

2. ListView基于源码简单分析原理

《Android ListView初始化简单分析》

《自定义ViewGroup使用Adapter提供视图》

《Android ListView使用Holder优化原理》

《Android ListView itemType使用Holder原理简单分析》

《Android ListView onTouchEvent源码分析》

《Android ListView滚动scroll ,快速滑动fling 原理》

《Android ListVIew Touch,click ,longclick, foucs之间的关系》



一、事件机制

事件有很多种: 按(物理)键事件、滚轮事件、触摸事件  【都是靠消息驱动】

提出问题:手指在屏幕上点击

1. 屏幕 - WindowManagerService (InputReader、InputDispatcher) - Activity

2. ViewGroup 与View之分

3. 传递方式:首先隧道方式(向下)查找触摸事件在哪个视图内,之后再冒泡方式(向上)传递处理情况。

dispatchTouchEvent

onInterceptTouchEvent

onTouchEvent    



二、触发刷新视图诱因

大小、位置、内容改变

requestLaout、invalidate等


三、Measure

1. 本质:把相对的值转换为具体值。多大范围展示,Canvas是无穷大的。视图的大小由父视图与子视图共同决定。

2. 属性:width、height - 来自 - LayoutParams , 可以有4种类型的值wrap_content, match_parent, fill_parent

3, onMeasure方法的两个参数类型 MeasureSpec 封装父视图传递给子视图的规格

4. MeasureSpec 有三个常用方法:

getMode、getSize、makeMeasureSpec

5. 有三种模式:

unspecified 未制定大小

exactly 固定大小

at_most 最大可设置大小

6. ViewRoot.performTranversal() -> host.measure()

7. 处理Margin

8. 由上至下逐层测量大小。

for (int i=0; i < getChildCount(); i++) {

    view.onMeasure();

}



四、 Layout

1. 目的:摆放什么位置(将视图放到合适的位置)

2. 区别:getMeasureWidth 与 getWidth

onLayout参数 left, top, right,bottom由来

3. 步骤:

位置是否发生变化

回调onLayout

消除LAYOUT_REQUTRED

由上至下逐层设置位置

for (int i=0; i < getChildCount(); i++) {

    view.onLayout();

}



五、Draw

目的:显示出来让用户能看到,动画与视图

draw方法做的事情:

1. backgroud  

2. fading

3. View‘s content

4. draw children 

5. fading edges

6. scrollbars


ViewGroup.dispatchDraw

drawChild

draw

onDraw






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值