کار با WebView در اندروید

منتشرشده توسط حامد قنبری در تاریخ

وب ویا WebView ابزار نمایش اندروید برای نشان دادن صفحات وب بصورت پویا  در اندروید محسوب  می شود که از طریق پیوند مناسب وب با ساختار داینامیک اپلیکیشن تا حد ممکن  امکان دستکاری و تغییردهی را برای برنامه نویسان در این محیط فراهم کرده است. برای مثال با پیاده سازی متدهای مورد نیاز ، برنامه نویس قادر خواهد بود فرایند شروع ، لود کردن ، پایان یافتن لود و خطاهای را به خوبی مدیریت بکند.  از این رو اگر می خواهید به عنوان بخشی از رابط کاربر خود HTML را نمایش دهید، می توانید از WebView در اپلیکیشن خود استفاده کنید:در این مثال  شما با بکارگیری موارد زیردر یک وب ویو آشنا خواهید شد:

1. باز کردن آدرس در وب.
2. نمایش progress bar قبل از بارگذاری کامل صفحه.
3. بازکردن وب در قالب درونی خود وب ویو.

گر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید. بعد از لود کامل برنامه ، در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
      
   <WebView  
    android:id="@+id/webView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>       
</LinearLayout>

سپس به سراغ کلاس MainActivity  رفته و کدهای زیر به آن اضافه می کنیم:

package com.example.psrd.menuandroid;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    //private Button button;
    private WebView webView;
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Get webview
        webView = (WebView) findViewById(R.id.webView1);
// متدی برای اعمال تنظیمات و کنترل فرایند اجرای وب ویو
        startWebView("http://www.psrd.ir");

    }

    private void startWebView(String url) {

        //Create new webview Client to show progress dialog
        //When opening a url or click on link

        webView.setWebViewClient(new WebViewClient() {
            ProgressDialog progressDialog;

            //باز شدن صفحات در خود وب ویو
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            //نشان دادن میزان پیشرفت قبل از لود کامل
            public void onLoadResource (WebView view, String url) {
                if (progressDialog == null) {
                    // in standard case YourActivity.this
                    progressDialog = new ProgressDialog(MainActivity.this);
                    progressDialog.setMessage("در حال بارگیری...");
                    progressDialog.show();
                }
            }
            public void onPageFinished(WebView view, String url) {
                try{
                    if (progressDialog.isShowing()) {
                        progressDialog.dismiss();
                        progressDialog = null;
                    }
                }catch(Exception exception){
                    exception.printStackTrace();
                }
            }

        });

        // تنظیمات کلی مربوط به وب ویو
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(false);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.loadUrl(url);


    }

    // Open previous opened link from history on webview when back button pressed

    @Override
    // تعریف عملکرد دکمه بازگشت در خود دیوایس
    public void onBackPressed() {
        if(webView.canGoBack()) {
            webView.goBack();
        } else {
            // Let the system handle the back button
            super.onBackPressed();
        }
    }

}

 

در نهایت فایل اندروید استودیو را باز کرده و مجوز دسترسی به اینترنت را که در ذیل با رنگ قرمز مشخص شده استبه مانیفیست برنامه خوداضافه می کنیم:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.psrd.Webview">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

حال می توانید پروژه خودتان را اجرا کنید و نتیجه کار خود را ببینید

 

 

 


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --