最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android WebView 應(yīng)用界面開發(fā)教程

 更新時間:2016年08月05日 11:40:29   投稿:mrr  
WebView組件本身就是一個瀏覽器實現(xiàn),開發(fā)者可以直接在WebView中使用聚合(Polymer)和Material設(shè)計。接下來通過本文給大家介紹Android WebView 應(yīng)用界面開發(fā)教程,一起看下吧

WebView組件本身就是一個瀏覽器實現(xiàn),Android5.0增強的WebView基于Chromium M37,直接支持WebRTC、WebAudio、WebGL。開發(fā)者可以直接在WebView中使用聚合(Polymer)和Material設(shè)計。

一.WebView瀏覽網(wǎng)頁(加載線上URL)

WebView提供了很多方法執(zhí)行瀏覽器操作,常用方法如下:

void goBack():后退
void goForward():前進。
void goBackOrForward(int step):step為正表示前進,step為負(fù)表示后退。
void loadUrl(String url):加載指定URL對應(yīng)的網(wǎng)頁。
boolean zoomIn():放大網(wǎng)頁。
boolean zoomOut():縮小網(wǎng)頁。

實例:迷你瀏覽器

該實例包含兩個界面,第一個界面包括輸入網(wǎng)址和打開網(wǎng)址,第二個界面包含一個WebView,用于顯示第一個界面輸入的URL對應(yīng)的界面。程序代碼如下:

第一個界面

public class MainActivity extends AppCompatActivity {
private EditText mEditUrl;
private Button mBtnOpen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditUrl = (EditText) findViewById(R.id.edit_url);
mBtnOpen = (Button) findViewById(R.id.btn_open);
mBtnOpen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
String url = mEditUrl.getText().toString();
intent.putExtra("url", url);
startActivity(intent);
}
});
}
}

這個界面很簡單,一個輸入框,一個按鈕,分別用于輸入網(wǎng)址和打開WebView。

第二個界面

public class WebViewActivity extends AppCompatActivity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
mWebView = (WebView) findViewById(R.id.web_view);
Intent intent = getIntent();
String url = intent.getStringExtra("url");
mWebView.loadUrl(url);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient(){
});
}
@Override
public void onBackPressed() {
if (mWebView != null && mWebView.canGoBack()){
mWebView.goBack();
}else {
super.onBackPressed();
}
}
}

這段代碼調(diào)用WebView的loadUrl(String url)方法加載、顯示該URL對應(yīng)的網(wǎng)頁,并設(shè)置使其支持JavaScript。如果打開WebView過程中跳轉(zhuǎn)到瀏覽器,則通過設(shè)置WebViewClient來是其在WebView中顯示。

并重寫了onBackPressed()方法,當(dāng)WebView不為空且WebView可以回退時,返回上一個WebView界面,而不是直接回退到上一個Activity。

由于該應(yīng)用需要訪問互聯(lián)網(wǎng),所以需要在AndroidManifest.xml中配置:

<uses-permission android:name="android.permission.INTERNET"/>

該實例的效果圖如下:

二.WebView加載HTML代碼

WebView提供了一個loadData(String data, String mimeType, String encoding)方法,該方法可用于加載并顯示HTML代碼,但該方法會發(fā)生亂碼。

WebView還提供了一個loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)方法,該方法是loadData(String data, String mimeType, String encoding)方法的增強版,不會產(chǎn)生亂碼。該方法的幾個參數(shù)說明:

data:指定要加載的HTML代碼。

mimeType:指定HTML的MIME類型,對于HTML可指定為text/html。

encoding:指定HTML代碼編碼所用的字符集,比如指定為GBK。

WebView加載HTML代碼:

public class MainActivity extends AppCompatActivity {
private WebView mShowWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mShowWebView = (WebView) findViewById(R.id.show_web_view);
StringBuilder sb = new StringBuilder();
//拼接一段HTML代碼
sb.append("<html>");
sb.append("<head>");
sb.append("<title> 歡迎您 </title>");
sb.append("</head>");
sb.append("<body>");
sb.append("<h2> 歡迎您訪問<a href = \"http:www.baicu.com\">" + "百度一下</a></h2>");
sb.append("</body>");
sb.append("</html");
//加載并顯示HTML代碼
mShowWebView.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8", null);
}
}

該實例運行效果如下:

三.WebView中的JavaScript調(diào)用Android方法

在WebView中調(diào)用Android方法需要三步:

調(diào)用WebView關(guān)聯(lián)的WebSettings的setJavaScriptEnabled(true)啟用JavaScript調(diào)用功能。

調(diào)用WebView的addJavaScriptInterface(Object object, String name)方法將object對象暴露給JavaScript對象。

在JavaScript腳本中通過剛才暴露的name對象調(diào)用Android方法。

寫一個在JavaScript中調(diào)用Android方法的實例,該實例界面包含一個WebView組件,用于顯示HTML頁面。Activity代碼如下:

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.web_view);
//使用file協(xié)議加載本地assets目錄下的HTML頁面
mWebView.loadUrl("file:///android_asset/test.html");
//獲取WebView的設(shè)置對象
WebSettings webSettings = mWebView.getSettings();
//開啟JavaScript調(diào)用
webSettings.setJavaScriptEnabled(true);
//將MyObject對象暴露給JavaScript對象
mWebView.addJavascriptInterface(new MyObject(this), "myObj");
}
}

在上面代碼中開啟了JavaScript調(diào)用Android方法的功能,并將Android應(yīng)用中的MyObject對象暴露給JavaScript腳本,暴露成JavaScript腳本中名為myObj的對象。

