监听ListView滑动实现标题背景Alpha渐变

先说下需求“当列表滑动时,背景透明度随着上或下滑动而改变透明度”,那我们思考下,既然是滚动事件,一般是利用的实现onScrollListener接口,同时监听滑动的具体位置来动态改变标题背景透明度。有些骚年可能不知道怎么初始化时动态设置布局背景透明度,看下面:

//设置你需要初始化透明度的布局,Alpha值0-255
方法“.getBackground().setAlpha(0);”

  再看实现onScrollListener接口的两个方法:

    • [java] view plain copy @Override       public void onScrollStateChanged(AbsListView view, int  scrollState) {           switch(scrollState){               case AbsListView.OnScrollListener.SCROLL_STATE_IDLE://空闲状态                     break;               case AbsListView.OnScrollListener.SCROLL_STATE_FLING://滚动状态                     break;               case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL://触摸后滚动                     break;           }  
    •     }
      
      

private int headerHeight = 0;  
@Override  
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {  
          
        View sview = xListView.getChildAt(0);  
        if(null != sview) {  
            int top = -(sview.getTop());  
            headerHeight = sview.getHeight()-270;  
            if (top > 0 && top <= headerHeight && firstVisibleItem==1) {  
                float scale = (float) top / headerHeight;  
                float alpha = (255 * scale);  
                rlTitle.getBackground().setAlpha((int)alpha);  
            }else if(top == 0){  
                rlTitle.getBackground().setAlpha(0);  
            }else if(firstVisibleItem > 1){  
                rlTitle.getBackground().setAlpha(255);  
            }  
        }  
    }  
这里我们以XListView为背景下实现的滚动监听,xListView.setOnScrollListener()。实现的方法里,主要是针对onScroll()进行进行的事件封装。

  首先看xListView.getChildAt(0),获取第一项Item或Header的View,然后分别获取top 和headerHeight两个值,getTop()获取的是当下Item所滑动的距离,本身为负值,headerHeight是当下Item的高度,我这里进行了微调-270,为了达到所要求的高度而已。

  其次是一些IF语句判断,重点是第一个IF判断内容。我们设置背景Alpha,肯定要获取当下滑动距离占据当下Item高度的比例,然后根据比例算出所需设置的Alpha。只是一道数学算法,并没什么难得。



原文:http://blog.csdn.net/crazywolfteam


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值