一、listview 监听上滑还是下滑
- <span style="font-size:12px;">listView.setOnScrollListener(new AbsListView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- if (firstVisibleItem > lastVisibleItemPosition) {// 上滑
- ivCamera.setVisibility(View.GONE);
- } else if (firstVisibleItem < lastVisibleItemPosition) {// 下滑
- ivCamera.setVisibility(View.VISIBLE);
- } else {
- return;
- }
- lastVisibleItemPosition = firstVisibleItem;
- }
- }
- );</span>
二、listview 上滑时某个控件悬浮置顶
listview布局
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_below="@id/header">
- <com.handmark.pulltorefresh.library.PullToRefreshListView
- android:id="@+id/listview"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#e0e0e0"
- android:divider="@null"
- android:dividerPadding="0dp"
- android:scrollbars="none" />
- <要置顶的布局>
- ...
- ...
- <要置顶的布局/>
- </FrameLayout>
要置顶的控件单独在写一个layout
- <要置顶的布局/>
- listView.addHeaderView(xuanfu);//悬浮式inflate进来的要置顶控件的布局
- listView.setOnScrollListener(
- new AbsListView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- if (firstVisibleItem > 1) {
- ll_float.setVisibility(View.VISIBLE);//ll_float 为listview布局里面需要置顶的控件
- } else {
- ll_float.setVisibility(View.GONE);
- }
- }
- }
- );
三、listview监听滑动距离
- listView.setOnScrollListener(
- new AbsListView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- // if (view != null && view.getChildAt(0) != null && view.getChildAt(0).getTop() != 0) {
- //
- // int height_item1 = view.getChildAt(1).getTop() - view.getChildAt(0).getTop();
- // int height_item2 = view.getChildAt(2).getTop() - view.getChildAt(1).getTop();
- }
- }
- }
- );