在scrollview 上滑固定某一控件(美团团购详情UI)文中介绍了怎么用touchlistener实现类似上滑停住的效果,但是这种方法存在一个明显的bug,就是在内容比较多的时候, 大部分人都是以滑动方式查看内容,而不是touch的方式,这就会导致最上面的滑块出现不及时,或者延后的现象,这里介绍一个全新的方法去实现类似效果,可以很好的解决以上问题.

目前在scrollview中没有onscrolllistener所以需要自己去实现,先复写一个scrollview:

package com.example.meituandemo;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.ScrollView;

public class MyScrollView extends ScrollView {

private OnScrollListener onScrollListener;

public MyScrollView(Context context) {

this(context, null);

}

public MyScrollView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public MyScrollView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

/**

* 设置滚动接口

* @param onScrollListener

*/

public void setOnScrollListener(OnScrollListener onScrollListener) {

this.onScrollListener = onScrollListener;

}

@Override

protected void onScrollChanged(int l, int t, int oldl, int oldt) {//滑动改变就会实时调用

super.onScrollChanged(l, t, oldl, oldt);

if(onScrollListener != null){

onScrollListener.onScroll(t);

}

}

/**

*

* 滚动的回调接口

*

*/

public interface OnScrollListener{

/**

* 回调方法, 返回MyScrollView滑动的Y方向距离

* @param scrollY

* 、

*/

public void onScroll(int scrollY);

}

}

然后就在mainactivity中调用:

package com.example.meituandemo;

import android.app.Activity;

import android.os.Bundle;

import android.view.ViewTreeObserver.OnGlobalLayoutListener;

import android.widget.LinearLayout;

import com.example.meituandemo.MyScrollView.OnScrollListener;

public class MainActivity extends Activity implements OnScrollListener{//注意继承的是自定义的listener

/**

* 自定义的MyScrollView

*/

private MyScrollView myScrollView;

/**

* 在MyScrollView里面的购买布局

*/

private LinearLayout mBuyLayout;

/**

* 位于顶部的购买布局

*/

private LinearLayout mTopBuyLayout;

@SuppressWarnings("deprecation")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

myScrollView = (MyScrollView) findViewById(R.id.scrollView);//你的scrollview

mBuyLayout = (LinearLayout) findViewById(R.id.buy);//滑动的购买布局

mTopBuyLayout = (LinearLayout) findViewById(R.id.top_buy_layout);//顶部出现的购买布局

myScrollView.setOnScrollListener(this);

//当布局的状态或者控件的可见性发生改变回调的接口

findViewById(R.id.parent_layout).getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

//

@Override

public void onGlobalLayout() {

//这一步很重要,使得上面的购买布局和下面的购买布局重合

onScroll(myScrollView.getScrollY());

}

});

}

@Override

public void onScroll(int scrollY) {//这个是回调接口调用函数,layout函数是view重绘的方法,作用就是当下面的购买布局还没有滑到顶部时,把两个布局绘制在一起,当下面的购买布局滑出屏幕 ,就把顶部的购买布局绘制在顶部不动,就实现类似效果。

int mBuyLayout2ParentTop = Math.max(scrollY, mBuyLayout.getTop());

mTopBuyLayout.layout(0, mBuyLayout2ParentTop, mTopBuyLayout.getWidth(), mBuyLayout2ParentTop + mTopBuyLayout.getHeight());

}

}

如有问题请留言,转载注明出处。

