Android】ListView监听上下滑动(判断是否显示返回顶部按钮)
来源:互联网 发布:java opencv图像识别 编辑:程序博客网 时间:2024/05/22 03:37
import java.util.ArrayList;import java.util.List; import com.zihao.adapter.MyAdapter;import com.zihao.utils.ScreenUtil; import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.Button;import android.widget.ListView;import android.app.Activity; public class MainActivity extends Activity implements OnClickListener { private ListView listView;// List数据列表 private Button toTopBtn;// 返回顶部的按钮 private MyAdapter adapter; private boolean scrollFlag = false;// 标记是否滑动 private int lastVisibleItemPosition = 0;// 标记上次滑动位置 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } /** * 初始化视图 */ private void initView() { listView = (ListView) findViewById(R.id.my_listView); toTopBtn = (Button) findViewById(R.id.top_btn); adapter = new MyAdapter(this, getTitleDatas()); listView.setAdapter(adapter); toTopBtn.setOnClickListener(this); listView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE:// 是当屏幕停止滚动时 scrollFlag = false; // 判断滚动到底部 if (listView.getLastVisiblePosition() == (listView .getCount() - 1)) { toTopBtn.setVisibility(View.VISIBLE); } // 判断滚动到顶部 if (listView.getFirstVisiblePosition() == 0) { toTopBtn.setVisibility(View.GONE); } break; case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 滚动时 scrollFlag = true; break; case OnScrollListener.SCROLL_STATE_FLING:// 是当用户由于之前划动屏幕并抬起手指,屏幕产生惯性滑动时 scrollFlag = false; break; } } /** * firstVisibleItem:当前能看见的第一个列表项ID(从0开始) * visibleItemCount:当前能看见的列表项个数(小半个也算) totalItemCount:列表项共数 */ @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // 当开始滑动且ListView底部的Y轴点超出屏幕最大范围时,显示或隐藏顶部按钮 if (scrollFlag && ScreenUtil.getScreenViewBottomHeight(listView) >= ScreenUtil .getScreenHeight(MainActivity.this)) { if (firstVisibleItem > lastVisibleItemPosition) {// 上滑 toTopBtn.setVisibility(View.VISIBLE); } else if (firstVisibleItem < lastVisibleItemPosition) {// 下滑 toTopBtn.setVisibility(View.GONE); } else { return; } lastVisibleItemPosition = firstVisibleItem; } } }); } /** * 获取标题数据列表 * * @return */ private List<string> getTitleDatas() { List<string> titleArray = new ArrayList<string>(); for (int i = 0; i < 30; i++) { titleArray.add("这是第" + i + "个item"); } return titleArray; } /** * 滚动ListView到指定位置 * * @param pos */ private void setListViewPos(int pos) { if (android.os.Build.VERSION.SDK_INT >= 8) { listView.smoothScrollToPosition(pos); } else { listView.setSelection(pos); } } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.top_btn:// 点击按钮返回到ListView的第一项 setListViewPos(0); break; } } }
0 0
- 【Android】ListView监听上下滑动(判断是否显示返回顶部按钮)
- Android】ListView监听上下滑动(判断是否显示返回顶部按钮)
- Android ListView监听上下滑动(判断是否显示返回顶部按钮)
- Android ListView监听上下滑动(判断是否显示返回顶部按钮)
- Android ListView监听上下滑动(判断是否显示返回顶部按钮)
- 【Android】ListView监听上下滑动(设置滚动监听判断ListView的滚动方向同时获取屏幕高度、ListView实际高度,判断是否需要展示返回顶部按钮(具体逻辑请看代码--附有详细注释)。
- 【Android】判断listview是否滑动到顶部
- 监听scroollview、listview、gridview页面滑动,判断是否滑动到顶部以及底部
- ListView上下滑动监听
- Android Xlistview的源码浅度分析 监听ListView上下滑动 以及是否到顶和底部
- listView监听上下滑动事件
- Android中判断listview是否滑动到顶部和底部方法
- andorid 上下滑动状态判断和listview分页显示
- Android笔记之判断ListView滑动到顶部或底部
- ListView,ScrollView,RecyclerView上下滑动监听
- android listview 滑动监听
- android左右滑动监听,上下滑动
- Android 禁止 ListView 上下滑动
- linux 常用命令
- cordova初体验
- VS2010添加静态链接库——jsoncpp
- 自滑动的广告位
- 控制台执行JAVA代码发生的错误(Exception in thread "main" java.lang.NoClassDefFoundError)
- Android】ListView监听上下滑动(判断是否显示返回顶部按钮)
- C++ primer 第五版 中文版 练习 10.33
- 1026. Table Tennis (30)
- jquery combotree\datagrid 包引用
- 使用csc命令手动编译cs文件
- GCAM初步运行
- PowerPC60x系列的L2 cache相关资料阅读笔记
- Android的ListView中的长按事件触发点击事件
- Linux内存管理之mmap详解