最近有个需求是actionbar随着滑动来改变背景颜色。 因为我layout中里面包的是PullToRefreshScrollView,所以首先就是要监听PullToRefreshScrollView的变化。 首先就是先去看是否PullToRefreshScrollView里面是否有现成的接口。 setOnScrollChangeListener这是android中view的接口 setOnScrollChangedListener这个是PullToRefreshScrollView中的接口
可是通过demo中测试发现这两个接口只有在快速滑动的时候才会去调用,在慢速滑动的时候有时不会调用。所以这个方法不能实现我的需求。
PullToRefreshScrollView.getRefreshableView().setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction()==MotionEvent.ACTION_MOVE){ //可以监听到ScrollView的滚动事件 double alpha = (double)index_content.getRefreshableView().getScrollY()/(AppInfoUtil.getScreenHeight()/3)*255; alpha = alpha > 255 ? 255 : alpha; alpha = alpha < 2 ? 0 :alpha; Log.d(TAG ,"ALPHA:"+alpha); head_title.getBackground().setAlpha((int)alpha); } return false; } });
后来在查相关的资料发现PullToRefreshScrollView.getRefreshableView()可以得到里面的scroolview这样我就可以对触控事件的监听来实现滑动的监听
event.getAction()==MotionEvent.ACTION_MOVE
接下来要做的就比较简单了,直接对view的背景色设置透明度
actionHeaderView.getBackground().mutate().setAlpha(0);