Android view层
当屏幕可以装下内容的时候,他们的值相等,只有当view超出屏幕后,才能看出他们的区别:getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。当超出屏幕后,getMeasuredHeight()等于getHeight()加上屏幕之外没有显示的大小。
getHeight()是布局以后的屏幕高度
动态改变布局大小的方法:
LayoutParams lp = 控件ID.getLayoutParams();
lp.height = 320;(单位是像素)
控件ID.setLayoutParams(lp);
使用控件ID.setLayoutParams(lp)之后,还需要添加控件ID.requestLayout();
getMeasuredHeight : 表示的是view的实际大小。
getHeight: 表示的是view在屏幕上显示的大小
view 的left top right bottom的坐标是相对于父亲容器的相对坐标。
width = right -left;
height = bottom - top;
left = view. getLeft();
right = view .getRight();
top = view.getTop();
bottom = view .getBottom();
x y 是view 左上角的坐标,translationX translationY代表view相对于原始坐标(left ,top,right,bottom)的偏移量。
x = left + translationX y = top + translationY 在view的平移过程中,原始坐标(left ,top,right,bottom)不会改变,改变的是,x,y,translationX,translationY。
motionEvent e.getX() e.getY()返回的是相对于 点击view左上角的xy坐标,e.getRawX() e.getRawY()返回的是相对于手机屏幕左上角的坐标。
velocityTracker在使用之前要设置计算时间,使用完之后要回收velocitytracker资源,(类似的用法类似)
mSrollX mSrollY 单位是像素,只改变view 内容的位置不改变view本身在布局的位置,
mSrollX = view左边 - view 内容的左边 mSrollY = view上边 - view 内容上边(在view 的坐标系里
srollTo scrollBy 适用于对view 内容的滑动;动画适用于没有交互的view,复杂的动画效果;layoutparam 改变布局参数,操作复杂,但是适用于有交互的view。
点击事件分发过程由 dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent三个函数完成。
如果事件能传递到当前view,一定会调用dispatchTouchEvent方法
点击事件首先传递到根view group,它的dispatchTouchEvent就会被调用,如果此viewgroup 的 onInterceptTouchEvent方法返回true(表示要拦截当前事件),接着事件就会交给这个viewGroup来处理,即onTouchEvent方法会被调用。 如果onInterceptTouchEvent返回false表示不拦截当前事件,此事件就会继续传递到它的子元素,接着子元素的dispatchTouchEvent方法就会被调用,如此反复直至事件被最终处理。
Android view层的更多相关文章
- android View层的绘制流程
还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得 ...
- Android 遮罩层效果
(用别人的代码进行分析) 不知道在开发中有没有经常使用到这种效果,所谓的遮罩层就是给一张图片不是我们想要的形状,这个时候我们就可以使用遮罩效果把这个图片变成我们想要的形状,一般使用最多就是圆形的效果, ...
- Android View绘制流程
框架分析 在之前的下拉刷新中,小结过触屏消息先到WindowManagerService(Wms)然后顺次传递给ViewRoot(派生自Handler),经decor view到Activity再传递 ...
- out/target/common/obj/PACKAGING/public_api.txt android.view.KeyEvent.KEYCODE_has changed value from
编译出错: out/target/common/obj/PACKAGING/public_api.txt:22549: error 17: Field android.view.KeyEvent.KE ...
- 深入理解Android View(转)
做android其实也有一段时间了,我们每个人都会碰到一些这样或那样的问题,碰到问题了就拼命百度,可是发现,我们解决问题的能力并没有提升很多,所以我才有想总结一下我项目中所用过的相关知识,并了解一下A ...
- 【View层】界面绘制
[引用]:http://www.jianshu.com/p/c5fc8c6b967a [View层]IOS纯代码绘制界面(一) 字数2303 阅读385 评论2 喜欢16 IOS开发中界面绘制占据了绝 ...
- Android View框架总结(八)ViewGroup事件分发机制
请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上 ...
- Android View框架总结(二)View焦点
请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52263256 前言:View框架写到第六篇,发现前面第二篇竟然没有, ...
- Android View的滑动
Android View的滑动 文章目录 Android View的滑动 一.实现移动 1.1 layout() 1.2 设置位置偏移量 1.3 改变布局参数 1.4 动画 1.5 ScrollTo以 ...
随机推荐
- Kubernetes集群搭建之企业级环境中基于Harbor搭建自己的私有仓库
搭建背景 企业环境中使用Docker环境,一般出于安全考虑,业务使用的镜像一般不会从第三方公共仓库下载.那么就要引出今天的主题 企业级环境中基于Harbor搭建自己的安全认证仓库 介绍 名称:Harb ...
- 浅谈工作单元 在整个 ABP 框架当中的应用
ABP在其内部实现了工作单元模式,统一地进行事务与连接管理. 其核心就是通过 Castle 的 Dynamic Proxy 进行动态代理,在组件注册的时候进行拦截器注入,拦截到实现了 Unit Of ...
- (转)[Python 网络编程] makefile (三)
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相 ...
- 源码安装ELK-5.6.10版本
目录: 一.介绍 二.安装JDK 三.安装Elasticsearch 四.安装Kibana 五.安装Nginx 六.安装Logstash 七.安装Logstash-forwarder 八.测试 系统环 ...
- Java代码更改shape和selector文件的颜色值
Android里面经常会使用shape或者selector来定制一些View的背景.那么如果想要动态更改shape或者seletor文件中的颜色值,该怎么处理呢? 一.Java代码更改shape的颜色 ...
- EL表达式jsp页面double小数点后保留两位
EL表达式jsp页面double小数点后保留两位,四舍五入 <fmt:formatNumber type="number" value="${member.logi ...
- java中Char到底是什么格式的编码
文本处理中经常有这样的逻辑: String s = new String(bts, "UTF-8"); 看String源代码,里面是一个char[],将bts按照某种编码方式,变成 ...
- [转]windows 10 搭建angular开发环境
本文转自:https://www.cnblogs.com/lilunpai/articles/7992538.html 一.环境介绍 1.开发环境:Windows10 2.开发ide工具:VS cod ...
- ___Json帮助类
using Newtonsoft.Json;using Newtonsoft.Json.Converters;using Newtonsoft.Json.Linq;using System.Colle ...
- 30.QT-渐变之QLinearGradient、 QConicalGradient、QRadialGradient
渐变有三种:QLinearGradient.QConicalGradient . QRadialGradient 它们都有一个QGradient父类 QGradient父类的常用公共函数有: void ...