高仿美团app,浮动layout滑动到顶部

仿美团详情滑动界面,并兼容NestedScroll嵌套 源码实例 仿美团详情滑动界面,并兼容NestedScroll嵌套 立即下载
原 高仿美团app,浮动layout滑动到顶部悬停效果
  • 发布时间: 2015/06/16 17:41 
  • 阅读: 1867 
  • 收藏: 29 
  • 点赞: 2 
  • 评论: 4

做了个类似美团app的一个效果

 

当一个浮动layout的滑动到顶部时,这个浮动layout就悬停下来,当屏幕往下滑动时,浮动layout也跟着往下移动。

       因此,我特意也写了一个:浮动layuot滑动到顶部悬停demo,下图:

(妈蛋上传图片不能超过200k,只能把图片阉割成这样,凑合着看吧)

 

 

 

原理
        好,看完效果图之后,我们来看一下这个效果的设计原理。
        首先,我们来看一张整体的设计图:

 

 

 

 

 

 

 

设计效果图是分为三个部分:顶部区域、浮动区域A、列表区域。
1.当屏幕往上面滑动的时候,互动区域A也跟着滑动;
2.当浮动区域A滑动到顶部的时候,浮动区域A停留在顶部(上右图);
3.当屏幕往下滑动的时候,浮动区域A也跟着往下滑动。
这是整个滑动的效果流程。

 

那么,这时问题来了。怎么能让浮动区域A停在顶部,而且不影响其他内容的滑动呢?


在这里我们可以写多一个和浮动区域A界面效果一模一样的浮动区域B。在布局的时候,先把浮动区域B的可见性设置为gone,即隐藏起来。当浮动区域A滑动到顶部的时候,就把浮动区域B的可见性设置为VISIBLE,即可见。这时浮动区域B会覆盖在整个屏幕的上面,即使整个屏幕在滑动的时候也不会影响浮动区域B的位置,那么看起来就好像浮动区域A是停留在顶部位置不动了,见下图。

 

 

(此时,设置浮动区域B的可见性为VISIBLE,即可见)

同理,当整个屏幕往下滑动的时候,再把浮动区域B的可见性设置为GONE,那么看起来的效果就好像浮动区域A又重新滑动起来了。

这个原理大家应该可以理解吧!

 

 

    实现过程
       说完原理之后,让我们来看看在代码里面是怎么实现这个过程的。
我们先看看布局文件activity_main.xml

 

 

<RelativeLayout 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=".MainActivity" >

    <com.jimstin.topfloatdemo.view.MyScrollView
        android:id="@+id/scroll_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView 
                android:id="@+id/image_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/pic01"/>
           <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:background="#f6e4c0">
                <TextView 
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:textSize="10pt"
                    android:text="可乐鸡翅  55元"
                    android:textColor="#e68b4e"/>
                <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="立即购买"
                    android:textColor="#ffffff"/>
            </LinearLayout>
            <ListView 
                android:id="@+id/list_view"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1">
                
            </ListView>
            
        </LinearLayout>
    </com.jimstin.topfloatdemo.view.MyScrollView>

    <LinearLayout 
         android:id="@+id/flow_llay"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         android:background="#f6e4c0"
         android:visibility="gone">
         <TextView 
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1"
              android:textSize="10pt"
              android:text="可乐鸡翅  55元"
              android:textColor="#e68b4e"/>
          <Button 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="立即购买"
              android:textColor="#ffffff"/>
     </LinearLayout>
</RelativeLayout>

 

 

布局文件效果

 

 

顶部的“可乐鸡翅”就是刚刚所说的浮动区域B,中间的“可乐鸡翅”则是浮动区域A,布局文件应该不难理解。
那么我们怎么知道何时隐藏、显示顶部的浮动layout呢?

 

 

由于整体的布局内容都是放在一个自定义的ScrollView里面。所以,只要我们在ScrollView里面判断:
      当Scrollview向上滑动的距离大于等于顶部区域的高度时,也就是浮动区域A的顶边贴到屏幕顶部的时候,这是将浮动区域B的可见性设置为VISIBLE即可,否则设置为GONE即可。
      这样就实现了我们想要的效果了。
