1. 程式人生 > >ionic應用程式跳轉其它網站地址實現(themeablebrowser)相當於WebView

ionic應用程式跳轉其它網站地址實現(themeablebrowser)相當於WebView

背景介紹

可謂Android或者IOS中使用WebView給於了開發者大大的福利。那Ionic專案如何實現類似的功能呢?為了實現在ionic應用程式中呼叫其它網站地址,因此引出了以下的文章。注意:本文章適合簡單使用若您需要更高階的開發建議進入官方網址研究(網址:點選開啟連結

外掛簡介(官網直譯):

這個外掛是org.apache.cordova.inappbrowser的一個fork。它試圖保留InAppBrowser的大部分功能。實際上,對於從InAppBrowser繼承的功能的完整列表,請參閱InAppBrowser的文件。

     此外掛的目的是提供一個應用內瀏覽器,還可以配置為匹配您的應用程式的主題,以便為您的應用程式提供更加身臨其境的外觀和感覺,以及提供更一致的外觀並跨平臺感覺。

     此外掛通過呼叫在現有CordovaWebView頂部啟動應用程式內檢視

圖片示例

給出幾個示例圖

示例一  


來自微信 示例二
來自官網

內容正文:

1.外掛的安裝

cordova plugin add cordova-plugin-themeablebrowser

2.屬性整體展示

cordova.ThemeableBrowser.open('http://apache.org','_blank', {

   statusbar: {

       color: '#ffffffff'

   },

   toolbar: {

       height: 44,

       color: '#f0f0f0ff'

   },

   title: {

       color: '#003264ff',

       showPageTitle: true

   },

   backButton: {

       image: 'back',

       imagePressed: 'back_pressed',

       align: 'left',

       event: 'backPressed'

   },

   forwardButton: {

       image: 'forward',

       imagePressed: 'forward_pressed',

       align: 'left',

       event: 'forwardPressed'

   },

   closeButton: {

       image: 'close',

       imagePressed: 'close_pressed',

       align: 'left',

       event: 'closePressed'

   },

   customButtons: [

       {

           image: 'share',

           imagePressed: 'share_pressed',

           align: 'right',

           event: 'sharePressed'

       }

   ],

   menu: {

       image: 'menu',

       imagePressed: 'menu_pressed',

       title: 'Test',

       cancel: 'Cancel',

       align: 'right',

       items: [

           {

                event: 'helloPressed',

                label: 'Hello World!'

           },

           {

                event: 'testPressed',

                label: 'Test!'

           }

       ]

   },

   backButtonCanClose: true

}).addEventListener('backPressed',function(e) {

   alert('back pressed');

}).addEventListener('helloPressed',function(e) {

   alert('hello pressed');

}).addEventListener('sharePressed',function(e) {

   alert(e.url);

}).addEventListener(cordova.ThemeableBrowser.EVT_ERR,function(e) {

   console.error(e.message);

}).addEventListener(cordova.ThemeableBrowser.EVT_WRN,function(e) {

   console.log(e.message);

});

3.屬性介紹

statusbar 僅適用於iOS7+。

       color為RGBA Web十六進位制格式設定iOS 7+的狀態列顏色。例如。#fff0f0ff。預設為白色。僅適用於iOS 7+。

toolbar

       height設定工具欄的高度。預設為44。

       color以RGBA網路十六進位制格式設定瀏覽器工具欄顏色。例如。#fff0f0ff。預設為白色。另見image。

       image將影象設定為標題模式下的瀏覽器工具欄背景。此屬性引用了本機映像資源,因此它依賴於平臺。

title

       color以RGBA網路十六進位制格式設定標題文字顏色。例如。#fff0f0ff。預設為黑色。

       staticText設定標題的靜態文字。此屬性覆蓋showPageTitle(見下文)。

       showPageTitle當設定為true時,將顯示當前網頁的標題。

backButton

       image設定後退按鈕的影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       imagePressed在後退按鈕處於按下狀態下設定影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       align將按鈕對齊到left或right。預設為left。

       event當按下按鈕時,將給定文字作為事件名稱引發自定義事件。可選的。

forwardButton

       image設定向前按鈕的影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       imagePressed在其按下狀態下設定正向按鈕的影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       align將前進按鈕對準left或right。預設為left。

       event當按下向前按鈕時,將給定文字作為事件名稱引發自定義事件。可選的。

closeButton

       image設定關閉按鈕的影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       imagePressed在其按下狀態下設定關閉按鈕的影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       align對齊left或關閉按鈕right。預設為left。

       event當按下關閉按鈕時,將給定文字作為事件名稱引發。可選的。

menu

       title單擊選單按鈕時設定選單標題。僅限iOS

       cancel設定選單取消按鈕文字。僅限iOS

       image設定選單按鈕的影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       imagePressed設定選單按鈕的影象處於其按下狀態。此屬性引用了本機映像資源,因此它依賴於平臺。

       event當按下選單按鈕時,將給定文字作為事件名稱引發自定義事件。可選的。

       align將選單按鈕對準left或right。預設為left。

       items是選單開啟時要顯示的專案列表

              event定義當單擊此選單項時將被引發的事件名稱。選單事件的回撥將接收一個包含以下屬性的事件物件:url是瀏覽器中顯示的當前URL,index是所選專案的索引items。

              label定義選單項標籤文字。

       customButtons是給定時將插入工具欄的物件列表。

       image設定自定義按鈕的影象。此屬性引用了本機映像資源,因此它依賴於平臺。

       imagePressed將自定義按鈕的影象設定為按下狀態。此屬性引用了本機映像資源,因此它依賴於平臺。

       align將自定義按鈕對齊到left或right。預設為left。

       event當按下自定義按鈕時,將給定文字作為事件名稱引發自定義事件。對自定義按鈕事件的回撥將接收到包含以下屬性的事件物件:url是瀏覽器中顯示的當前URL,index是所選按鈕的索引customButtons。

backButtonCanClose當沒有更多的返回時,允許返回按鈕關閉瀏覽器。否則,返回按鈕將被禁用。

disableAnimation當設定為true時,禁用瀏覽器顯示和關閉動畫。

fullscreen當設定為true,WebView將擴充套件到應用程式的完整高度,位於工具欄下方。該標誌與透明工具欄顏色結合可能允許工具欄按鈕浮動在WebView頂部。(記住,此外掛支援RGBA顏色格式。)可選。

4.注意

1.所有屬性都是可選的,幾乎沒有預設值。如果沒有給出屬性,則不會顯示相應的UI元素。

2.所有的影象資源都引用了本機資源束。所以所有的影象都需要先匯入本機專案。在Android的情況下,將查詢影象名稱R.drawable。例如。如果影象名稱是hello_world,R.drawable.hello_world將被引用。您可能已經注意到,ThemedBrowser添加了可選選單以及自定義按鈕,您可以使用它們來響應一些簡單的使用者操作。

5.使用在任何平臺

       一次新增使用在所有平臺(不推薦使用)。

對於任何支援的物件image和imagePressed屬性,當您絕對無法匯入本機源時,有一些後備屬性可以使用,因為某些情況。

(\w+Button|menu|toolbar)

              wwwImage就像是image載入來自Cordova的www目錄的影象。當您無法匯入本機資源時,這是一個後備解決方案。image儘可能使用財產。

              wwwImagePressed就像是image載入來自Cordova的www目錄的影象。當您無法匯入本機資源時,這是一個後備解決方案。image儘可能使用財產。

              wwwImageDensity當wwwImage和/或被wwwImagePressed給予時是需要的。由於這些影象沒有從資源束載入,所以密度是未知的,因此密度需要由此屬性設定。對應於iOS' @2x,@3x字尾。

例如:

cordova.ThemeableBrowser.open('http://apache.org','_blank', {

   ...

  backButton: {

       wwwImage: 'images/back.png',

       wwwImagePressed: 'images/back_pressed.png',

       wwwImageDensity: 2,

       align: 'left',

       event: 'backPressed'

    }

   ...

});

6.對應平臺新增圖片資源

Android平臺

找到圖中的路徑(ThemeableBrowser/plugins/cordova-plugin-themeablebrowser/src/android/res/drawable-xhdpi),將png圖示複製到如下路徑中(platforms/android/res/drawable-xhdpi)。


一般放在此目錄中即可,如需想要得到圖示更好的拓展,自行建立不同的圖示放在相應的位置。

示例截圖


注意:圖片中工具欄title字型有點小可以稍稍的改動。改動如下


找到圖中位置,提現圖中內容即可,內容如下:title.setTextSize(18);

IOS平臺

IOS平臺的新增稍稍有點麻煩,以下會截圖一步一步來。

第一步 找到外掛中圖片路徑

第二步 將第一步中的Resource資料夾複製在以下檔案中(如果給資料夾存在則直接覆蓋)


注意 “巢狀瀏覽器” 為APP名字

第三步 進入platform下的IOS專案中雙擊開啟如下檔案(即開啟Xcode)

第四步 在再將圖片檔案拖拽到Xcode的如下目錄中(注意次步很重要,如果忽略則沒有返回按鈕等)


第五步 點選執行到模擬器


按照以上的步驟走,就完成了。下面展示執行截圖:


文章總結

自此,該教程結束;文中有大量的不足的地方歡迎留言指正,若有什麼疑問的地方也可以大家一起探討。整理文章不易,不喜勿噴。