【Android Studio】开发——类微信APP界面设计
万民堂订餐APP,香菱,打钱。
一:效果实现图
项目结构如图:
二:视频效果展示
app效果展示
三:功能说明
在之前实验课的基础Fragment的使用方法上,增添了新的布局文件并完善了点击效果,点击后可跳转到新的Activity上,在首页点击板块可实现跳转到详情界面。并且在布局文件上引入了不同的滑动方式,列表中的每一行都对应不同的数据。
需要实现的功能:
(1)Activity(Fragment)之间的跳转
(2)数据的绑定
(3)recycleview的不同滑动效果
(4)详情页面的跳转
四:功能实现
(1)Fragment之间的转换
在底部设置四个点击区域,通过点击bottomlinearLayout实现页面的跳转。如下图所示:
代码实现:
(2)数据的绑定
存储数据:
往列表里面传入数据,首先创立数据源,在fragment.Java里创建llist进行数据存储。每一个map对象都是一个联系人,里面存储着数据和信息。
数据传入后进行连接,把数据导入需要用到Adapter绑定数据
Adapter里有一个Holder:
Adapter
的holder
类通常是在实现RecyclerView.Adapter
时使用的一个辅助内部类,它的主要作用是作为视图的容器,用于缓存和复用RecyclerView
中的视图,以提高滚动性能。以下是holder
类的一些核心功能和特点:
-
视图缓存:
holder
类通常包含对RecyclerView
条目中的所有子视图的引用(如TextView
、ImageView
等)。- 通过在
holder
类中保存这些视图的引用,可以在RecyclerView
滚动时避免重复查找视图,从而提高性能。
-
视图绑定:
- 在
RecyclerView.Adapter
的onBindViewHolder
方法中,holder
对象被用来将数据绑定到视图上。 - 通过
holder
类中的视图引用,可以直接设置数据,如holder.textView.setText(data.title)
。
- 在
-
视图复用:
- 当
RecyclerView
滚动并且某些条目离开屏幕时,它们的holder
对象会被缓存起来,而不是被销毁。 - 当新的条目进入屏幕时,可以重用这些
holder
对象,只需要更新数据即可,这样可以减少布局的重新创建和数据的重新绑定。
- 当
-
简化代码:
- 使用
holder
类可以减少在onBindViewHolder
方法中查找视图的次数,使代码更加简洁和易于维护。
- 使用
-
适配器通信:
holder
类可以作为适配器和视图之间的桥梁,传递事件(如点击事件)和数据。
-
自定义属性:
- 除了视图引用,
holder
类还可以包含其他自定义属性,这些属性可以用于存储与特定条目相关的临时数据。
- 除了视图引用,
此处用于绑定视图:
Adapter的omBindViewHolder:
onBindViewHolder
是 RecyclerView.Adapter
类中的一个方法,它的主要功能是将数据与 RecyclerView
中的每个条目(Item)关联起来。当你的 RecyclerView
滚动时,onBindViewHolder
会被调用来更新屏幕上可见的条目。
以下是 onBindViewHolder
方法的一些关键功能:
-
数据绑定:
onBindViewHolder
方法负责将适配器中的数据(通常是一个数据集)绑定到RecyclerView
的每个条目上。这是通过访问适配器中的数据,并使用holder
对象中的视图引用来更新视图内容实现的。
-
视图更新:
- 当
RecyclerView
滑动时,onBindViewHolder
会更新可见条目的视图,以反映数据的最新状态。这包括文本、图片、图标等视图元素的更新。
- 当
-
性能优化:
- 通过使用
holder
对象缓存视图引用,onBindViewHolder
可以避免在每次数据更新时都进行昂贵的视图查找操作,从而提高滚动性能。
- 通过使用
-
状态管理:
onBindViewHolder
可以处理条目的选中状态、激活状态等,例如,根据条目的选中状态改变条目的外观。
-
事件监听:
- 可以在
onBindViewHolder
中为条目设置点击监听器或其他事件监听器,并在事件发生时执行相应的操作。
- 可以在
-
动画和过渡:
onBindViewHolder
可以用于触发条目的入场或出场动画,增强用户体验。
(3)recycleView的不同滑动效果
在fragment1中设置recycleview即可
recyclerView1.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
//在这里设置网格,横向,水平布局类型
recyclerView2.setLayoutManager(new LinearLayoutManager(getContext()));
可根据需求自行调整
(4)详情页面的跳转
新增detail的Activity和layout界面为跳转后的界面
在Adapter里设置跳转:
可实现点击后跳转到详情界面:
详情页面内容可自行修改。
五:出现的问题
Q1:fragment_bottom控件中图片无法显示:
给出的解决方案:
- 检查 drawable 资源: 确保
drawable
目录下确实存在rfood01
、rfood02
、rfood03
和rfood04
这些资源文件,并且它们的命名是正确的。 - 检查
tools:srcCompat
属性:tools:srcCompat
是 Android Studio 在布局预览时使用的属性,它不会影响实际运行时的图片显示。确保你在实际设备或模拟器上运行应用时,图片资源能够被正确加载。 - 检查
android:scaleType
属性: 你设置了android:scaleType="centerCrop"
,这意味着图片会被缩放以填充ImageView
的边界,同时保持图片的宽高比,可能会裁剪图片的某些部分。确保这是你想要的效果。如果不是,你可以尝试其他scaleType
,比如fitCenter
(保持图片完整,居中显示)。 - 检查
android:layout_width
和android:layout_height
属性: 你为ImageView
设置了android:layout_width="wrap_content"
和android:layout_height="76dp"
(除了第三个和第四个是75dp)。如果你想要图片完全填充ImageView
,你应该设置android:layout_width="match_parent"
。 - 检查
LinearLayout
的android:weightSum
属性: 你设置了android:weightSum="4"
,这通常用于LinearLayout
中的layout_weight
属性,以分配子视图的相对大小。确保这个属性的值与你的实际需求相符,并且所有子视图的layout_weight
之和不超过这个值。 - 检查图片资源的尺寸: 如果图片资源的尺寸太小,可能在大屏幕上显示不清楚。确保你的图片资源适合不同屏幕尺寸和密度。
排查问题后仍未解决
Q2:fragment1的布局无法实现随着滑动适应屏幕
问题未解决。
六;总结与思考
【夹带私货真好玩】Android开发对于我来说是一种全新的体验,有了兴趣加持后更不觉得枯燥。在开发过程中遇到了很多问题,也一度想要放弃,但好在最后顺利完成,看到成果的一刻也是发自内心的开心。,通过一个一个困难的解决我也获得了成长。
七:源码地址
该项目已上传github,喜欢的话给我点点star吧。谢谢大家。
写在最后:
在你心里住着一个金光闪闪的你,那个人爱你,想要你赢,获胜,快乐。——马特.海格