سبد (0)

آموزش WebView در اندروید

آموزش WebView  در اندروید

Webview یک نوع ویو است که صفحات وب را داخل برنامه ی شما نمایش می دهد. شما همچنین می توانید رشته ی HTML را مشخص کرده و با استفاده از webview آن را داخل برنامه ی خود نشان دهید. Webview برنامه ی شما را به یک برنامه ی وب تبدیل می کند.

برای افزودن webview به برنامه ی خود باید <WebView>را به لایه ی xml خود اضافه کنید. ;i به شکل زیر می باشد

 

<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/webview"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
/>

برای استفاده از آن باید یک مرجع از این ویو در فایل جاوا به دست آورید. برای گرفتن مرجع یک شئ از کلاس Webview ایجاد کنید. ترکیب آن مانند زیر می باشد

 

WebView browser = (WebView) findViewById(R.id.webview);

برای بارگذاری یک وب url در داخل Webview، باید متد loadUrl(String url)را از کلاس WebView فرابخوانید و url مورد نیاز را فرابخوانید. ترکیب آن به شکل زیر می باشد

 

browser.loadUrl("http://www.google.com");

علاوه بر بارگذاری url، با استفاده از متد های تعریف شده در کلاس WebView می توانید کنترل بیشتری روی Webview خود داشته باشید. لیست این متد ها را در جدول زیر می بینید.

  • canGoBack()

    این متد مشخص می کند که آیا WebView دارای یک آیتم back history می باشد یا نه.

  • canGoForward()

    این متد مشخص می کند که آیا WebView دارای یک آیتم forward history می باشد یا نه.

  • clearHistory()

    این متد سابقه ی forward و backward مربوط به WebView را واضح می کند.

  • destroy()

    این متد وضعیت داخلی WebView را از بین می برد.

  • findAllAsync(String find)

    این متد همه ی نمونه های رشته را پیدا کرده و آنها را مشخص میکند.

  • getProgress()

    این متد پیشرفت صفحه ی فعلی را به دست می آورد.

  • getTitle()

    این متد تیتر صفحه ی فعلی را بر میگرداند .

  • getUrl()

    این متد url صفحه ی فعلی را بر میگرداند .

اگر روی هر لینک از صفحه ی وب در داخل WebView کلیک کنید، آن صفحه در داخل WebView شما بارگذاری نخواهد شد. برای این کار باید کلاس شما  از WebViewClient ارث بری کند و متد آن پیاده سازی شود. ترکیب آن در زیر ارائه شده است.

 

private class MyBrowser extends WebViewClient {
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
      view.loadUrl(url);
      return true;
   }
}

 مثال

در اینجا مثالی را می بینید که استفاده از لایه ی WebView را توضیح می دهد. این مثال یک برنامه ی وب پایه ایجاد می کند که از شما در مورد مشخص کردن یک url خواهد پرسید و وب سایت این url را در داخل WebView بارگذاری خواهد کرد.

برای انجام این مثال نیاز است آن را روی دستگاهی اجرا کنید که به اینترنت متصل است.

  • برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان  WebView  به عنوان بسته ی com.PRG.webview نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.

  • فایل src/MainActivity.java را برای افزودن کد WebView تغییر دهید.

  • res/layout/activity_main را برای افزودن مولفه های XML مربوطه تغییر دهید.

  • AndroidManifest.xml را برای افزودن اجازه های لازم تغییر دهید.

  • برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن نصب کنید و نتایج را بررسی کنید.

در زیر محتوای فایل تغییریافته MainActivity.java را مشاهده می کنید.

 

package com.PRG.webview;

import android.app.Activity;
import android.os.Bundle;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.webkit.WebView;
import android.webkit.WebViewClient;

import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class MainActivity extends Activity  {
   Button b1;
   EditText ed1;
   
   private WebView wv1;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      b1=(Button)findViewById(R.id.button);
      ed1=(EditText)findViewById(R.id.editText);
      
      wv1=(WebView)findViewById(R.id.webView);
      wv1.setWebViewClient(new MyBrowser());
      
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String url = ed1.getText().toString();
            
            wv1.getSettings().setLoadsImagesAutomatically(true);
            wv1.getSettings().setJavaScriptEnabled(true);
            wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
            wv1.loadUrl(url);
         }
      });
   }
   
   private class MyBrowser extends WebViewClient {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
      }
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

در ادامه محتوای تغییریافته ی activity_main.xml را مشاهده می کنید.

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView android:text="WebView" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:hint="Enter Text"
      android:focusable="true"
      android:textColorHighlight="#ff7eff15"
      android:textColorHint="#ffff25e6"
      android:layout_marginTop="46dp"
      android:layout_below="@+id/imageView"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignRight="@+id/imageView"
      android:layout_alignEnd="@+id/imageView" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Enter"
      android:id="@+id/button"
      android:layout_alignTop="@+id/editText"
      android:layout_toRightOf="@+id/imageView"
      android:layout_toEndOf="@+id/imageView" />
      
   <WebView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/webView"
      android:layout_below="@+id/button"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignParentBottom="true" />
      
</RelativeLayout>

در ادامه محتوای string.xml می باشد.

 

<resources>
   <string name="app_name">My Application</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
</resources>

در ادامه محتوای فایل AndroidManifest.xml  را می بینید.

 

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

اجازه بدهید برنامه ی WebView شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید.

دستگاه موبایل خود را به عنوان یک گزینه انتخاب کنید.

اکنون یک url در فیلد url مشخص کنید و دکمه ی Browse را فشار دهید که ظاهرا وب سایت آغاز به کار می کند. اما قبل از آن لطفا مطمئن شوید که به اینترنت متصل هستید. پس از فشار دادن دکمه صفحه ی زیر ظاهر خواهد شد.

توجه داشته باشید که تنها با تغییر url در فیلد url، WebView وبسایت مورد نظر شما را باز خواهد کرد.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه