您的位置:首页 > 其它

监听scroollview、listview、gridview页面滑动,判断是否滑动到顶部以及底部

2016-03-22 19:18 393 查看
一、GridView:

private class GridViewScrollListener implements OnScrollListener{

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}

@Override
public void onScroll(AbsListView view, //报告滚动状态的视图
int firstVisibleItem,//第一个可见item的索引
int visibleItemCount,//可见item的数量
int totalItemCount)//项目列表中的适配器的数量
{
if (firstVisibleItem==0) {
View view2 = gridView.getChildAt(firstVisibleItem);
if (view2!=null) {
Log.i("TAG","view2.getY()"+view2.getY());
if (view2.getY() == 8) {//在顶部
button_up.setBackgroundResource(R.drawable.upb);//向上的键为灰色
button_up.setClickable(false);//且不能按
} else {
button_up.setBackgroundResource(R.drawable.upg);//向上的键为白色
button_up.setClickable(true);//能按
}
}
}else{
button_up.setBackgroundResource(R.drawable.upg);//向上的键为白色
button_up.setClickable(true);//能按
}if ((firstVisibleItem+visibleItemCount)==totalItemCount) {
View view3 = gridView.getChildAt(totalItemCount-1-firstVisibleItem);//scrollview所占的高度
if (view3!=null) {
Log.i("TAG","view3.getY()"+view3.getY());
if (view3.getY() == 246) {//在底部
button_down.setBackgroundResource(R.drawable.downb);	//向下的键为灰色
button_down.setClickable(false);	//且不能按
} else {
button_down.setBackgroundResource(R.drawable.downg);	//向下的键为白色
button_down.setClickable(true);	//能按
}
}
}else{//在中部
button_down.setBackgroundResource(R.drawable.downg);	//向下的键为白色
button_down.setClickable(true);	//能按
}
}
}


二、ListView:

ListView().setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(firstVisibleItem==0){
Log.e("log", "滑到顶部");
}
if(visibleItemCount+firstVisibleItem==totalItemCount){
Log.e("log", "滑到底部");
}
}
});


三、scroollview:

@Override
public void onScrollChanged(ObservableScrollView observableScrollView,
int x, int y, int oldx, int oldy) {
int scrollY=observableScrollView.getScrollY();//顶端以及滑出去的距离
int height=observableScrollView.getHeight();//界面的高度
int scrollViewMeasuredHeight=observableScrollView.getChildAt(0).getMeasuredHeight();//scrollview所占的高度
if(scrollY==0){//在顶端的时候
button_up.setBackgroundResource(R.drawable.upb);//向上的键为灰色
button_up.setClickable(false);//且不能按
}else if((scrollY+height)==scrollViewMeasuredHeight){//当在底部的时候
button_down.setBackgroundResource(R.drawable.downb);	//向下的键为灰色
button_down.setClickable(false);	//且不能按
}else {//当在中间的时候
button_down.setBackgroundResource(R.drawable.button_down);//向下为白色
button_down.setClickable(true);	//可点击
button_up.setClickable(true);//可点击
button_up.setBackgroundResource(R.drawable.button_up);	//向上的键为白色
}
}


附:smoothScrollBy()方法可以通过OnClick实现点击页面滑动;

button_down.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(true){
if(type==1){
includeView2.smoothScrollBy(1000, 470);
}else{
gridView.smoothScrollBy(300, 1000);
}else{
listView.smoothScrollBy(300, 1000);
}
}
}
});
button_up.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(true){
if(type==1){
includeView2.smoothScrollBy(1000, -470);

}else{
gridView.smoothScrollBy(-300, 1000);
}else{
listView.smoothScrollBy(-300, 1000);
}
}
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: