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;

    }

 

你可能感兴趣的:(andorid)