做项目的时候有个这样的效果,页面的内容滑动一段距离以后,标题栏显示标题内容和头像。这个效果正常的WebView是达不到的,这时候就需要自定义可滑动的WebView了。下面看下滑动Webview的代码。
public class ScrollWebView extends WebView{
private OnScrollChangedCallback mOnScrollChangedCallback;
public ScrollWebView(Context context) {
super(context);
}
public ScrollWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (mOnScrollChangedCallback != null) {
mOnScrollChangedCallback.onScroll(l - oldl, t - oldt);
mOnScrollChangedCallback.onScrollY(t);
}
}
public OnScrollChangedCallback getOnScrollChangedCallback() {
return mOnScrollChangedCallback;
}
public void setOnScrollChangedCallback(
final OnScrollChangedCallback onScrollChangedCallback) {
mOnScrollChangedCallback = onScrollChangedCallback;
}
/**
* Impliment in the activity/fragment/view that you want to listen to the webview
*/
public static interface OnScrollChangedCallback {
public void onScroll(int dx, int dy);
public void onScrollY(int y);
}
}
这时候在webview的控制中就可以写了
webView.setOnScrollChangedCallback(new OnScrollChangedCallback() {
@Override
public void onScroll(int dx, int dy) {
}
@Override
public void onScrollY(int y) {
if (y > 200) {
if (title.getVisibility() != View.VISIBLE) {
title.setVisibility(View.VISIBLE);
img_source.setVisibility(View.VISIBLE);
}
} else {
if (title.getVisibility() == View.VISIBLE) {
title.setVisibility(View.GONE);
img_source.setVisibility(View.GONE);
}
}
Log.i("zst", "y=====" + y);
}
});