一个滑动悬浮置顶的View,通过自定义ScrollView来实现一个精美的固定悬浮效果

效果图:

这个特效其实没有那么复杂!

思路:

自定义ListView对头布局进行处理

自定义 RecycleView 貌似很复杂的样子

自定义Behavior 把问题复杂化了

自定义listView + PopuWindows

自定义ViewGroup ,(需要重新onLayout登方法)

自定义Scrollview,对View进行处理

思来考去,其实我们写View的时候以少量的代码打造轮子才是精髓。于是对scrollView进行处理。明显的简单方面!!!

通过广告栏的高度H和view中Y方向锁滑动的距离Y进行比较,从而对view进行处理

关键代码:

重写onTouchEvent获取滑动的距离

/**

* 重写onTouchEvent, 当用户的手在HoveringScrollview上面的时候,

*/

public boolean onTouchEvent(MotionEvent ev) {

//直接将HoveringScrollview滑动的Y方向距离回调给onScroll方法中

if (onScrollListener != null) {

onScrollListener.onMyScroll(lastScrollY = this.getScrollY());

}

switch (ev.getAction()) {

//当用户抬起手的时候, HoveringScrollview可能还在滑动,

// 所以当用户抬起手我们隔6毫秒给handler发送消息,

// 在handler处理 HoveringScrollview滑动的距离

case MotionEvent.ACTION_UP:

handler.sendMessageDelayed(handler.obtainMessage(), 20);

break;

}

return super.onTouchEvent(ev);

};

需要在Handler里面进行

/**

* 用于用户手指离开MyScrollView的时候获取MyScrollView滚动的Y距离,然后回调给onScroll方法中

*/

private Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) {

int scrollY = HoveringScrollview.this.getScrollY();

// 此时的距离和记录下的距离不相等,在隔6毫秒给handler发送消息?

if (lastScrollY != scrollY) {

lastScrollY = scrollY;

handler.sendMessageDelayed(handler.obtainMessage(), 6);

}

if (onScrollListener != null) {

onScrollListener.onMyScroll(scrollY);

}

};

};

重要的在监听回调里面做一些操作:

@Override

public void onMyScroll(int scrollY) {

LogUtils.e("yuyahao","scrollY: " +scrollY);

// TODO Auto-generated method stub

if (scrollY >= searchLayoutTop) {

if (hoveringLayout.getParent() != search01) {

search02.removeView(hoveringLayout);

search01.addView(hoveringLayout);

}

} else {

if (hoveringLayout.getParent() != search02) {

search01.removeView(hoveringLayout);

search02.addView(hoveringLayout);

}

}

}

当广告栏的高亮 大于手指所华东的高度的时候,所指定固定悬浮的View在他本身父布局的View中,否则指定一个顶部的父容器添加在里面即可。

关于更多

