1.什么是容器
Android中的五大布局(RelativeLayout,LinearLayout,FrameLayout,TableLayout,GridLayout)就是容器,容器可以放置button,textview等等控件。Android中的相对布局,线性布局都是系统已经实现好的,开发者直接用就行。系统提供的容器可以供开发者应付绝大部分需求,但是有一些界面的需求需要开发者去自定义容器。例如下面这种图:
那下面就实现上面的图。
2.实现需求
而我的思路就是自定义容器和自定义View,容器是一个矩形,里面只能放两个view,分别左右。可以根据角度来控制斜线的倾斜度。
将左右的view单独抽出来就是上图。
2.1自定义容器
见上图,规定左右的view的布局,就是左view向右移动一段距离,右view向左移动一段距离。
先定义角度属性:
测量出宽度:
测量获取高度:
这里解释一下:
Android的测量模式有三种:UNSPECIFIED,EXACTLY,AT_MOST
UNSPECIFIED:父容器没有对当前的View有任何限制,当前View可以任意取尺寸
EXACTLY:当前的尺寸就是当前View应该取的尺寸
AT_MOST:当前尺寸是当前View能取的最大尺寸
那么上面三种测量模式对应布局时的wrap_content,match_parent和写成固定的尺寸的关系:
match_parent:EXACTLY:match_parent是利用父view给我们提供的最大剩余空间,因为父View的剩余空间是确定的,所以是精确模式。
wrap_content:AT_MOST:这个尺寸是父view给我们的参考尺寸。
30dp(固定尺寸):EXACTLY:就是用户指定自己的尺寸大小,这肯定是精确模式。
先初始化:
下面最重要的是绘出左右子view的范围:
结合上图就很容易理解和分析。
当左右子view的位置确定了,就可以描绘view了。
下面就是自定义view,主要就是难在描绘直角梯形上。
先定义一些属性:
下面就就讲述如何描绘:
因为是左右两个不同的view,所以根据左右来描绘:
调用方式: