Android
 Computer >> コンピューター >  >> プログラミング >> Android

Android WebViewでURL読み込み中にプログレスバーを表示する方法

このチュートリアルでは、AndroidアプリでWebViewを使用してURLを読み込む際に、ローディング中であることをユーザーに伝えるためのプログレスバーを表示する方法を解説します。ページの読み込みには時間がかかることがあるため、プログレスバーを表示することでユーザー体験を大幅に向上させることができます。

手順1:新しいプロジェクトを作成する

Android Studioを開き、「File」→「New Project」を選択して、必要な情報を入力し、新しいプロジェクトを作成します。

手順2:レイアウトファイル(activity_main.xml)を編集する

res/layout/activity_main.xml に以下のコードを追加します。ここでは、画面中央に大きなプログレスバーと、その下にWebViewを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <ProgressBar
        android:id="@+id/progressBar"
        android:max="3"
        android:progress="100"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerInParent="true" />
    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/progressBar"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

手順3:MainActivity.javaを実装する

src/MainActivity.java に以下のコードを追加します。ポイントは、WebViewClientの onPageFinished() メソッド内でページの読み込みが完了したタイミングを検知し、プログレスバーを非表示(GONE)にしている点です。

import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
    WebView webview;
    ProgressBar progressBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webview = findViewById(R.id.webView);
        progressBar = findViewById(R.id.progressBar);
        webview.setWebViewClient(new WebViewClient());
        webview.loadUrl("https://www.google.com");
    }
    public class WebViewClient extends android.webkit.WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            progressBar.setVisibility(View.GONE);
        }
    }
}

このコードでは、onPageStarted() でページ読み込み開始時の処理、shouldOverrideUrlLoading() でリンククリック時にも同じWebView内でページを開く処理、そして onPageFinished() で読み込み完了時にプログレスバーを非表示にする処理を行っています。

手順4:AndroidManifest.xmlにインターネット権限を追加する

Web上のURLにアクセスするため、androidManifest.xml に以下のように INTERNET パーミッションを追加します。これを忘れるとWebViewが正しく動作しないので注意してください。

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

アプリを実行して確認する

それでは、実際にアプリを実行してみましょう。Android端末をパソコンに接続した状態で、Android Studioからプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。接続したモバイルデバイスを選択して実行すると、まず画面中央にプログレスバーが表示され、Googleのページの読み込みが完了すると自動的に消えてWebViewの内容が表示されます。

Android WebViewでURL読み込み中にプログレスバーを表示する方法

  1. 【Android】URLをエンコードする方法をわかりやすく解説|URLEncoderの使い方

    AndroidでURLをエンコードするには? 本記事では、AndroidアプリでURLを適切にエンコードする方法を、実際に動作するサンプルコードとともに解説します。 URLに検索キーワードなどのパラメータを含めたい場合、スペースや日本語などの特殊文字がそのまま含まれていると、正しくリクエストが送信できないことがあります。そんなときに役立つのが java.net.URLEncoder クラスです。このクラスを使えば、文字列をUTF-8などでエンコードし、URLとして安全な形式に変換できます。 手順1:新しいプロジェクトを作成する Android Studioを起動し、メニューから「File」→

  2. AndroidでWebViewのURL読み込み完了を検知する方法を解説

    はじめに この記事では、AndroidアプリにおいてWebViewがURLの読み込みを完了したタイミングを検知(リッスン)する方法を、実際に動作するサンプルコードとともに解説します。 読み込み完了を検知できるようになると、ローディング中のプログレス表示や、読み込み完了時のトースト通知など、ユーザー体験を向上させる処理を簡単に実装できるようになります。 実装手順 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから File → New Project を選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトをセットアップしてくだ