andorid 向上滑动统制标题栏显示

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;
    }