需求分析

使用LinearLayout实现如下布局,

实施

定义形状

矩形的左下右上设置圆角半径50dp

创建drawable/half_circle_rect.xml

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:topRightRadius="50dp" android:bottomLeftRadius="50dp"/>
</shape>

定义布局

分析可得,最外层LinearLayout使用水平方向排列,且宽度比为1:1

左右两侧LinearLayout使用垂直方向排列,宽度比分别为1:1:1与1:2

所有的子元素均有一定外边距,且最外层布局应当有一个内边距

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp">
<LinearLayout
android:orientation="vertical"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent">
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/half_circle_rect"
android:backgroundTint="#00f"
android:layout_margin="5dp"/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/half_circle_rect"
android:backgroundTint="#4CAF50"
android:layout_margin="5dp"/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/half_circle_rect"
android:backgroundTint="#0ff"
android:layout_margin="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_weight="1"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_height="match_parent">
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/half_circle_rect"
android:backgroundTint="#ff0"
android:layout_margin="5dp"/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="@drawable/half_circle_rect"
android:backgroundTint="#f00"
android:layout_margin="5dp"/>
</LinearLayout>
</LinearLayout>

效果预览

真机运行效果如下,