آموزش webview + html در برنامه نویسی اندروید

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش webview + html در برنامه نویسی اندروید می پردازیم قبلا آموزشی در مورد webview ایجاد کرده بودیم ولی تنها به بارگذاری سایت در آن بسنده کرده بودیم ولی در اینبار یاد می گیرد چه طور یک فایل html که در پوشه assets قرار داده می شود چگونه در webview بارگذاری شود با ما همراه باشید.
قبلا آموزش ایجاد پوشه assets را قرار داده بودیم پس در اینجا دیگر به آن نمی پردازیم شما می توانید به آموزش های قبلی مراجعه کنید.
بعد از ایجاد پوشه assets فایل html را که می خواهید برای شما در webview نمایش داده شود را در پوشه assets قرار دهید ما یک نمونه ساده از html را در ادامه برای شما قرار میدهیم.

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Android WebView By Programchi.ir</title>
</head>
<body>
<h1>این یک تست است !</h1>
این یک متن تیست است و این آموزش در سایت orjinakteb.com ایجاد شده است.
</body>
</html>

این فایل را به نام sample.html ذخیره کنید و در پوشه assets قرار دهید.
حالا برویم به سراغ کد برنامه یک فایل به نام activity_main.xml ایجاد کنید و (این فایل باید در res/layout ایجاد شود) و سپس کد زیر را در آن قرار دهید.

<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"
tools:context=".MainActivity">
<WebView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/webView"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
</RelativeLayout>

در layout خودمان فقط یک WebView قرار داده ایم.
حالا یک فایل به نام MainActivtiy.java ایجاد کنید (کد اکتیویتی ما می شود) و کد زیر را در آن قرار دهید.

package ir.programchi;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView htmlWebView = (WebView)findViewById(R.id.webView);
        WebSettings webSetting = htmlWebView.getSettings();
        webSetting.setJavaScriptEnabled(true);
        webSetting.setDisplayZoomControls(true);
        String htmlFilename = "sample.html";
        AssetManager mgr = getBaseContext().getAssets();
        try {
            InputStream in = mgr.open(htmlFilename, AssetManager.ACCESS_BUFFER);
            String htmlContentInStringFormat = StreamToString(in);
            in.close();
            htmlWebView.loadDataWithBaseURL(null, htmlContentInStringFormat, "text/html", "utf-8", null);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static String StreamToString(InputStream in) throws IOException {
        if(in == null) {
            return "";
        }
        Writer writer = new StringWriter();
        char[] buffer = new char[1024];
        try {
            Reader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
            int n;
            while ((n = reader.read(buffer)) != -1) {
                writer.write(buffer, 0, n);
            }
        } finally {
        }
        return writer.toString();
    }
}

 
قبلتر webview را آموزش داده بودیم برای اینکه اطلاعاتان تکمیل شود پیشنهاد می کنم آموزش قبلی را مطالعه کنید در ابتدا view مربوط به WebView را به دست آوردیم سپس جاوااسکریپ را فعال کردیم همینطور امکان zoom کردن رو برای اینکه مسیر فایل ما که در پوشه assets وجود دارد را به دست بیاریم از AssetManager استفاده کردیم و مثل همیشه برای اینکه آن فایل را بخوانیم از inputstream استفاده کردیم شاید کد بالا کمی برای شما پیچیده باشد.
برای اینکه بخواهید فایل html را به سادگی اما کمی آروم لود کنید می تونید از کد زیر استفاده کنید.

htmlWebView.loadUrl("file:///android_asset/sample.html");

به سادگی دید که میشه کد یک خطی زیر را با کد بالا جایگزین کرد اما کدی که در بالا نوشته شده است خیلی سریع تر فایل های حجیم را بارگذاری کنید.
 
این آموزش هم به پایان رسید.
 
موفق و موید باشید.

مطالعه بیشتر