美团外卖下拉刷新效果实现方法,我们的下拉刷新的效果是在android-Ultra-Pull-To-Refresh框架上做的扩展,这是一款非常强大的下拉刷新框架,有着默认的下拉刷新动画,当然如果我们要实现一些复杂的效果就需要我们自己动手了。android-Ultra-Pull-To-Refresh是支持修改下拉刷新头部布局的。

我们经常看到有一些app有着炫酷的下拉刷新动画,比如美团外卖是骑着电车的袋鼠飞驰在路上,如下图:

美团外卖下拉刷新

我们的下拉刷新的效果是在android-Ultra-Pull-To-Refresh框架上做的扩展,这是一款非常强大的下拉刷新框架,有着默认的下拉刷新动画,当然如果我们要实现一些复杂的效果就需要我们自己动手了。android-Ultra-Pull-To-Refresh是支持修改下拉刷新头部布局的。

首先我们自定义一个view继承FrameLayout并实现PtrUIHandler接口,在构造方法中加载需要的布局文件,

public MeituanRefreshHeader(Context context, AttributeSet attrs) { super(context, attrs); initView(); } private void initView() { View view = LayoutInflater.from(getContext()).inflate(R.layout.meituanptr_head, null); ptrHead = (ImageView) view.findViewById(R.id.ptr_iv); addView(view); }

PtrUIHandler接口的作用就是提供下拉过程中每部分所调用的方法,我们只需要在这些回调的方法中实现自己的效果就可以了。这里我们主要用到的有:

onUIRefreshPrepare

onUIRefreshBegin

onUIRefreshComplete

onUIPositionChange

四个方法。

这里比较重要的是onUIPositionChange这个方法,在这个方法中我们可以获取到下拉刷新的比例,然后对控件进行缩放,

public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) { switch (state) { case JdRefreshHeader.STATE_PREPARE: if (ptrIndicator.getCurrentPercent() < 1.0f) { ptrHead.setScaleX(ptrIndicator.getCurrentPercent()); ptrHead.setScaleY(ptrIndicator.getCurrentPercent()); } break; } }

在我们松开手之后会调用onUIRefreshBegin方法,这时候只是一张图片就不行了,需要我们将控件背景修改成一幅动态的画面

@Override public void onUIRefreshBegin(PtrFrameLayout frame) { state = JdRefreshHeader.STATE_BEGIN; ptrHead.setBackgroundResource(R.drawable.meituan_head); drawable = (AnimationDrawable) ptrHead.getBackground(); if (!drawable.isRunning()) { drawable.start(); } }

当然这里的背景是由animation-list实现的,这里不再多说,在完成之后会调用onUIRefreshComplete,我们需要将动画停止并换到之前的图片:

@Override public void onUIRefreshComplete(PtrFrameLayout frame, boolean isHeader) { if (drawable != null && drawable.isRunning()) { drawable.stop(); } ptrHead.setBackgroundResource(R.mipmap.a5n); }

最后我们自定义类继承PtrClassicFrameLayout,并在构造方法中添加布局和监听:

public JdRefreshLayout(Context context, AttributeSet attrs) { super(context, attrs); initView(); } /** * 初始化view */ private void initView() { MeituanRefreshHeader mHeaderView = new MeituanRefreshHeader(getContext()); setHeaderView(mHeaderView); addPtrUIHandler(mHeaderView); setResistance(3); }

ok,我们看一下效果:

效果图

美团外卖下拉刷新

仔细对比一下就会发现我们现在做的并没有下图的效果好,因为下图是从下拉开始就可以看到袋鼠在一点一点的放大,而上图确是下拉到一定程度之后才能看到袋鼠的下半身,这又是什么原因造成的呢?

首先我们要知道下拉刷新的头布局是有一定高度的,当我们下拉的时候,头布局的底部先出来,而在下拉刷新刚开始的时候,头布局的控件会缩放的非常小,而setScaleX方法默认是以控件的中心缩放的,所以在下拉的时候控件会以中心逐渐放大,所以会像上图一样慢慢看到袋鼠的全部。那么怎样才能像下图一样从一开始就可以看到袋鼠的全部呢,刚才我们说了,安卓中setScaleX默认是以控件的中心缩放的,我们完全可以将他的中心点修改成最底部并且水平居中,这样一来在下拉的时候袋鼠就会从底部向上开始放大,于是就有了下图的效果:

if (ptrIndicator.getCurrentPercent() < 1.0f) { ptrHead.setPivotX(ptrHead.getWidth() / 2); ptrHead.setPivotY(ptrHead.getHeight()); ptrHead.setScaleX(ptrIndicator.getCurrentPercent()); ptrHead.setScaleY(ptrIndicator.getCurrentPercent()); }

需要注意的是setPivotX的参数是以像素为单位的,到这里就大功告成了。

以上就是对于安卓开发方面的知识点简介,美团外卖下拉刷新效果实现方法,更多相关内容请继续关注拓胜科技安卓技术频道,或者需要了解拓胜安卓培训方面的问题,可以在线免费咨询拓胜教育老师。

