用户又提了个需求,要求一键返回到阅读的顶端,于是自己实现了一下
- 首先定义自己的WebView
- 然后帖布局
- 主代码
MyWebView
package io.dcloud.H5B79C397.view;
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;
/**
* Created by Administrator on 2017/10/10 0010.
*/
public class MyWebView extends WebView {
private OnScrollChangeListener mOnScrollChangeListener;
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
// webview的高度
float webcontent = getContentHeight() * getScale();
// 当前webview的高度
float webnow = getHeight() + getScrollY();
if (Math.abs(webcontent - webnow) < 1) {
//处于底端
mOnScrollChangeListener.onPageEnd(l, t, oldl, oldt);
} else if (getScrollY() == 0) {
//处于顶端
mOnScrollChangeListener.onPageTop(l, t, oldl, oldt);
} else {
mOnScrollChangeListener.onScrollChanged(l, t, oldl, oldt);
}
}
public void setOnScrollChangeListener(OnScrollChangeListener listener) {
this.mOnScrollChangeListener = listener;
}
public interface OnScrollChangeListener {
public void onPageEnd(int l, int t, int oldl, int oldt);
public void onPageTop(int l, int t, int oldl, int oldt);
public void onScrollChanged(int l, int t, int oldl, int oldt);
}
}
布局
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/imageButton"
android:layout_width="80dp"
android:layout_height="50dp"
android:layout_gravity="right|bottom"
android:text="顶部"
android:visibility="gone" />
<io.dcloud.H5B79C397.view.MyWebView
android:id="@+id/detail_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadeScrollbars="true" />
</FrameLayout>
主要代码
webView.setOnScrollChangeListener(new MyWebView.OnScrollChangeListener() {
@Override
public void onPageEnd(int l, int t, int oldl, int oldt) {
Totop.setVisibility(View.VISIBLE);
}
@Override
public void onPageTop(int l, int t, int oldl, int oldt) {
Totop.setVisibility(View.GONE);
}
@Override
public void onScrollChanged(int l, int t, int oldl, int oldt) {
Totop.setVisibility(View.VISIBLE);
}
});
点击事件
case R.id.imageButton:
webView.scrollTo(0,0);
Totop.setVisibility(View.GONE);
break;