一:效果图
第一二张效果图是用红线标注,第三张为黑线,三张为不同滑动距离的效果图,不想弄GIF的,凑合看吧、
二:实现步骤
1.xml实现,在你的布局加上scrollview,也可以自定义scrollview,都有注释,就不用解释太多了
<com.zjtd.bzcommunity.lib.myScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</com.zjtd.bzcommunity.lib.myScrollView>
2.代码实现
private myScrollView mScrollView; // 整体ScrollView
private int fadingHeight = 600; // 当ScrollView滑动到什么位置时渐变消失(根据需要进行调整)
private Drawable drawable; // 顶部渐变布局需设置的Drawable
private RelativeLayout layout_top_search;//导航栏
private static final int START_ALPHA = 0;//scrollview滑动开始位置
private static final int END_ALPHA = 255;//scrollview滑动结束位置
mScrollView = (myScrollView) view.findViewById(R.id.scrollView);
drawable = getResources().getDrawable(R.color.dhlbg);
drawable.setAlpha(START_ALPHA);
layout_top_search.setBackgroundDrawable(drawable);
//调用方法
mScrollView.setOnScrollChangedListener(scrollChangedListener);
/**
* ScrollView的滚动监听
*/
private myScrollView.OnScrollChangedListener scrollChangedListener = new myScrollView.OnScrollChangedListener() {
@Override
public void onScrollChanged(ScrollView who, int x, int y, int oldx,
int oldy) {
if (y > fadingHeight) {
y = fadingHeight; // 当滑动到指定位置之后设置颜色为纯色,之前的话要渐变---实现下面的公式即可
// relativela_id.setBackgroundColor(Color.WHITE);
} else if (y < 0) {
y = 0;
} else {
// relativela_id.setBackgroundColor(0x99FFFFFF);
}
drawable.setAlpha(y * (END_ALPHA - START_ALPHA) / fadingHeight
+ START_ALPHA);
}
};
---------------------------差不多就是这样子了,不喜勿喷、