Android webviewドロップダウンリフレッシュ

2598 ワード

今日はビジネス上必要なので、webviewを更新する必要がありますが、webviewにはこの機能がないに違いありませんね.そこで、xlistviewでwebviewを頭に置いて、ドロップダウンしたときに、webviewを再ロードしたいと思っていましたが、そう言えばスライド衝突になるかもしれません.そこでstack overflowで良い解決策を見つけました.
SwipeRefreshLayoutはGoogleの公式ドロップダウンリフレッシュコントロールで、4.0以下のバージョンでAndroid-support-v 4を使用する必要があります.jarパッケージが使用できます.SwipeRefreshLayoutは、WebView、ListView、ScroolViewなど、スライド可能なコントロールの外側に追加するだけで非常に簡単です.
demoの例は以下の通りである:public class MainActivity extends Activity{
private WebView webView;
private WebSettings webSettings;
private SwipeRefreshLayout swipeLayout;
private String linkUrl="https://www.baidu.com/";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    swipeLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_container);
    //        
    swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

        @Override
        public void onRefresh() {
            //      
            // webview.loadUrl(webview.getUrl());
            webView.reload();
        }
    });

    //          
    swipeLayout.setColorScheme(R.color.holo_blue_bright,
            R.color.holo_green_light, R.color.holo_orange_light,
            R.color.holo_red_light);

    //   webview
    initwebview();
}

private void initwebview(){
    webView= (WebView) findViewById(R.id.webview);
    webSettings= webView.getSettings();
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webSettings.setSupportZoom(false);
    webSettings.setBuiltInZoomControls(false);
    webSettings.setAppCacheMaxSize(1024 * 1024 * 9);//       
    webSettings.setAllowFileAccess(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });

    //     
    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if (newProgress == 100) {
                //     
                swipeLayout.setRefreshing(false);
            } else {
                if (!swipeLayout.isRefreshing())
                    //     
                    swipeLayout.setRefreshing(true);
            }

            super.onProgressChanged(view, newProgress);
        }
    });
    webView.loadUrl(linkUrl);
}

}