Android 自定义容器的简单实现

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,所以根据左右来描绘:






调用方式:


项目链接

猜你喜欢

转载自blog.csdn.net/qq_33453910/article/details/80802101
今日推荐