android布局实践——模仿微信主界面

这是目前微信6.0版本的主界面

  

先来分析一波:

  1.(top.xml)界面头部有一个微信(6)消息提醒    一个搜索图标   一个更多的的图标+,中间还有一段空白,我们可以弄两个textView(其中一个权重给会自动占其余空白部分),和两个图片按钮

  2.(bottom.xml)界面底部可以看到是由4个相同的部分组成,这里我们可以先弄个单选群( <RadioGroup>)给4个包起来,然后再分为4个单选按钮控件(radioButton)

  3.(wx.xml)然后我们再建一个wx.xml把前面两个包含进来,有上面图片可看出界面分三部分,所以我们zai'wx.xml新建三个LinearLayout分别显示头部,中部和底部

  4.底部4个控件当我们点击其中一个会变成绿色,其余为白色,这里我们可以在drawable中添加选择器分别设置(tab_wx.xml,tab_lxr.xml,tab_fx.xml,tab_wo.xml)。

代码如下:

  1.top.xml

    

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="50dp"
 5     android:orientation="horizontal" 
 6     android:background="#21292c">
 7 
 8     <TextView
 9         android:id="@+id/textView1"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:text="微信"
13         android:textColor="#ffffff"
14         android:textSize="20sp"
15         android:layout_gravity="center" 
16         android:padding="10dp"/>
17 
18     <TextView
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:layout_weight="1" />
22 
23     <LinearLayout
24         android:layout_width="wrap_content"
25         android:layout_height="match_parent" 
26         android:gravity="center">
27 
28         <ImageView
29             android:id="@+id/imageView2"
30             android:layout_width="40dp"
31             android:layout_height="30dp"
32             android:src="@drawable/actionbar_search_icon" 
33             android:layout_marginRight="10dp"/>
34 
35         <ImageView
36             android:id="@+id/imageView1"
37             android:layout_width="40dp"
38             android:layout_height="30dp"
39             android:src="@drawable/actionbar_add_icon" />
40         
41     </LinearLayout>
42 
43 </LinearLayout>

2.bottom.xml

  

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="horizontal" >
 6 
 7     <RadioGroup
 8         android:id="@+id/radioGroup1"
 9         android:layout_width="match_parent"
10         android:layout_height="50dp" 
11         padding
12         android:orientation="horizontal"
13         android:background="@drawable/back"
14         android:gravity="center">
15 
16         <RadioButton
17             android:id="@+id/radio0"
18             android:layout_width="wrap_content"
19             android:layout_height="wrap_content"
20             android:checked="true"
21             android:text="@string/wx" 
22                style="@style/radioStyle"
23                android:drawableTop="@drawable/tab_wx"/>    注:在后面有介绍到
24 
25         <RadioButton
26             android:id="@+id/radio1"
27             style="@style/radioStyle"
28             android:layout_width="wrap_content"
29             android:layout_height="wrap_content"
30             android:drawableTop="@drawable/tab_lxr"
31             android:text="@string/lxr" />
32 
33         <RadioButton
34             android:id="@+id/radio2"
35             android:layout_width="wrap_content"
36             android:layout_height="wrap_content"
37             android:text="@string/fx" 
38                style="@style/radioStyle"
39                android:drawableTop="@drawable/tab_fx"/>
40         
41          <RadioButton
42             android:id="@+id/radio3"
43             android:layout_width="wrap_content"
44             android:layout_height="wrap_content"
45             android:text="@string/wo"
46                style="@style/radioStyle" 
47                android:drawableTop="@drawable/tab_wo"/>
48     </RadioGroup>
49 
50 </LinearLayout>

3.wx.xml

  

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6     <!-- head -->
 7     <LinearLayout
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content" >
10         <include layout="@layout/top"/>
11     </LinearLayout>
12     
13     <!-- 中间 -->
14     <LinearLayout
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content" 
17         android:layout_weight="1">
18     </LinearLayout>
19     
20     <!-- 底部 -->
21     <LinearLayout
22         android:layout_width="match_parent"
23         android:layout_height="wrap_content" >
24         <include layout="@layout/bottom"/>
25     </LinearLayout>
26 
27 </LinearLayout>

4.tab_wx.xml,tab_lxr.xml,tab_fx.xml,tab_wo.xml   和text_color.xml

  前面4个文件都差不多所以只展示一个(分别为底部那四个图片)

    

1 <?xml version="1.0" encoding="utf-8"?>
2 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
3      <item android:state_checked="true"
4         android:drawable="@drawable/wo1"></item>
5     <item 
6         android:drawable="@drawable/wo"></item>
7 
8 </selector>

text_color.xml

  

1 <?xml version="1.0" encoding="utf-8"?>
2 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
3     <item android:state_checked="true"
4         android:color="#07bb07"></item>
5     <item 
6         android:color="#999999"></item>
7 
8 </selector>

这个text 如何用的呢?

  找到values文件下的styles.xml加入下面代码

  

1  <style name="radioStyle">
2         <item name="android:button">@null</item>
3         <item name="android:layout_weight">1</item>
4         <item name="android:TextSize">15sp</item>
5         <item name="android:gravity">center</item>
6         <item name="android:textColor">@drawable/text_color</item>
7     </style>

整体效果图为

  

原文地址:https://www.cnblogs.com/mark0812/p/6097751.html