关键代码:

 

@Override
        protected void onScrollChanged(int l, int t, int oldl, int oldt) {
                
                super.onScrollChanged(l, t, oldl, oldt);   //i滑动之后的x,t滑动之后的Y,后面两个都是滑动之前的
                if(mTopView != null) {
                        if(t >= mTopView.getHeight()) {
                                mFlowView.setVisibility(View.VISIBLE);
                        } else {
                                mFlowView.setVisibility(View.GONE);
                        }
                }
        }

 

代码的意思是,当ScrollView向上滚动的高度大于等于mTopView顶部区域的高度时,那么就将mFlowView浮动layout的可见性设置为VISIBLE,否则设置为GONE。
那么这个判读是在哪里的呢?

 

 


其实这个方法是在自定义的ScrollView里面的,可能这里就有人疑问,为什么要自定义ScrollView?因为onScrollChange方法是一个protected的方法,直接使用ScrollView是使用不了该方法的。

Android仿美团外卖菜单界面 主要为大家详细介绍了Android仿美团外卖菜单界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 立即下载

相关推荐

你的Wi-Fi总断网?可能是DHCP租约到期惹的祸!手把手教你用Windows/路由器设置永久IP或延长租期

本文深入解析家庭Wi-Fi频繁断网的常见原因——DHCP租约到期问题,并提供Windows和路由器设置永久IP或延长租期的详细教程。通过对比静态IP配置与延长租期两种方案,帮助用户有效解决网络不稳定问题,特别适合游戏玩家和远程工作者优化家庭网络环境。

weixin_29305313的博客 1408

微信小程序模仿高德地图向上拖动展开向下拖动收起效果(包含判断向哪个方向滑动)

【代码】微信小程序模仿高德地图向上拖动展开向下拖动收起效果(包含判断向哪个方向滑动)

文龙刚的博客 2214

AI 编程组合之deepseek+vscode+cline插件,使用deepseek大模型实现代码自动生成

本文介绍了VSCODE下cline插件的安装结合DeepSeek-V3,ai编程的组合套件,举了两个例子一个是生成登录页面,一个是生成贪吃蛇游戏

技术博客 7万+

仿高德地图首页效果,简单代码实现

