监听scroollview、listview、gridview页面滑动,判断是否滑动到顶部以及底部
2016-03-22 19:18
393 查看
一、GridView:
二、ListView:
三、scroollview:
附:smoothScrollBy()方法可以通过OnClick实现点击页面滑动;
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); } } } });
相关文章推荐
- 动态规划算法之最长递增子序列问题
- Python 数据结构与算法——拓扑排序
- Ubuntu下离线安装MongoDB教程
- 杂项
- Storm源码浅析之topology的提交
- 复杂业务的简单接口--外观模式
- [积累]CSS手册
- Python下redis的使用(整理)
- Dash
- Cocos2dx.3x入门三部曲-Hello Game项目解析(三)
- 1006
- shell--read使用
- 小学算数
- 博客网址
- 给eclipse安装color-theme插件
- Mysql To Charts(一)--Express 应用生成器
- Android studio 开发快捷键使用(新手)
- iOS 极光推送快速最新集成(2.1.0)
- 计算税率
- 【Java】Java中的JDBC