[置顶] Android View系统学习文章汇总_第1张图片


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

自定义视图基础学习《覆写onMeaure进行measure操作》
《覆写onLayout进行layout,含自定义ViewGroup例子》《Android Canvas 两种使用方式》
《Android 使用Canvas Transalte方法控制视图移动》

浮动视图多种实现方式《Android 浮动视图效果 第三种实现方式》
《Android 可移动悬浮窗口 WindowManager》
触发重绘的方法源码整理《Android View中的开关学习即位运算》
《Android addView源码分析》《Android setVisibility参数VISIBLE, GONE, INVISIBLE与源码简单分析》《Android refreshDrawableState源码及流程简单分析》
《Android requestLayout源码简单分析》

invalidate- (待整合成1篇)《Android invalidate流程方法调用堆栈分析》
《Android invalidate流程分析-图文》
《Andorid Invalidate 引发的思考》
《Android invalidate学习使用的例子》
《Android 使用dmeo和源码分析invalidate流程》


《Android View坐标getLeft, getRight, getTop, getBottom》


** scroll - (待整合成2篇)《Android 使用view.ScrollBy实现View随手指移动》
《Android 使用Scroller自动滚动第一种实现》
《Android 使用Scroller自动滚动第二种实现》
《从源码分析ScrollBy和ScrollTo仅执行onDraw方法》
《Android View.scrollTo, View.scrollBy控制视图滚动原理》



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

《Android Touch事件学习系列汇总》《Andorid Touch事件学习 1 点击事件》《Android Touch事件学习 2 触发点击事件的地方》《Android Touch事件学习 3 区分各种手势基础知识》
《Android Touch事件学习 4 获取手指触摸位置》
《Android Touch事件学习 5 点击与长按原理》《Android Touch事件学习 6 手势识别》

《Android Touch事件学习 7 交给哪个视图处理事件?》

《Android Touch事件学习 8 事件分发原理》

《Android Touch系统学习整理》
《Android Touch Event接收并传递给Activity》
《Android Touch事件学习 - 修改MotionEvent的值》
《Android Touch相关资料收集-》




三、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






更多相关文章

  1. Android 15本经典教程和150多个实例源码
  2. 上百个android小项目源码(来源于网络)
  3. android设置EditText不可编辑内容,响应点击事件
  4. 【Android】Android 4.2源码下载(ubuntu 12.10)
  5. Android 神兵利器Dagger2使用详解(四)Scope注解的使用及源码分析
  6. 求助: Android 加载 webview, 点击webview 中网页时间, 如何触发
  7. Android开发资料推荐之20个Android游戏源码!
  8. Android视图篇之一:Android常见基本布局

随机推荐

  1. Android客户端移动流量无法登陆OpenFire
  2. Android之反编译技术
  3. android中动态输入日期与时间
  4. android类型的毕业设计大作业的源码,去哪
  5. 【凯子哥带你学Android】Andriod性能优化
  6. 智能指针
  7. Android隐藏状态栏实现沉浸式体验
  8. Android复制assets目录下的文件到另一个
  9. 以 Okhttp3源码 为例 ------ 图解 缓存机
  10. Android(安卓)文件选择器详解及实例代码