【Android Studio】开发——类微信APP界面设计

【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:

Adapterholder类通常是在实现RecyclerView.Adapter时使用的一个辅助内部类,它的主要作用是作为视图的容器,用于缓存和复用RecyclerView中的视图,以提高滚动性能。以下是holder类的一些核心功能和特点:

  1. 视图缓存

    • holder类通常包含对RecyclerView条目中的所有子视图的引用(如TextViewImageView等)。
    • 通过在holder类中保存这些视图的引用,可以在RecyclerView滚动时避免重复查找视图,从而提高性能。
  2. 视图绑定

    • RecyclerView.AdapteronBindViewHolder方法中,holder对象被用来将数据绑定到视图上。
    • 通过holder类中的视图引用,可以直接设置数据,如holder.textView.setText(data.title)
  3. 视图复用

    • RecyclerView滚动并且某些条目离开屏幕时,它们的holder对象会被缓存起来,而不是被销毁。
    • 当新的条目进入屏幕时,可以重用这些holder对象,只需要更新数据即可,这样可以减少布局的重新创建和数据的重新绑定。
  4. 简化代码

    • 使用holder类可以减少在onBindViewHolder方法中查找视图的次数,使代码更加简洁和易于维护。
  5. 适配器通信

    • holder类可以作为适配器和视图之间的桥梁,传递事件(如点击事件)和数据。
  6. 自定义属性

    • 除了视图引用,holder类还可以包含其他自定义属性,这些属性可以用于存储与特定条目相关的临时数据。

此处用于绑定视图:
在这里插入图片描述

Adapter的omBindViewHolder:

onBindViewHolderRecyclerView.Adapter 类中的一个方法,它的主要功能是将数据与 RecyclerView 中的每个条目(Item)关联起来。当你的 RecyclerView 滚动时,onBindViewHolder 会被调用来更新屏幕上可见的条目。

以下是 onBindViewHolder 方法的一些关键功能:

  1. 数据绑定

    • onBindViewHolder 方法负责将适配器中的数据(通常是一个数据集)绑定到 RecyclerView 的每个条目上。这是通过访问适配器中的数据,并使用 holder 对象中的视图引用来更新视图内容实现的。
  2. 视图更新

    • RecyclerView 滑动时,onBindViewHolder 会更新可见条目的视图,以反映数据的最新状态。这包括文本、图片、图标等视图元素的更新。
  3. 性能优化

    • 通过使用 holder 对象缓存视图引用,onBindViewHolder 可以避免在每次数据更新时都进行昂贵的视图查找操作,从而提高滚动性能。
  4. 状态管理

    • onBindViewHolder 可以处理条目的选中状态、激活状态等,例如,根据条目的选中状态改变条目的外观。
  5. 事件监听

    • 可以在 onBindViewHolder 中为条目设置点击监听器或其他事件监听器,并在事件发生时执行相应的操作。
  6. 动画和过渡

    • 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控件中图片无法显示:

在这里插入图片描述

给出的解决方案:

  1. 检查 drawable 资源: 确保 drawable 目录下确实存在 rfood01rfood02rfood03rfood04 这些资源文件,并且它们的命名是正确的。
  2. 检查 tools:srcCompat 属性tools:srcCompat 是 Android Studio 在布局预览时使用的属性,它不会影响实际运行时的图片显示。确保你在实际设备或模拟器上运行应用时,图片资源能够被正确加载。
  3. 检查 android:scaleType 属性: 你设置了 android:scaleType="centerCrop",这意味着图片会被缩放以填充 ImageView 的边界,同时保持图片的宽高比,可能会裁剪图片的某些部分。确保这是你想要的效果。如果不是,你可以尝试其他 scaleType,比如 fitCenter(保持图片完整,居中显示)。
  4. 检查 android:layout_widthandroid:layout_height 属性: 你为 ImageView 设置了 android:layout_width="wrap_content"android:layout_height="76dp"(除了第三个和第四个是75dp)。如果你想要图片完全填充 ImageView,你应该设置 android:layout_width="match_parent"
  5. 检查 LinearLayoutandroid:weightSum 属性: 你设置了 android:weightSum="4",这通常用于 LinearLayout 中的 layout_weight 属性,以分配子视图的相对大小。确保这个属性的值与你的实际需求相符,并且所有子视图的 layout_weight 之和不超过这个值。
  6. 检查图片资源的尺寸: 如果图片资源的尺寸太小,可能在大屏幕上显示不清楚。确保你的图片资源适合不同屏幕尺寸和密度。

排查问题后仍未解决

Q2:fragment1的布局无法实现随着滑动适应屏幕

在这里插入图片描述

问题未解决。

六;总结与思考

【夹带私货真好玩】Android开发对于我来说是一种全新的体验,有了兴趣加持后更不觉得枯燥。在开发过程中遇到了很多问题,也一度想要放弃,但好在最后顺利完成,看到成果的一刻也是发自内心的开心。,通过一个一个困难的解决我也获得了成长。

七:源码地址

该项目已上传github,喜欢的话给我点点star吧。谢谢大家。

源码地址

写在最后:

在你心里住着一个金光闪闪的你,那个人爱你,想要你赢,获胜,快乐。——马特.海格

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值