Как сделать перезагрузку, проведя пальцем вниз для веб-просмотра в Android-студии?

M разрабатывает приложение для Android с кодом веб-просмотра. При открытии приложения страница загружается автоматически. Если пользователь хочет перезагрузить страницу, проведя пальцем вниз, чтобы перезагрузить страницу? Любой простой код для этого?

Всего 1 ответ


Я думаю, что лучшим решением является использование SwipeRefreshLayout

Пример для XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:context="com.blogspot.guankode.guankode.MainActivity">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe"
        android:layout_width="368dp"
        android:layout_height="0dp"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">

        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="8dp" />

    </android.support.v4.widget.SwipeRefreshLayout>

</android.support.constraint.ConstraintLayout>

Пример для активности:

public class MainActivity extends AppCompatActivity {

    WebView webView;
    SwipeRefreshLayout swipe;

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

    swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
    swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            LoadWeb();
        }
    });

    LoadWeb();
}

public void LoadWeb(){
    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setAppCacheEnabled(true);
    webView.loadUrl("https://stackoverflow.com");
    swipe.setRefreshing(true);
    webView.setWebViewClient(new WebViewClient(){
        public void onReceivedError(WebView view, int errorCode,
                                    String description, String failingUrl) {
            webView.loadUrl("file:///android_asset/error.html");
        }
        public  void  onPageFinished(WebView view, String url){
            swipe.setRefreshing(false);
        }
    });

    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {

            if(webView.getProgress()== 100){
                swipe.setRefreshing(false);
            } else {
                swipe.setRefreshing(true);
            }
        }
    });
}

@Override
public void onBackPressed(){

    if (webView.canGoBack()){
        webView.goBack();
    }else {
        finish();
    }
}

}

Счастливое Кодирование


Есть идеи?

10000