监听ScrollView滑动状态
2018-02-21 09:00
260 查看
public class
MyScrollView extends
ScrollView {
private boolean
isScrolledToTop;
private boolean
isScrolledToBottom;
private
IScrollChangedListener
mScrollChangedListener;
public
MyScrollView(Context
context) {
super(context);
}
public
MyScrollView(Context
context,
AttributeSet attrs,
int defStyle) {
super(context,
attrs,
defStyle);
}
public
MyScrollView(Context
context,
AttributeSet attrs) {
super(context,
attrs);
}
public void
setScrollViewListener(IScrollChangedListener
scrollViewListener) {
this.mScrollChangedListener
= scrollViewListener;
}
@Override
protected void
onScrollChanged(int
l,
int t,
int oldl,
int oldt) {
super.onScrollChanged(l,
t,
oldl,
oldt);
// We take the last son in the scrollview
View
view =
getChildAt(0);
if
(view
== null)
return;
int
diff = (view.getBottom()
- (getHeight() +
getScrollY()));
// System.out.println("diff= " + diff
// + ",view.getBottom()=" + view.getBottom()
// + ",this.getHeight()=" + getHeight()
// + ",this.getScrollY()=" + getScrollY());
// if diff is zero, then the bottom has been reached
isScrolledToBottom
= false;
isScrolledToTop
= false;
if
(diff
== 0) {
isScrolledToBottom
= true;
if
(mScrollChangedListener
!= null)
mScrollChangedListener.onScrolledToBottom();
} else if
(getScrollY() ==
0) {
isScrolledToTop
= true;
if
(mScrollChangedListener
!= null)
mScrollChangedListener.onScrolledToTop();
}
}
public boolean
isTopEnd() {
return
isScrolledToTop;
}
public boolean
isBottomEnd() {
return
isScrolledToBottom;
}
/**
* 定义监听接口
*/
public interface
IScrollChangedListener
{
void
onScrolledToBottom();
void
onScrolledToTop();
}
在外层调用ScrollView对外暴露的接口
scrollView = (MyScrollView) findViewById(R.id.acscrollView);
scrollView.setScrollViewListener(new MyScrollView.IScrollChangedListener() {
@Override
public void onScrolledToBottom() {
i++;
loadData(i);
xRecyclerView.loadMoreComplete();
}
@Override
public void onScrolledToTop() {
}
});
可以在滑动到顶部和底部的时候做一些操作
MyScrollView extends
ScrollView {
private boolean
isScrolledToTop;
private boolean
isScrolledToBottom;
private
IScrollChangedListener
mScrollChangedListener;
public
MyScrollView(Context
context) {
super(context);
}
public
MyScrollView(Context
context,
AttributeSet attrs,
int defStyle) {
super(context,
attrs,
defStyle);
}
public
MyScrollView(Context
context,
AttributeSet attrs) {
super(context,
attrs);
}
public void
setScrollViewListener(IScrollChangedListener
scrollViewListener) {
this.mScrollChangedListener
= scrollViewListener;
}
@Override
protected void
onScrollChanged(int
l,
int t,
int oldl,
int oldt) {
super.onScrollChanged(l,
t,
oldl,
oldt);
// We take the last son in the scrollview
View
view =
getChildAt(0);
if
(view
== null)
return;
int
diff = (view.getBottom()
- (getHeight() +
getScrollY()));
// System.out.println("diff= " + diff
// + ",view.getBottom()=" + view.getBottom()
// + ",this.getHeight()=" + getHeight()
// + ",this.getScrollY()=" + getScrollY());
// if diff is zero, then the bottom has been reached
isScrolledToBottom
= false;
isScrolledToTop
= false;
if
(diff
== 0) {
isScrolledToBottom
= true;
if
(mScrollChangedListener
!= null)
mScrollChangedListener.onScrolledToBottom();
} else if
(getScrollY() ==
0) {
isScrolledToTop
= true;
if
(mScrollChangedListener
!= null)
mScrollChangedListener.onScrolledToTop();
}
}
public boolean
isTopEnd() {
return
isScrolledToTop;
}
public boolean
isBottomEnd() {
return
isScrolledToBottom;
}
/**
* 定义监听接口
*/
public interface
IScrollChangedListener
{
void
onScrolledToBottom();
void
onScrolledToTop();
}
在外层调用ScrollView对外暴露的接口
scrollView = (MyScrollView) findViewById(R.id.acscrollView);
scrollView.setScrollViewListener(new MyScrollView.IScrollChangedListener() {
@Override
public void onScrolledToBottom() {
i++;
loadData(i);
xRecyclerView.loadMoreComplete();
}
@Override
public void onScrolledToTop() {
}
});
可以在滑动到顶部和底部的时候做一些操作
相关文章推荐
- 监听ScrollView的滑动距离和滑动状态
- Android 自定义ScrollView嵌套滚动兼容,监听滑动状态:顶部、底部、停止、滑动中
- ios-day05-03(实现UIScrollViewDelegate协议,监听ScrollView的缩放、滑动等状态)
- 在 tableview的上面 添加 一个view, 下面 加一个 button,都是 监听 scrollview的滑动而已,
- 监听ScrollView滑动到顶端和底部
- ScrollView的滑动监听(以HorizontalScrollView为例)
- Android - ScrollView 监听滑动停止,顶部还是底部?
- Android: ScrollView监听滑动到顶端和底端
- 【ScrollView】Android ScrollView监听滑动事件
- Android中自定义ScrollView的滑动监听事件
- Android 监听 ScrollView 滑动到最底部,实现阅读协议,滑动到最低端显示已阅读按钮(2017版本)
- 监听ScrollView滑动到顶端和底部
- Android 监听ScrollView滑动 实现布局背景、文本颜色渐变
- 监听列表ListVIew的滑动状态
- 监听ScrollView上下滑动
- Android 监听ScrollView的滑动
- 监听滑动到底部的ScrollView
- ListView 滑动监听的几种状态
- ScrollView 滑动监听
- 小距离监听ListView或者ScrollView上下滑动