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..