仕事で、初めてWebViewを自分で触らないといけなくなったので、その時に使用した項目をメモ。
内容としては、アプリ内部でWebViewあるサイトのWebViewを起動。
アプリ内のパーツとして用意されたボタンを押すと、APIを叩いて色々処理をするという内容。
android開発として働いていますが、WebView自体たいしてやっていなかったので、やりながら調べました。
実装しなければいけないこと、
1.WebView内にボタンのパーツを置く(レイアウト)
2.URLが変更されるごとにAPIを叩いて、処理を実行する。
こんぐらいだったでしょうか?
まずは、アプリ内で起動するシンプルなWebViewを作成します。
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com.example.jiji30000.webview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.webview); // 外部ブラウザを立ち上げない設定その他いろいろcallbackとか mWebView.setWebViewClient(new WebViewClient()); mWebView.loadUrl("http://tabelog.com/"); } @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 false; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } |
大事な部分は外部のブラウザーを立ち上げないために、WebviewにセットするWebViewClientです。
これには、様々なcallbackが定義されていて、ページが読み込まれたなどの、
リスナーを管理するなどできます。
URLをセットする際は以下を利用します。
mWebView.loadUrl(“https:tabelog.com”);
あとは、レイアウトファイルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<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"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="wrap_content"> </WebView> </RelativeLayout> |
単にWevViewをレイアウトに中にいれて、acitivty内で、findViewByIdしているだけですね。