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..
Merhabalar Alper hocam. öncelikle bu çalışma günlerdir tamda aradığım bir çalışma fakat, kodları direk bireir kopyaladım yeni uygulama oluşturup iççerisine attım herşey yolunda görnüyor (YEŞİL OKLAR TAMAM) fakat .apk yapamıyorum hata verıyor.
ekte ki resimde belirttim hata sayfamı.. https://uploads.disquscdn.com/images/916c08e9305560ee7b4ddb8466ef2ce8dec7cab9c62568251dc27968d2a2c809.png
Merhabalar, buradaki çözümlere bakar mısınız http://stackoverflow.com/qu… , sizin karşılaştığınız sorunla ilgili konudan bahsedilmiş deneyip geri dönüş yaparsanız
Merhaba Alper bey, denedim ama ya ben yapamadim, yada bu cozumler etkili olmadi. Ama sorunu farkli bir sekilde halletim. Soru cevap kisminda bir sorum vardi orada verilen cevaplar yardimiyla suanda uygulamam sorunsuz sekilde calisiyor.
Tekrardan merhaba, sorunuzun çözülmesine sevindim çözüm yolunu buraya da paylaşırsanız aynı sıkıntıyı yaşayan veya yaşayacak olan kişilerde bilgilenmiş olur
Merhaba hocam.
Hazırladığım web sitesi VR görüntü için WebGl kullanıyor. WebGl kullanımını android webview’de nasıl belirtmem lazım, yada belirtmem lazım mı? Çünkü simülatörde ve apk’yi test ettiğimde “Error. WebGl not supported.” hatası veriyor. Yardımınız için şimdiden teşekkür ederim…
Merhabalar öncelikle çok güzel bir makale ve video olmuş ellerinize sağlık bende web sitem için webview bir uygulama yapıyorum. Ancak ben kotlin üzerinden yapıyorum ve bu olayı kotlin dilin de bir türlü bulamadım acaba yardımcı olabilir misiniz?