Android的TitleBar实现透明度渐变效果

来源:互联网 发布:rpc动态端口 编辑:程序博客网 时间:2024/05/02 02:22
布局文件中要将titlebar放置在recycleview上方同一水平线的位置
recycleview.setOnScrollListener(new RecyclerView.OnScrollListener() {   @Override   public void onScrollStateChanged(RecyclerView recyclerView, int newState) {      super.onScrollStateChanged(recyclerView, newState);   }   @Override   public void onScrolled(RecyclerView recyclerView, int dx, int dy) {      super.onScrolled(recyclerView, dx, dy);      RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();      //判断是当前layoutManager是否为LinearLayoutManager      // 只有LinearLayoutManager才有查找第一个和最后一个可见view位置的方法      if (layoutManager instanceof LinearLayoutManager) {         LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager;         //获取第一个可见view的位置         firstVisibleItem = linearManager.findFirstVisibleItemPosition();         //获取最后一个可见view的位置         lastVisibleItem = linearManager.findLastVisibleItemPosition();         if (firstVisibleItem == 0) {            // 获取头布局            View view = recyclerView.getChildAt(0);            if (view != null) {               // 获取头布局现在的最上部的位置的相反数               int top = -view.getTop();               // 获取头布局的高度               headerHeight = view.getHeight();               Log.e("StatusDetailActivity", "firstVisibleItem:" + firstVisibleItem + "\ttop:" + top + "\theaderHeight:" + headerHeight);               // 满足这个条件的时候,是头布局在XListview的最上面第一个控件的时候,只有这个时候,我们才调整透明度               if (top <= headerHeight && top >= 0) {                  // 获取当前位置占头布局高度的百分比                  float f = (float) top / (float) headerHeight;                  titleBar.getBackground().setAlpha((int) (f * 255));                  // 通知标题栏刷新显示                  titleBar.invalidate();               }            }         } else if (firstVisibleItem >0) {            titleBar.getBackground().setAlpha(255);         } else {            titleBar.getBackground().setAlpha(0);         }      }   }});
原帖链接http://www.jb51.net/article/79817.htm
0 0
原创粉丝点击