你的位置:首页 > 操作系统

[操作系统]andorid 向上滑动控制标题栏显示


要实现这样的功能,原理不难,监听滑动距离再设置标题栏的透明度

下面是监听一个带头view的list实现核心代码:

mbar是标题栏

 mListView.setOnScrollListener(new AbsListView.OnScrollListener() {      @Override      public void onScrollStateChanged(AbsListView view, int scrollState) {      }      @Override      public void onScroll(AbsListView listView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {        if (visibleItemCount == 0) {          return;        }        int[] location = new int[2];        mIvBusinessLogo.getLocationOnScreen(location);        int mgTop = location[1] - getNotificationBarHeight() - mBar.getHeight();        if (mgTop > 3) {          int top = -mgTop;          int headerHeight = mIvBusinessCover.getHeight() - mBar.getHeight();          if (top <= headerHeight) {            float f = (float) top / (float) headerHeight;            int alpha = (int) (f * 255);//            Log.i("wg", "alpha = " + alpha);            if (alpha < -255) {              alpha = -255;            }            mBar.setTitleBarAlpha(alpha);          }        } else {          mBar.setTitleBarAlpha(255);        }      }    });  }

 

  private int getNotificationBarHeight() {    if (notificationBarHeight == 0) {      Rect rect = new Rect();      this.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);      notificationBarHeight = rect.top;    }    return notificationBarHeight;  }