android 美团下拉刷新,美团外卖下拉刷新效果实现方法相关推荐

  1. Android Studio 复制粘贴图片到drawable文件夹没有效果 - 解决方法

    我想放一些图片到drawable文件夹里面,但是简单的复制文件,粘贴文件,或者拖拽文件,都不起作用.不知道为什么,之前是可以的,突然就不行了. 解决方案 在drawable文件夹的目录上右键,选择Re ...

  2. android 电影筛选,自己造轮子--android常用多条件筛选菜单实现思路(类似美团,爱奇艺电影票下拉菜单),--android电影票,选择实现方式若是看到第一...

    自己造轮子--android常用多条件筛选菜单实现思路(类似美团,爱奇艺电影票下拉菜单),--android电影票,选择实现方式若是看到第一 就在昨天,我的一个项目DropDownMenu被daima ...

  3. DOM 案例——(美团外卖下拉框菜单、半透明——信息滑入、模态窗口拖拽效果、放大镜效果、滚动条滑到一定位置的固定导航栏、12306购票网站多级联动、斗鱼TV无规则弹幕特效、百度搜索条动态输入下拉瀑布)

    目录 1.缓动动画--美团外卖下拉框菜单 2.半透明--信息滑入 3.模态窗口拖拽效果 4.放大镜效果 5.滚动条滑到一定位置的固定导航栏 6.12306购票网站多级联动 7.斗鱼TV无规则弹幕特效 ...

  4. Android自定义下拉刷新动画--仿百度外卖下拉刷新

    好久没写博客了,小编之前一段时间一直在找工作,从天津来到了我们的大帝都,感觉还不错.好了废话不多说了,开始我们今天的主题吧.现如今的APP各式各样,同样也带来了各种需求,一个下拉刷新都能玩出花样了,前 ...

  5. android 美团商家详情页,Android仿美团团购详情页下拉图片放大效果,简单可直接用在项目中...

    一:介绍 大家在项目中,可能需要像美团团购详情页面下拉的时候美食图片放大的效果,在这里就给大家介绍如何实现这种效果,只有很少的代码,而且控件全部是安卓源生控件. 二:运行效果图 三.然后来看看如何实现 ...

  6. SwipeToLoadLayout布局中添加自定义控件仿美团、饿了吗等下拉效果

    SwipeToLoadLayout是一个可重用的下拉刷新和上拉加载控件,理论上支持各种View和ViewGroup(ListView,ScrollView,RecyclerView,GridView, ...

  7. 美团、点评、猫眼App下拉加载效果的源码分享

    今天我准备拿大众点评.美团.猫眼电影三款App的实例来分享一下APICloud下拉加载这个模块的效果. 美团App下拉加载效果 以美团中的下拉酷似动画的萌萌着小人儿效果作为参考,来实现的一个加载模块. ...

  8. Android自定义控制(五)仿新浪微博的下拉刷新

    网上有很多很有名的开源框架,这里就来拉拉PullToRefresh这个框架,也就是我们平时用的下拉刷新啦,当然你问我这个有什么用啊?别人已经写好了,这里主要是学习以及练习,练习的次数多了,一切就顺其自 ...

  9. Android新控件RecyclerView浅析及上拉和下拉刷新

    概述: RecyclerView是android-support-v7-21版本中新增的一个Widgets,RecyclerView是ListView的升级版本,更加先进和灵活.在以后的开发中我们就可 ...

最新文章

  1. 简单入门循环神经网络RNN:时间序列数据的首选神经网络
  2. concurrenthashmap_ConcurrentHashMap实现原理及源码分析
  3. 有关完全二叉树求节点数和前缀树求字符串是否重复的两道算法题
  4. 关于分布式系统的数据一致性问题(三)
  5. curl 访问不到html_嵌入式工程师入门前后端系列1:访问一个网页
  6. ORA-01791: 不是 SELECTed 表达式
  7. 跨行成为程序员的 15 个实用技巧!
  8. 查看Office365迁移任务进度状态
  9. winform 图片压缩大小为原图的一半_SCI论文图片编辑——常见十问十答
  10. OpenCV --- 实现两幅图像并排合并(ROI)
  11. MySQL-第十二篇管理结果集
  12. 计算机英文字符点阵矩阵显示,点阵字库
  13. 2022恒生电子前端笔试
  14. 平方符号在python中的作用_python平方符号
  15. oracle12c 兼容,12c(oracle12c兼容11g吗)
  16. 免费配音软件有哪些?推荐两款好用的配音软件
  17. #智能制造#第一章 智能制造,缘何而起?
  18. 修改VMware虚拟机IP地址为指定IP
  19. 加速客户的云计算之旅——亚马逊云科技日立解决方案
  20. 属性加密(ABE)基础知识

热门文章

  1. 微信小程序 网上药店管理系统Android hbuilderx App毕业设计
  2. 淘宝子账号最新设置教程-2022年1月5日
  3. c语言计算矩阵的加法和乘法,C语言矩阵加法乘法
  4. html获得剪切板数据,JS 获取chrome剪切板数据
  5. jQuery系列 第三章 jQuery框架操作CSS
  6. Android 蓝牙hfp协议连接slc连接rfcomm连接源码分析(2)- HF侧发送和接受数据流程
  7. 学报格式和论文格式一样吗_(学报论文格式.doc
  8. 功能齐全的网址导航源码附带交易系统
  9. SketchUp:SketchUp草图大师经典案例之利用推拉工具实现对齐高度图文教程
  10. gitlab CI/CD自动化部署