android 广告栏效果,叫教你打造一个滑动悬浮置顶的视觉效果,给你的广告栏增加一些特色...相关推荐

  1. android 自定义心电图,手把手教你打造一个心电图效果View Android自定义View

    大家好,看我像不像蘑菇-因为我在学校呆的发霉了. 思而不学则殆 丽丽说得对,我有奇怪的疑问,大都是思而不学造成的,在我书读不够的情况下想太多,大多等于白想 ,所以革命没成功,同志仍需努力. 好了废话不 ...

  2. android 自定义心电图,手把手教你打造一个心电图效果View Android自定义View(示例代码)...

    大家好,看我像不像蘑菇-因为我在学校呆的发霉了. 思而不学则殆 丽丽说得对,我有奇怪的疑问,大都是思而不学造成的,在我书读不够的情况下想太多,大多等于白想 ,所以革命没成功,同志仍需努力. 好了废话不 ...

  3. android 复用标题栏,Android基础---使用ToolBar教你打造一个通用的标题栏

    现在项目中一般都会使用标题栏,谷歌在2014年推出了新的app bar---ToolBar,代替了以前使用的ActionBar.在做项目中会经常用到这个ToolBar,虽然用的很多,但是自己对它如何用 ...

  4. android 置顶窗口位置,Android 滑动悬浮置顶指南

    我自己的xml代码,加上一些理解后的注释 xmlns:tools="http://schemas.android.com/tools" xmlns:app="http:/ ...

  5. 单独组件_阿里P8年薪百万大牛-教你打造一个Android组件化开发框架

    作者简介 本篇来自 lucky_billy 的投稿,分享了他的开源组件化框架,详细地讲解框架形成的思路,希望对大家有所帮助. lucky_billy 的博客地址: http://blog.csdn.n ...

  6. Android RecyclerView滑动标题置顶

    实现先来看看效果图(由于不会制作gif图所以) 如上图 左边可以点击切换到该标题的子item  右边可以通过滑动更换置顶标题 步骤开始: 一: 导入第三方 implementation 'com.ku ...

  7. 教你打造一个网红店之用户篇

    我们对网红店的印象是什么呢?人.从.众,自从喜茶因为"排队"这个标签火了后,人多几乎是网红店的标配了,也就是衡量一个店面是否是网红店,首条标准就是是否人多. 像限量.稀有.特色.名 ...

  8. 来教你打造一个私人网盘。至于做什么用,就别多问啦

    虽然打造私人网盘的目的很不好意思说出来,但是一想到以后存一些东西再也不怕莫名其妙地蒸发掉了,就开心的睡不着啊. 好嘞,回到咱们今天的主题:如何打造一个私人专属网盘?本教程将使用React & ...

  9. 手把手教你打造一个排队叫号系统

    点击上方"业余草",选择"置顶公众号" 第一时间获取技术干货和业界资讯! 排队叫号系统在生活中处处可见,但是就这么一个系统,让你写你还不一定能完整的实现出来. ...

最新文章

  1. pytorch什么要设计ModuleList
  2. Typescript在Vue项目中的使用
  3. [转] 使用nginx sticky实现基于cookie的负载均衡
  4. 如何将你拍摄的照片转换成全景图及六面体(PTGui)
  5. java怎样自动调用鼠标点击屏幕固定地方_python办公自动化:让PyAutoGUI来帮你干活...
  6. Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression Regularization
  7. python工资一般多少p-大神级Python工程师是怎么P图的,带你用Python玩转P图
  8. 下拉框怎么获取label_拼多多-「关键词自然流量快速获取」访客暴涨秘诀
  9. 关于软件比赛:想当太子,就不要陪别人读书
  10. 永中office linux卸载,永中Office Linux版官方下载_永中Office Linux版下载8.0.1331 - 系统之家...
  11. android开发者模式自动打开位置touch信息
  12. ORA-00257错误解决方法
  13. npm ERR network Invalid response body while trying to fetch
  14. 爬取新型冠状病毒的历史数据
  15. 9.foreign key(外键)
  16. 金仓数据库 KingbaseGIS 使用手册(6.8. 几何对象输入函数)
  17. Andoid扫码枪监听
  18. 【leetcode个人练习记录】 滑动窗口的问题
  19. 查询服务器主机CPU是几核?附应用场景展示(已解决)
  20. 静态HTML明星主页 HTML+CSS 周杰伦明星页面(学生课程设计网页设计制作大作业)

热门文章

  1. word 文档如何加密
  2. python数据库开发 dga_使用深度学习检测DGA(域名生成算法)——LSTM的输入数据本质上还是词袋模型...
  3. CentOS 7中jdk1.8安装
  4. SudaMod-81.0 / crDroidAndroid-8.1(android-8.1.0_r20)红米3 2018年5月3日更新
  5. 喝酒神器微信小程序源码 支持流量主解锁多人对战
  6. China Mobile announces acquisition of China Railway Communication, unveiling industry reshuffle
  7. 劳务派遣经营许可证怎样办理
  8. python3.7安装numpy库_安装了anaconda3,自带numpy库,但不能导入,问题出在哪里?
  9. shema SQLServer
  10. 机工社威武!再送你30本我的第二套数据分析书籍!