

一招教你打造一个滑动置顶的视觉特效
source link: https://juejin.im/post/59f7d03551882529d775dfc7
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一招教你打造一个滑动置顶的视觉特效
一个滑动悬浮置顶的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中,否则指定一个顶部的父容器添加在里面即可。
代码并没有很多,需要的同学可以下载github Demo体验和学习。
项目Github链接地址
下载慢?CSDN下载链接:
Recommend
-
63
生成模型和序列模型总是令我着迷:它们提出的问题与我们初学机器学习时常遇到的问题不同。刚开始学习 ML 时,和很多人一样,我学的是分类和回归。这些可以帮助我们提出并回答以下问题: 图片里是猫还是狗?(分类)
-
50
来源:中国科普博览秋已深,又迎来了一年一度的秋刀鱼渔汛。黑潮暖流与亲潮寒流如约相遇,交汇处形成海量的饵料,让这些一尺来长的海中美味恣意生长。这一段时间,从我国台湾海峡向北直到日本北海道以东海域,大小渔船往来如织,收获着大海的慷慨赠予。秋刀鱼
-
23
教你一招识破大资金建仓时机,让机构给你抬轿子 - 如果我能提前知道大资金会流入建仓,我最好的策略是什么?肯定是提前买入,坐等抬轿子^___^。我等小散最好的策略当然是跟着大机构的资金走。知己知彼方能百战不殆。虽然大部分机构资金的进出都是保密的,事后才会...
-
33
点击上方 “ 匠心零度 ” ,选择“
-
26
大家好,大家有没有每天打开电脑,都要关好多个弹窗,并且不知道这些弹窗是怎么来的,有时候还会莫名其妙的出来,好不容易工作之余有点休闲时光,想要释放双手,刷个剧,突然屏幕上出现了弹框广告,真不能忍受,今天小编就教大家如何消灭弹窗广告!
-
10
教你一招:复制不能复制的网页文字(通用篇)
-
4
目录 1. 超声波模块的测距原理
-
9
最近,苹果发布会可以说是各大平台的头版头条,新版iPad Pro因为加入了M1芯片实现了处理器性能的飞跃提升,就像一个缩小版的Mac,对于办公党来说,出差可能带上一个iPad Pro 2021就够了,方便又实用。还有紫色版的iPhone 12,被称为“春天最适合的颜色”,...
-
7
教你一招:让集群慢节点无处可藏 - 华为云开发者社区的个人空间 - OSCHINA - 中文开源技术交流社区 用代码保护...
-
2
章节导航篇机器学习:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK