Site icon Mobilhanem

Android WebView Swipe Refresh

Merhaba arkadaşlar,
Bu dersimizde anlatım olarak uzun tutmayacağım soru cevap kısmındada sıklıkla sorulan webview e nasıl pull to refresh(WebView Swipe Refresh) özelliği kazandırırız onu göstereceğiz.

Kaynak kodu indirip kendi url inizi ekleyerek de kullanabilirsiniz.

Yapmanız gereken adımlar ; layout kısmında SwipeRefreshLayout ile birlikte WebView kullanıyoruz.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mobilhanem.refreshwebviewexample.MainActivity">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipeContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <WebView
                android:id="@+id/webView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true" />

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


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



</RelativeLayout>

Ana sınıfımızda ise uygulamamızı çalıştırdıktan sonra ekranı aşağı doğru çekip bıraktığımız an sitemizi yeniliyoruz. Uygulamayı ilk açtığımızda direk beyaz ekran gelip urlnin yüklenmesini beklemek yerine kullanıcıya dialog göstererek beklemesini belirtmek istiyorsak da MyWebViewClient methodunu kullanıyoruz kaynak kodlara baktığımızda o kısmın commente alındığını göreceksiniz. onRefresh methodunda setRefreshing methodunu false yapmayı unutmuyoruz yoksa sürekli yeniliyormuş gibi yukarıda yenilenme dialogu etkin kalacaktır.

MainActivity.java

package com.mobilhanem.refreshwebviewexample;

import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private SwipeRefreshLayout mySwipeRefreshLayout;
    private ProgressDialog progressDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mySwipeRefreshLayout = (SwipeRefreshLayout)this.findViewById(R.id.swipeContainer);
        String url ="https://www.mobilhanem.com";
        webView =(WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);

        webView.setWebViewClient(new WebViewClient());
        //webView.setWebViewClient(new MyWebViewClient());

        webView.loadUrl(url);

        mySwipeRefreshLayout.setOnRefreshListener(
                new SwipeRefreshLayout.OnRefreshListener() {
                    @Override
                    public void onRefresh() {
                        webView.reload();
                        mySwipeRefreshLayout.setRefreshing(false);
                    }
                }
        );
    }


    private class MyWebViewClient extends WebViewClient {

        @SuppressWarnings("deprecation")
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setMessage("Lütfen Bekleyin ...");
            progressDialog.show();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if(progressDialog!=null){
                progressDialog.dismiss();
            }
        }
    }
}

not:  Kullandığımız support-design kütüphanesinede dikkat edelim eğer build.gradle kısmında set etmezsek SwipeRefreshLayout özelliğini kullanamayacağız.

Mobilhanem.com üzerinden anlattığımız mobil uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.

Bir dahaki dersimizde görüşmek dileğiyle..

3
Exit mobile version