Android 之WebView实现下拉刷新和其他相关刷新功能

最近项目中需要用到WebView下拉刷新的功能,经过查找资料终于完成了此功能,现在拿出来和大家分享一下。希望对大家有所帮助。

效果如下图:

                      Android 之WebView实现下拉刷新和其他相关刷新功能_第1张图片

 

代码:

 

activity.xml




    
        
    

 Activity.Java

/****
 * WebView 实现下拉加载
 */
public class MainActivity extends AppCompatActivity {

    private PtrClassicFrameLayout mPtrFrame;
    private WebView mWebView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView= (WebView) findViewById(R.id.webview);
        mPtrFrame= (PtrClassicFrameLayout) findViewById(R.id.rotate_header_web_view_frame);
        initView();
    }

    private void initView(){
        mWebView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if(url.toLowerCase().startsWith("http://") || url.toLowerCase().startsWith("https://"))
                {
                    return false;
                }
                return true;
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                mPtrFrame.refreshComplete();
            }

        });
        mPtrFrame.setLastUpdateTimeRelateObject(this);
        mPtrFrame.setPtrHandler(new PtrHandler() {
            @Override
            public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
                return PtrDefaultHandler.checkContentCanBePulledDown(frame, mWebView, header);
            }
            @Override
            public void onRefreshBegin(PtrFrameLayout frame) {
                updateData();
            }
        });
        mPtrFrame.setResistance(1.7f);
        mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f);
        mPtrFrame.setDurationToClose(200);
        mPtrFrame.setDurationToCloseHeader(1000);
        mPtrFrame.setPullToRefresh(false);
        mPtrFrame.setKeepHeaderWhenRefresh(true);
        mPtrFrame.postDelayed(new Runnable() {
            @Override
            public void run() {
                mPtrFrame.autoRefresh();
            }
        }, 100);
    }
    private void updateData() {
        mWebView.loadUrl("https://my.oschina.net/zhangqie/blog");
    }

}


权限:






注:上图效果是参考他人写的

更多控件实现下拉刷新效果图:  可以参考 https://github.com/DickyQie/android-advanced-effect/tree/pull-down-refresh   我就是参考此案例来实现的

          Android 之WebView实现下拉刷新和其他相关刷新功能_第2张图片

 

 

更多实现方式 https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh

 

 图1:

源码点击下载


 图2:

https://github.com/DickyQie/android-advanced-effect/tree/webview-pull-refresh


你可能感兴趣的:(Android)