Android---54---WebView初學,androidwebview

來源:互聯網
上載者:User

Android---54---WebView初學,androidwebview

webView 組件本身就是一個瀏覽器實現,它的核心基於WebKit

 

1.使用WebView瀏覽網頁:

常用方法:
void goBack():後退 
void goForward():前進
void loadUrl (String url):載入指定的URL對應的網頁
void loadUrl("file:///android_asset/XX.html"):載入本地檔案 
boolean zoomIn():放大網頁
boolean zoomOut():縮小網頁

 

Demo:

 

顯示百度網頁

 

布局檔案:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <EditText            android:id="@+id/url"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:layout_weight="1" />        <Button            android:id="@+id/go"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="訪問" />    </LinearLayout>    <WebView        android:id="@+id/web"        android:layout_width="fill_parent"        android:layout_height="fill_parent" /></LinearLayout>


 

Activity代碼:

 

 

public class MainActivity extends Activity {WebView show;EditText urlText;Button goButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);show = (WebView) findViewById(R.id.web);show.getSettings().setJavaScriptEnabled(true);goButton = (Button) findViewById(R.id.go);urlText = (EditText) findViewById(R.id.url);goButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String path = urlText.getText().toString();show.loadUrl(path);}});}}


 

 

2.使用WebView載入HTML代碼:

WebView提供了一個方法用於載入HTML代碼:
loadData(String data ,String mimeType ,String encoding):

data:指定需要載入的HTML代碼
mimeType:指定HTML代碼的MIME類型,對於HTML代碼可指定為text/html
encoding:指定HTML代碼編碼所用的字元集,比如GBK

 

 

HTML代碼:

 

<html><head<title>無標題文檔</title></head><body><p>使用WebView載入HTML代碼:開啟百度網頁:<a href="http://www.baidu.com"> http://www.baidu.com</a></p></body></html>


 

Activity代碼:

 

 

public class MainActivity extends Activity {WebView show;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);show = (WebView) findViewById(R.id.web);StringBuilder sb = new StringBuilder();sb.append("<html>" + "<head" + "<title>無標題文檔</title>" + "</head>"+ "<body>" + "<p>" + "使用WebView載入HTML代碼:" + "開啟百度網頁:"+ "<a href='http://www.baidu.com'> http://www.baidu.com</a>"+ "</p>" + "</body>" + "</html>");// 這個方法顯示中文是亂碼// show.loadData(sb.toString(), "text/html", "utf-8");show.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8",null);}}


 

 

 

3.使用WebView中的JavaScript調用Android方法:

 

為了讓WebView中的JavaScript指令碼調用Android方法,WebView提供了一個WebSettings工具類

調用其中的setJavaScriptEnabled (true)即可讓WebView中的JavaScript調用Android方法。

 

addJavascriptInterface (Object object ,String name )方法負責把object對象暴露成JavaScript中的name對象


setAllowFileAccess(true);// 設定允許訪問檔案資料
setBuiltInZoomControls(true);// 設定支援縮放
setSavePassword(false); // 設定是否儲存密碼
setUserAgentString("Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X;en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334bSafari/531.21.10");//支援各種不同的裝置

 

 

步驟:
1.調用WebView關聯的WebSettings的setJavaScriptEnabled (true)啟用JavaScript調用功能
2.調用addJavascriptInterface ()方法將object對象暴露給JavaScript
3.在JavaScript指令碼中通過剛才暴露的name對象調用Android方法

 


Activity:

 

 

public class JsCallAndroid extends Activity {WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_js_call_android);webView = (WebView) findViewById(R.id.webview);//在assets檔案夾中的testwebView.loadUrl("file:///android_asset/test.html");WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true);// 將MyObject對象暴露給JavaScript指令碼// 這樣test.html頁面中的JavaScript可以通過myObj來調用MyObject的方法webView.addJavascriptInterface(new MyObject(this), "myObj");}}


 

 

MyObject:

 

 

public class MyObject {Context mContext;MyObject(Context c) {mContext = c;}// 該方法將會暴露給JavaScript指令碼調用public void showToast(String name) {Toast.makeText(mContext, name + ",您好!", Toast.LENGTH_LONG).show();}// 該方法將會暴露給JavaScript指令碼調用public void showList() {// 顯示一個普通的列表對話方塊new AlertDialog.Builder(mContext).setTitle("圖書列表").setIcon(R.drawable.ic_launcher).setItems(new String[] { "瘋狂Java講義", "瘋狂Android講義","輕量級Java EE公司專屬應用程式實戰" }, null).setPositiveButton("確定", null).create().show();}}


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.