MyObject代碼如下:

public class MyObject {
private Context context;
public MyObject(Context context) {
this.context = context;
}
//該方法將會暴露給JavaScript腳本調(diào)用
@JavascriptInterface
public void showToast(String name) {
Toast.makeText(context, name + ",您好!", Toast.LENGTH_SHORT).show();
}
//該方法將會暴露給JavaScript腳本調(diào)用
@JavascriptInterface
public void showList() {
//顯示一個普通的列表對話框
new AlertDialog.Builder(context)
.setTitle("圖書列表")
.setIcon(R.mipmap.ic_launcher)
.setItems(new String[]{"Head First Android", "Head First Java", "Thinking in Java"}, null)
.setPositiveButton("確定", null)
.create()
.show();
}
}

MyObject中包含了兩個方法,showToast()和showList()方法,且這兩個方法使用了@JavascriptInterface修飾,使得這兩個方法會暴露給JavaScript腳本,從而允許JavaScript腳本通過myObj來調(diào)用這兩個方法。HTML頁面代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title> Js調(diào)用Android</title>
</head>
<body>
<!-- 注意此處的myObj是Android暴露出來的對象-->
<input type="button" value="打招呼"
onclick="myObj.showToast('Android');"/>
<input type="button" value="圖書列表"
onclick="myObj.showList();"/>
</body>
</html>

當(dāng)用戶點擊頁面上的兩個按鈕時,該頁面的JavaScript腳本會通過myObj調(diào)用Android方法。

運行該實例,點擊第一個按鈕,效果圖如下:

點擊第二個按鈕,效果圖如下:

 

以上所述是小編給大家介紹的Android WebView 應(yīng)用界面開發(fā)教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 關(guān)于Android內(nèi)存緩存LruCache的使用及其源碼解析

    關(guān)于Android內(nèi)存緩存LruCache的使用及其源碼解析

    LruCache作為內(nèi)存緩存,使用強引用方式緩存有限個數(shù)據(jù),當(dāng)緩存的某個數(shù)據(jù)被訪問時,它就會被移動到隊列的頭部,本文詳細(xì)介紹了關(guān)于Android內(nèi)存緩存LruCache的使用及其源碼解析,需要的朋友可以參考下
    2023-05-05
  • Android 第三方應(yīng)用接入微信平臺研究情況分享(一)

    Android 第三方應(yīng)用接入微信平臺研究情況分享(一)

    微信平臺開放后倒是挺火的,許多第三方應(yīng)用都想試下接入微信這個平臺,畢竟可以利用微信建立起來的關(guān)系鏈來拓展自己的應(yīng)用還是挺不錯的 最近由于實習(xí)需要也在研究這個東西,這里把我的整個研究情況給出來
    2013-01-01
  • Android GPS詳解及示例代碼

    Android GPS詳解及示例代碼

    本文主要講解Android GPS,這里整理了GPS 的基礎(chǔ)知識資料,并提供示例代碼和實現(xiàn)效果圖,有興趣的小伙伴可以參考下
    2016-08-08
  • Android開發(fā)改變字體顏色方法

    Android開發(fā)改變字體顏色方法

    用以下方法基本上可以解決大多數(shù)字體顏色設(shè)置問題,先發(fā)一篇,后續(xù)繼續(xù)發(fā)一篇高級的,通過用戶選擇的方式,改變字體顏色。
    2015-05-05
  • Android創(chuàng)建一個Activity的方法分析

    Android創(chuàng)建一個Activity的方法分析

    這篇文章主要介紹了Android創(chuàng)建一個Activity的方法,結(jié)合實例形式分析了Android創(chuàng)建Activity的具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • Android 圖片特效處理的方法實例

    Android 圖片特效處理的方法實例

    Android 圖片特效處理的方法實例,需要的朋友可以參考一下
    2013-03-03
  • Android分屏多窗口的實踐代碼

    Android分屏多窗口的實踐代碼

    這篇文章主要介紹了Android分屏多窗口的實踐代碼,需要的朋友可以參考下
    2017-01-01
  • Android創(chuàng)建和使用數(shù)據(jù)庫SQLIte

    Android創(chuàng)建和使用數(shù)據(jù)庫SQLIte

    這篇文章主要為大家詳細(xì)介紹了Android創(chuàng)建和使用數(shù)據(jù)庫SQLIte的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android對圖片Drawable實現(xiàn)變色示例代碼

    Android對圖片Drawable實現(xiàn)變色示例代碼

    這篇文章主要給大家介紹了關(guān)于Android對圖片Drawable實現(xiàn)變色的相關(guān)資料,文中通過示例代碼將實現(xiàn)的方法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • Flutter 全局點擊空白處隱藏鍵盤實戰(zhàn)

    Flutter 全局點擊空白處隱藏鍵盤實戰(zhàn)

    這篇文章主要介紹了Flutter 全局點擊空白處隱藏鍵盤實戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論

铜梁县| 封丘县| 都昌县| 雅江县| 司法| 齐齐哈尔市| 黑河市| 临湘市| 咸阳市| 葵青区| 赤水市| 绵阳市| 临夏市| 收藏| 屯留县| 花垣县| 河西区| 北辰区| 呈贡县| 始兴县| 安仁县| 双流县| 应城市| 蒙自县| 安顺市| 栖霞市| 闸北区| 新沂市| 喀喇沁旗| 新河县| 司法| 富宁县| 石台县| 凤台县| 海宁市| 柏乡县| 随州市| 峨边| 钟祥市| 海晏县| 柳州市|