android 高仿美团,Android 仿美团、大众点评团购详情UI相关推荐

  1. android 高清图片,Android加载高清大图

    前两天在面试当中被问到有没有做过加载高清大图,当时确实没有做过,听面试官提到可以动态加载图片的显示区域.回来后在网上找到了一篇鸿洋大神的博文悔啊-_-!为什么早点没有看到.废话不多说代码如下: 一.B ...

  2. android高仿美团筛选控件,Android高仿美团首页分类按钮

    惯例,先上GIF 栗子.gif更新v1.1版本 2017-6-2 11:55:30 详见github 一.使用姿势 1.引入(使用Gradle或者Maven) 1)Gradleallprojects  ...

  3. Android 高仿美团外卖详情页

    目录 1.需求分析 2.具体实现 2.1效果展示 2.2布局分析 2.3代码分析 2.3.1自定义 CoordinatorLayout.Behavior 2.3.2自定义 RecyclerView.I ...

  4. Android:高仿百度外卖、美团、淘点点二级联动效果!

    美团,百度外卖的左右二级联动效果如下: 具体的效果建议打开手机软件玩玩. 分析 首先我们一起分析一下这个界面给我们要怎么去实现. 1.最上面的ToolBar不用多解释,比较简单. 2.下面三个界面切换 ...

  5. [Android精品源码] Android 仿美团网,探索ListView的A-Z字母排序功能实现选择城市

    Material Design中文版Code4APPPHP100UI4APP 开启辅助访问设为首页收藏本站快捷导航切换到宽版切换风格 石刚 | |我的 |签到打卡 |设置 |消息 |提醒(2) |退出 ...

  6. Android仿大众点评、美团筛选框

    最近公司再做新的项目其中有一个功能类似于大众点评或者美团的分类筛选,之前也在网上找过一些类似的东西,可是效果都跟我们想要的有一些差别,而且以前也弄过但是那时候很懒 都是直接一段代码写进去,最近发现复用 ...

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

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

  8. android 仿美团悬浮,类似美团悬浮框的效果

    具体代码: ublic class MainActivity extends Activity implements OnScrollListener{ /** * 自定义的MyScrollView ...

  9. android 高仿资源合集~~

    转载自:http://blog.csdn.net/luningj2me/article/details/38727525 Android 仿Mac的Dock :http://pan.baidu.com ...

最新文章

  1. Spring+hibernate+struts
  2. WPF自定义空心文字
  3. CVPR 2019 | 全新缺失图像数据插补框架—CollaGAN
  4. 【SpringBoot MQ 系列】RabbitListener 消费基本使用姿势介绍
  5. 试用版本重装系统才能用是怎么回事_电脑重装系统老是失败,到底是怎么回事?这种现象是第一次碰到!...
  6. html如何让相邻的部分边框消失,css border属性边框一半或者部分可见
  7. 《SEM长尾搜索营销策略解密》一一2.11 向传统行业致敬
  8. DNS解析异常问题排查
  9. matlab在c盘有缓存文件夹吗,win10如何清除C盘缓存文件-win10清除C盘缓存的方法 - 河东软件园...
  10. Android中网络优化
  11. 【Docker】Registry搭建私有仓库、证书认证、用户登录认证
  12. 单相串励电机和三相交流异步电机在高空作业平台中的应用
  13. python实现windows ie代理切换
  14. 亚马逊裁员9000人、OpenAI估值已达290亿美元、首例涉虚拟数字人侵权案
  15. java json日期_JSON日期到Java日期?
  16. 【附源码】计算机毕业设计JAVA智能导诊系统
  17. 电脑公司Windows7 Ghost 2010新年版
  18. 计算机c盘忽然多了几十g东西,c盘突然少了十几个g怎么办_c盘无缘无故少了十多个g处理方法-win7之家...
  19. 一口气——并查集及其在Kruskal算法的应用
  20. 斯阔谷冬奥会首次使用计算机,1960年第八届美国斯阔谷冬奥会

热门文章

  1. 蒋涛对话王成录:哪怕退休了我都想在中国把 HarmonyOS 做成
  2. 区块链与安全多方计算结合
  3. 系统集成项目管理工程师备考资料(口袋应试第二版)2
  4. 如何实现机器人自动拉微信群
  5. 工具类APP的生存之道
  6. 测试点赞功能。(抖音点赞,微信点赞)
  7. XTU数据结构(C语言版)
  8. 可能是最优雅的分割线实现方式CSS实现
  9. PYTHON学习笔记之(一)2020.08
  10. 需求分析挑战之旅(疯狂的订餐系统)(3)——背景-需要-需求规格