Android與H5互調(通過實例來瞭解Hybrid App)

来源:http://www.cnblogs.com/wujiancheng/archive/2017/05/07/6821223.html
-Advertisement-
Play Games

前些日子,Android原生開發將被取締的吵得火熱,JavaScript是能做一個完全的APP,但只使用JavaScript做出來的APP也不會牛逼到哪裡去。最好的是混合(Hybrid)開發,在需要的時候使用JavaScript,各有好處。 Hybrid App中原生頁面 VS H5頁面:http: ...


  前些日子,Android原生開發將被取締的吵得火熱,JavaScript是能做一個完全的APP,但只使用JavaScript做出來的APP也不會牛逼到哪裡去。最好的是混合(Hybrid)開發,在需要的時候使用JavaScript,各有好處。

 

  Hybrid App中原生頁面 VS H5頁面:http://www.jianshu.com/p/00ff5664e000

  原生頁面和H5頁面的優劣勢分析:

 

原生頁面

優勢:

(1)運行速度比較快

(2)能使用設備的底層功能,如攝像頭、方向感測器、重力感測器、撥號、GPS、語音、簡訊、藍牙等

(3)在界面設計、功能模塊、操作邏輯等層面相較web更易做到App的便捷性和舒適性,功能更加強大

(4)節省流量

劣勢:

(1)不同的操作系統(如Android和iOS)需要獨立的進行開發,使用其各自的開發包、開發工具和控制項

(2)每次有更新,都需要重新打包一次發佈到應用平臺上,且每次要向各個應用商店進行提交審核。之後用戶需要手動進行點擊更新安裝(安裝成本較高)

(3)開發成本比較高,尤其需要適配各種機型時(如Android應用,需要適配各種Android手機)

 

H5頁面

優勢:

(1)由於是運行在瀏覽器上,所以只需要開發一次便可以在不同的操作系統上顯示

(2)迭代版本時,不需要打包便可以發佈(實時更新、快速迭代),與雲端實現實時數據交互

(3)開發成本相對較低,對瀏覽器的適配較簡單,且發佈門檻相對較低

劣勢:

(1)每次打開頁面,都得重新載入,獲取數據...

(2)過於依賴網路,速度無法保證。特別在弱網環境下,不僅耗費流量而且載入緩慢,就算是WiFi情況下也不容樂觀

(3)只能使用有限的設備底層功能(無法使用攝像頭、方向感測器、重力感測器、撥號、GPS、語音、簡訊、藍牙等功能)

(4)仍處於發展階段,部分功能無法在基於現有技術的瀏覽器基礎上實現,且無法全面的顯示最完美的用戶體驗,只能用現有技術去彌去找最佳解決方案

 

  分析淘寶中的原生頁面和H5頁面

 

----------------------------------------------------------------------------------------------------------------------------

 ---------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

 ---------------------------------------------------------------------------------------------------------------------------

 

 

 

由上圖得知,是否有底部tab導航欄也無法區別出H5頁面

 

----------------------------------------------------------------------------------------------------------------------------

 ---------------------------------------------------------------------------------------------------------------------------

如下圖是一個原生與webview混排的界面,紅色線框是各控制項的繪製邊界,中間那一大塊佈局豐富的界面沒有顯示出很多邊界紅色,就是H5實現的。

 

 

  案例:

JS調用Java,將Java中的Json數據顯示在H5界面,點擊調起視頻播放器

  效果圖: 

 

  初始化webView: webview = (WebView) findViewById(R.id.webview);

  設置WebSettings

 1        //設置支持javaScript
 2         webSettings = webview.getSettings();
 3         //設置支持javaScript
 4         webSettings.setJavaScriptEnabled(true);
 5         //設置文字大小
 6         webSettings.setTextZoom(100);
 7         //不讓從當前網頁跳轉到系統的瀏覽器中
 8         webview.setWebViewClient(new WebViewClient() {
 9             //當載入頁面完成的時候回調
10             @Override
11             public void onPageFinished(WebView view, String url) {
12                 super.onPageFinished(view, url);
13             }
14         });

 

