为之于未有,治之于未乱。
提纲
- View的基础知识
Android View学习笔记(一):View基础知识
Android View学习笔记(二):View滑动方式总结
Android View学习笔记(三):Scroller的原理剖析及使用(上)
Android View学习笔记(四):Scroller的原理剖析及使用(下)
磨刀不误砍柴工,所以我认为在学习自定义View之前,还是很有必要先掌握一些View的基础知识,以便在今后遇到问题时,能够融会贯通,从容的去解决问题。
官网链接
一、View的基础知识
1、 什么View
View是Android中所有控件的基类, 它在屏幕上占据一个矩形区域,负责绘图和事件处理。ViewGroup,字面意思上我们可以理解为控件组,不难理解就是包含多个View,也就是说它是由单个控件或者多个控件组成的控件。
2、 View的位置参数
View的位置主要由它的四个顶点来决定,分别对应于View的四个属性:top、left、right、bottom,其中top是左上角纵坐标,left是左上角横坐标,right是右下角横坐标,bottom是右下角纵坐标,这些坐标都是相对于View的父容器而言的,而并不是相对于手机屏幕而言。
从Android3.0开始,View增加了几个额外的参数:x、y、translationX、translationY,其中x和y是View的左上角坐标,而translationX和translationY是View左上角相对于父容器的偏移量(默认值为0),View为它们提供了get/set方法,几个参数的换算关系如下所示:
- x = left + translationX;
- y = top + translationY;
需要注意的是,View在平移的过程中,top和left表示的是原始左上角的位置信息,其值并不会发生变化。
3、常用方法
setLeft(int left)
Sets the left position of this view relative to its parent.setTop(int top)
Sets the top position of this view relative to its parent.setRight(int right)
Sets the right position of this view relative to its parent.setBottom(int bottom)
Sets the bottom position of this view relative to its parent.setX(float x)
Sets the visual x position of this view, in pixels.setY(float y)
Sets the visual y position of this view, in pixels.setTranslationX(float translationX)
Sets the horizontal location of this view relative to its left position.setTranslationY(float translationY)
Sets the vertical location of this view relative to its top position.setAlpha(float alpha)
Sets the opacity of the view to a value from 0 to 1, where 0 means the view is completely transparent and 1 means the view is completely opaque.scrollBy(int x, int y)
Move the scrolled position of your view.scrollTo(int x, int y)
Set the scrolled position of your view.
注意:在onCreate()方法中是无法获取View坐标信息的,因为此时View还没有开始绘制,所有坐标信息将为0。