一键返回页面顶部的需求

来源:互联网 发布:java集成测试框架 编辑:程序博客网 时间:2024/06/05 15:59

用户又提了个需求,要求一键返回到阅读的顶端,于是自己实现了一下

  • 首先定义自己的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;