1      //添加javaScript介面
2      webview.addJavascriptInterface(new MyJavascriptInterface(), "Android");
3      // body onload="javascript:Android.showcontacts()"與內部類中的方法相同
// "Android"必須與HTMl中的body onload="javascript:Android.showcontacts()"相同
4 //可以載入網路的頁面,也可以載入應用內置的頁面 5 webview.loadUrl("http://192.168.191.1:8080/JsCallJava.html");

 

 

 

 

javaScript介面的內部類設置如下:

 1 class MyJavascriptInterface {
 2         //調起Vedio
 3         @JavascriptInterface //android4.4以後瀏覽器內核改變了,但webView是使用原來的內核
 4         public void call(String video) {
 5             Intent intent = new Intent();//隱式意圖
 6             intent.setDataAndType(Uri.parse(video),"video/*");
 7             startActivity(intent);
 8         }
 9 
10         //載入Vedio信息
11         @JavascriptInterface
12         public void showcontacts(){
13             String json = "[{\"name\":\"LikeYou\",\"video\":\"http://192.168.191.1:8080/LikeYou.mp4\"}]";
14             // 調用JS中的方法
15             webview.loadUrl("javascript:show("+"'"+json+"'"+")");
16         }
17     }

 

  
  源碼及資源地下載 : http://www.cnblogs.com/wujiancheng/

(若沒有效果,請將build.gradle 中的targetSdkVersion改為低於19) 因為android4.4以後瀏覽器內核改了,而webView還是使用原來的webkit內核

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 周末沒出門,熬了兩個夜整理代碼、打磨圖示,給大家奉上本文。敢說最準確,因為:1. 我嚴格對照所畫時序圖的每個步驟,開發了完整的跨域單點登錄範例;2. 所有服務端步驟,都在代碼中逐一標註,跟蹤代碼就能兩相對照,實際的深入理解流程;3. SSO核心在寫Cookie、URL傳參策略,其參與對象多、邏輯分支... ...
  • 本章一開始舉了中國古代對婦女制定的 “三從四德” 的道德規範,形象地將女性在 “未嫁 出嫁 喪父” 三個不同的狀態下請示出門逛街獲得的處理,未嫁的時候,請示父親;出嫁了,請示丈夫;丈夫去世了,請示兒子。責任鏈就是:父親 丈夫 兒子。如果出嫁了,請示父親,會得到什麼結果?答案是:父親告訴他,你該去請示 ...
  • 當EditText編輯時 hint 在 6.0 手機上顯示不出來。。。。 就要增加一句話去重新設置顏色值 Android:textColorHint = "#707070" ...
  • 原文鏈接:http://blog.csdn.net/zhang31jian/article/details/23258065 獲取SharedPreferences的兩種方式: 1 調用Context對象的getSharedPreferences()方法 2 調用Activity對象的getPref ...
  • 課程1B主要講解了Android UI的ViewGroups(視圖組)、LinearLayout(線性佈局)、RelativeLayout(相對佈局),Portrait Mode(豎屏模式)、Landscape Mode(橫屏模式)以及layout_weight(佈局權重)在UI佈局中的用處。 此外... ...
  • 1.描述:獲取消息評論數據 2.介面 ...
  • 1.根據當前用戶的手機號獲取朋友圈的最新消息,可分頁顯示。 2.介面: ...
  • 一、應用場景 之前做商城應用時,會有對用戶資料的設置情況進行限制,如下: (1)用戶郵箱,應當只允許輸入英文字母,數字和@.兩個符號, (2)用戶手機,應當只能輸入數字,禁止輸入其他字元。 (3)用戶密碼,應當不能輸入空格以及中文字元等。 二、解決方案 針對用戶郵箱以及用戶手機,有以下兩種解決方案: ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...