一:目标
设计一个app的门户框架,需要实现3-4个tab切换效果
在任一tab页中实现列表效果
二:技术说明
目标一需要的技术为:Activity、Xml、Fragment
Activity:Activity类是Android应用的关键组件,而Activity的启动和组合方式则是该平台应用模型的基本组成部分。在编程范式中,应用是通过main()方法启动的,而Android系统与此不同,它会调用与其生命周期特定阶段相对应的特定回调方法来启动Activity实例中的代码。
Xml:安卓开发中Xml文件和Java文件是一同存在的。我们可以把Java理解为创建对象和定义对象的方法,而Xml文件则是和使用者的可视化交互(即UI界面)。Xml包括了以下的交互功能:动画视频、图片(透明度、大小、位置)、布局、按钮、文字显示、主题、菜单等。
Fragment:Fragment是一种可以嵌入在Activity当中的UI片段,用来组建Activity界面的局部模块, 也可以说一个Actiivty界面可以由多个Fragment组成,其行为与Activity很相似,,有自己对应的布局(包含具体的View),,它有自己的生命周期,接收自己的输入事件,并且可以从运行中的activity中添加或移除
目标二需要使用Recycleview
Recycleview:RecycleView是Android开发中的一个视图组件,用于展示大量数据集合的列表或网格。它是ListView的升级版本,提供了更好的性能和灵活性。
三:代码解析
界面设计
主界面分为上中下三个部分,底部由4个tab页面组成,用4个fragment.xml以实现不同页面的切换。头部用top.xml一个文件完成对上方页面的设计,最后用一个activity_main.xml完成对各个布局文件的整合
top.xml
用 android:text设置文本内容,用 android:textColor设置文本颜色,android:gravity用来设置view中的内容相对于view本身的对齐方式,调整好文本区域和字体大小即可,代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="68dp"
android:layout_weight="1"
android:gravity="center"
android:shadowColor="#FFFFFF"
android:text="微信"
android:background="@color/black"
android:textColor="@color/white"
android:textSize="35dp" />
</LinearLayout>
预览效果
fragment.xml
其他页面与本页面类似,代码也类似
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragment1">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center"
android:gravity="center"
android:textSize="50dp"
android:text="这是聊天界面" />
</FrameLayout>
预览效果
选定一个页面实现列表效果
重新设计其中一个fragment.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app=