2021/11/10日高德的首页效果是这样的 然后我的效果 关键代码 behavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { override fun onStateChanged(bottomSheet: View, newState: Int) { //3 STATE_EXPANDED 4 STATE_COLLAPSED 5 S

Big_Sweet 1873

OpenWrt路由开启DDNS+端口转发进行外网访问

OpenWrt路由开启DDNS+端口转发进行外网访问(LuCI界面实现)--开篇一、准备工作二、开机!三、连接--结尾 –开篇 本篇适用于一切装有OpenWrt系统的路由器/软路由,只要你保证有WAN接口和一个光猫,甚至你不需要有LAN接口(当然前提是你能连接路由器的WIFI进后台,不然你只能通过LAN进后台咯)。所有的配置过程都是基于LuCI界面来的,当然大神们一般都通过SSH登陆路由使用命令配置,但我也不会啊,只能给个有GUI界面的教程了。 一、准备工作 一个装有OpenWrt系统的路由器/软路由并

秋之颂的博客 9万+

基于 STM32 的校园电动车充电桩智能计费与过载保护系统设计与实现

本系统基于 STM32F103 主控,通过 HLW8032 电能计量芯片实现精准计费,配合继电器实现过载保护,RC522 模块完成刷卡身份识别,整体方案成本低、可靠性高,适合校园电动车集中充电场景的批量部署。软件采用状态机设计,逻辑清晰,可扩展多路充电口、远程监控等功能。

weixin_42300449的博客 56

高仿美团app,浮动layout滑动到顶部悬停效果

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34252686的博客 273

【Matlab】飞行器气动弹性仿真与分析

气动弹性是飞行器设计领域的核心交叉学科,融合了空气动力学、结构动力学和控制理论,主要研究飞行器结构在气动力作用下的弹性变形、振动响应及相互耦合规律,直接影响飞行器的飞行稳定性、操纵性和结构安全性。随着飞行器向高速度、高机动性、轻量化方向发展,气动弹性问题愈发突出,如颤振、发散、嗡鸣等现象,严重时会导致飞行器结构破坏甚至飞行事故,因此气动弹性仿真与分析已成为飞行器设计、验证和优化的关键环节。当前,飞行器气动弹性仿真面临诸多技术挑战:气动力与结构变形的强耦合特性难以精准描述,易出现仿真误差;

unber的博客 233

Android滑动到顶部悬停

无图说卵,先上图 jianshu-top.gif 查阅资料后,发现网上大部分都是用这种方法实现的: 多写一个和需要悬浮的部分一模一样的layout,先把浮动区域的可见性设置为gone。当浮动区域滑动到顶部的时候,就把浮动区域B的可见性设置为VISIBLE。这样看起来就像悬浮在顶部不动了。 具体看下边文章 : 高仿美团app,浮动layout滑动到顶部悬停效果 Android实例-仿美团app,浮...

weixin_33762321的博客 207

【Mode】多模干涉仪的设计 Multi-mode interferometer(MMI)

与 Splitter 器件一样,MMI 器件也是一种常见的分光器件,可以根据用户的需求将光束分成不同的比例。本文,我们将介绍如何仿真 MMI 器件。这里我们使用的是 1x2 MMI,其本质上是由四个部分组成的,中间的矩形多模式干涉区域以及左右两侧的三个 taper 模式转换区域。之前的教程中我们也提及了,为了获取稳定的模式场分布,通常,我们需要进行模式收敛性扫描。这里以官网给出的案例为例。如何提取 S 参数我们先暂时不做介绍,后续有时间了我们再做介绍。

u011699626的博客 1212

手把手教你在飞牛 NAS 上部署自有图床,含Python调用接口

📸 想在飞牛 NAS 上部署图床?这篇教程超适合小白!从安装到使用,步骤清晰~

XiaoqiangClub的博客 2344

Android Studio初学者实例:Fragment学习--仿美团外卖界面

本次课程为Fragment为主题,课程的示例仿美团外卖界面,不同于底部导航栏的Fragment案例,此界面分为左侧切换与顶部切换。本文先是发布代码与效果,后续讲解将会在后续补充。两个Fragment布局代码。

林大大的博客 1万+

辐射制冷无规散射结构非球形散射体的结构优化与设计准则

本文针对辐射制冷材料中非球形散射体的光散射特性开展研究,提出了一种基于体积散射截面和不对称因子的综合评价方法。通过建立简化模型分析球体、圆柱体、长方体等六种几何形状在太阳波段的散射性能,发现金字塔形和圆锥形具有更强的后向散射能力。研究创新性地提出"反射因子SR=S(1-g)"这一评价参数,该参数与宏观反射率高度相关,为非球形散射体的优化设计提供了定量依据。仿真结果表明,合理选择散射体形状可显著提升辐射制冷材料的太阳反射率,为实现高效被动制冷提供了新的结构设计思路。

huanghm88的专栏 77

(4)程序活动单元Activity

文章目录4.1 Activity生命周期4.1.1 生命周期状态4.1.2 生命周期方法4.2 Activity的创建,配置,启动和关闭启动Activity关闭Activity4.3 Intent与IntentFilter4.3.1 Intent显式Intent隐式Intent4.3.2 IntentFilteraction匹配规则data匹配规则category属性匹配规则4.4 Activity之间的跳转4.4.1 Activity之间的数据传递4.4.2 Activity中的数据回传startActi

qq_31230999的博客 1809

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

视频教程-Web前端开发仿美团/饿了吗移动App之高德地图接口对接案例-JavaScript

Web前端开发仿美团/饿了吗移动App之高德地图接口对接案例 互联网编程行业...

weixin_34873701的博客 662

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

vue上下滑动(仿高德)

【代码】vue上下滑动(仿高德)

m0_53912016的博客 2330

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上下滑弹框(仿高德)

上下滑弹框(仿高德)

Zt0118的博客 1733

前端简单实现类似于百度地图、高德地图、腾讯地图弹窗效果

前端简单实现类似于百度地图、高德地图、腾讯地图弹窗效果 在日常的开发当中,我们时长会遇到一些特殊需求,比如一个自定义的地图弹窗效果,使用自定义的背景图片等等,这样的需求我们该怎么做? 首先我们需要想想,做一个地图弹窗需要那些前端知识? 所需知识如下: JavaScript的函数方法 JavaScript的for循环方法(注意使用let) jQuery的position()方法(自动获取弹窗位置)...

Agent、AI应用、全栈技术领域探索者,分享实用干货与实战经验。 2607

android顶部横向滑动导航栏,Android模仿美团顶部的滑动菜单实例代码

前言本文主要给大家介绍了关于Android模仿美团顶部滑动菜单的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。先来看下效果图:实现方法这是通过 ViewPager 和 GridView 相结合做出来的效果,每一个 ViewPager 页面都是一个 GridView,底部的每个滑动指示圆点都是从布局文件中 inflate 出来的首先需要一个代表每个活动主题的 JavaBe...

weixin_28904519的博客 687

基于Android的仿美团外卖系统设计与实现 文档+源码+视频

摘要: 本项目基于Android平台开发了一个仿美团外卖系统,主要实现了店铺浏览、菜单展示、购物车管理、订单处理与支付等核心功能。系统采用Android Studio开发,使用Glide、OkHttp等第三方库,通过MD5加密用户信息,利用SharePreference实现本地存储。界面设计包含轮播广告、店铺列表、菜品详情等模块,完整模拟了外卖订购流程。开发过程中解决了AVD黑屏、HAXM安装、资源加载等典型问题,最终实现了一个功能完备的在线订餐系统,达到了巩固Android开发基础技能的目的。 关键词:A

毕业作品网站 2万+

android美团点餐界面,Android 仿美团点餐页面布局介绍

该楼层疑似违规已被系统折叠隐藏此楼查看此楼1部分:a.顶部是一个轮播,首先需要在build.gradle导入依赖implementation'com.youth.banner:banner:1.4.9'使用标签b.商品和评价那使用选项卡属性android:layout_width="match_parent"android:layout_height="36dp"android:orientat...

weixin_34443284的博客 3189

仿高德地图上拉【建议收藏小程序app适配】

仿高德地图上拉,地图显示用户头像,app 小程序适配,建议收藏

科技是唯一动力,干就完了 1168

vue + uniapp 实现仿百度地图/高德地图/美团/支付宝 滑动面板 纯css 实现

使用百度地图、各种单车APP时,对地图上的滑动面板很感兴趣,于是根据自己的理解实现了一下。之前用的js实现,滑动的时候没有原生好。这一次用的css实现。

weixin_44185995的博客 1077

android简单仿美团外卖菜单

由于仿美团外卖菜单的界面中需要显示推荐菜单列表与进店必买菜单列表信息,所以我们需要在MminActivity 中定义 init()方法、setData()方法、clickEvent()方法和switchData()方法,这些方法分别用于初始化界面控件、设置界面数据、实现界面控件的点击事件和切换右侧菜单列表的数据。其中,顶部的导航栏中包含“点菜”“评价”“商家”和“好友拼单”文本信息,左侧的菜单栏中包含“推荐”和“进店必买”文本信息,右侧的菜单列表中包含菜品名称、菜品月售信息和菜品价格等信息。

Miaolihong1的博客 5878
上一篇: EditText所有属性
下一篇: 几种常见Dialog,直接拿去用!
rongbinjava
博客等级 码龄11年 15粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值