public class ObservableScrollView extends NestedScrollView { public interface ScrollViewListener { void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); } private ScrollViewListener scrollViewListener = null; public ObservableScrollView(Context context) { super(context); } public ObservableScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public ObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } }
int imageHeight = 500; //待修改头部 图片视频控件 高度 测试 @Override public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) { Log.e("xxxxxxx","x="+x + " y="+y+" old= "+oldx +" oldy="+oldy); if (y <= 0) { viewDataBinding.titleTv.setBackgroundColor(Color.argb((int) 0, 255, 255, 255));//AGB由相关工具获得,或者美工提供 viewDataBinding.titleTv.setTextColor(Color.argb((int) 0, 255, 255, 255)); } else if ( y <= imageHeight) { float scale = (float) y / imageHeight; float alpha = (255 * scale); // 只是layout背景透明(仿知乎滑动效果) viewDataBinding.titleTv.setBackgroundColor(Color.argb((int) alpha, 255, 255, 255)); viewDataBinding.titleTv.setTextColor(Color.argb((int) alpha, 0, 0, 0)); } else { viewDataBinding.titleTv.setBackgroundColor(Color.argb((int) 255, 255, 255, 255)); viewDataBinding.titleTv.setTextColor(Color.argb((int)255, 0, 0, 0)); } }