Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 一二三四社区在线视频观看 ,国产高清在线精品一区在线,视频免费1区二区三区

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          2個將HTML5打包成app的方法

          來越多的開發(fā)者熱衷于使用html5+JavaScript開發(fā)移動Web App。不過,HTML5 Web APP的出現(xiàn)能否在未來取代移動應(yīng)用,就目前來說,還是個未知數(shù)。那么,有什么辦法,既可以使用HTMl5開發(fā)應(yīng) 用,又可以將其簡單封裝成APK文件呢?

          一、Android SDK中的WebView

          1.在要Activity中實(shí)例化WebView組件:WebView webView = new WebView(this);

          2.調(diào)用WebView的loadUrl()方法,設(shè)置WevView要顯示的網(wǎng)頁:

          ? 互聯(lián)網(wǎng)用:webView.loadUrl("http://www.qietu.com");

          ? 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中

          3.調(diào)用Activity的setContentView( )方法來顯示網(wǎng)頁視圖

          4.用WebView點(diǎn)鏈接看了很多頁以后為了讓W(xué)ebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點(diǎn)擊系統(tǒng)回退剪鍵,整個瀏覽器會調(diào)用finish()而結(jié)束自身,而不是回退到上一頁面

          5.需要在AndroidManifest.xml文件中添加權(quán)限,否則會出現(xiàn)Web page not available錯誤。

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

          缺點(diǎn):如果是載入的是普通網(wǎng)頁,沒有什么問題,但如果是html5,封裝后,在android2.3以上才能正常訪問,android2.2及以下,SDK中的WebView還沒完全支持HTML5

          下面是具體例子:

          MainActivity.java

          ??? package com.android.webview.activity; ?

          ??? import android.app.Activity; ?

          ??? import android.os.Bundle; ?

          ??? import android.view.KeyEvent; ?

          ??? import android.webkit.WebView; ?

          ??? public class MainActivity extends Activity { ?

          ??????? private WebView webview; ?

          ??????? @Override

          ??????? public void onCreate(Bundle savedInstanceState) { ?

          ??????????? super.onCreate(savedInstanceState); ?

          ??????????? //實(shí)例化WebView對象 ?

          ??????????? webview = new WebView(this); ?

          ??????????? //設(shè)置WebView屬性,能夠執(zhí)行Javascript腳本 ?

          ??????????? webview.getSettings().setJavaScriptEnabled(true); ?

          ??????????? //加載需要顯示的網(wǎng)頁 ?

          ??????????? webview.loadUrl("http://www.qietu.com/"); ?

          ??????????? //設(shè)置Web視圖 ?

          ??????????? setContentView(webview); ?

          ??????? } ?

          ??????? @Override

          ??????? //設(shè)置回退 ?

          ??????? //覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法 ?

          ??????? public boolean onKeyDown(int keyCode, KeyEvent event) { ?

          ??????????? if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { ?

          ??????????????? webview.goBack(); //goBack()表示返回WebView的上一頁面 ?

          ??????????????? return true; ?

          ??????????? } ?

          ??????????? return false; ?

          ??? }

          在AndroidManifest.xml文件中添加權(quán)限

          ??? <?xml version="1.0" encoding="utf-8"?>

          ??? <manifest xmlns:android="http://schemas.android.com/apk/res/android"

          ????????? package="com.android.webview.activity"

          ????????? android:versionCode="1"

          ????????? android:versionName="1.0">

          ??????? <uses-sdk android:minSdkVersion="10" />

          ??????? <application android:icon="@drawable/icon" android:label="@string/app_name">

          ??????????? <activity android:name=".MainActivity"

          ????????????????????? android:label="@string/app_name">

          ??????????????? <intent-filter>

          ??????????????????? <action android:name="android.intent.action.MAIN" />

          ??????????????????? <category android:name="android.intent.category.LAUNCHER" />

          ??????????????? </intent-filter>

          ??????????? </activity>

          ??????? </application>

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

          ??? </manifest>

          二、使用PhoneGap

          ??? PhoneGap是一個用基于HTML,CSS和JavaScript的,創(chuàng)建移動跨平臺移動應(yīng)用程序的快速開發(fā)平臺。它使開發(fā)者能夠利用 iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手機(jī)的核心功能——包括地理定位,加速器,聯(lián)系 人,聲音和振動等,此外PhoneGap擁有豐富的插件,可以以此擴(kuò)展無限的功能。PhoneGap是免費(fèi)的,但是它需要特定平臺提供的附加軟件,例如 iPhone的iPhone SDK,Android的Android SDK等,

          詳細(xì)方法請見:http://phonegap.com/start#android

          優(yōu)點(diǎn):在Eclipse中加入SDK,編程自由,完美適應(yīng)不同設(shè)備屏幕大小,適合高手使用。

          缺點(diǎn):沒有使用布局,直接加載網(wǎng)頁,不能添加廣告。

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

          切圖網(wǎng)(qietu.com)最早將psd轉(zhuǎn)html服務(wù)模式帶到國內(nèi),并首個提供響應(yīng)式、webapp前端開發(fā)的公司。專注web前端開發(fā)技術(shù),關(guān)注用戶體驗(yàn),加我們公眾微信賬號:qietuwang(長按復(fù)制)

          速入門uni-app,把想看的網(wǎng)站變APP。


          下載hbuildx,這里官方提供了幾種安裝包,有完全版,還有beta版,還有標(biāo)準(zhǔn)版,隨便下一個吧,或者直接下載標(biāo)準(zhǔn)版的,因?yàn)樗钚 ?/p>

          1.創(chuàng)建uni-app,直接選擇uni-app 默認(rèn)模版(hello-app項(xiàng)目可以拿來看看,不建議開發(fā)時使用,wap2app是針對wap轉(zhuǎn)app端的,5+app 使用htmlplus,uni-app對html5+ 進(jìn)行了整合,并建議直接使用uni-app即可,小程序那就是小程序咯,讓我們心大一點(diǎn),練習(xí)多端吧)

          關(guān)于目錄結(jié)構(gòu),可以在開放規(guī)范中看到或者直接創(chuàng)建一個heoll 模版項(xiàng)目看看,各個文件夾之間的關(guān)系和作用都比較明確,對于uni-app的配置文件需要仔細(xì)看看。

          2.配置

          manifest.json 這個文件在移動應(yīng)用中屢見不鮮,在uni-app也有關(guān)這個文件的解釋https://developer.mozilla.org/zh-CN/docs/Web/Manifest

          文件是應(yīng)用的配置文件,用于指定應(yīng)用的名稱、圖標(biāo)、權(quán)限等。個人覺得就是映射,在不同的環(huán)境下具體的左右略有不同,比如webpack 中是指向原始文件的映射關(guān)系等。

          uni-app 中有一些自定義屬性比如appid,是用來標(biāo)識云端編譯用的。https://ask.dcloud.net.cn/article/35907

          在ide中打開這個文件,會有一個新的視圖,是中文的,如果你要詳細(xì)了解關(guān)系,可以到文件目錄下打開這個文件查看或者直接點(diǎn)擊最下方的源碼視圖進(jìn)行查看。另外有一些配置可能找不到,但是在源碼視圖中可以找到,還有一些配置,默認(rèn)項(xiàng)目是沒有的,比如超時時間的設(shè)置。

          啟動圖:配置.9 圖片制作流程 https://ask.dcloud.net.cn/article/35527

          打開下載工具 draw9patch.bat(這里我沒有打開,處理文件報錯,不去深究了,看第二種方法,通過as,打開as)

          新建一個as項(xiàng)目,找一個png圖片丟到as中,右鍵創(chuàng)建.9 圖片

          打開這個文件,點(diǎn)擊鼠標(biāo)坐標(biāo)在邊上即可調(diào)整拉伸區(qū)域與內(nèi)容區(qū)域,類似下面這種,關(guān)于四個邊的概念大家去看下文檔,類似下面這種內(nèi)容居中的圖片(一般都是這樣),拉伸的時候左右兩側(cè)和上下兩側(cè)拉伸空白,在操作的時候需要先control選擇拉伸區(qū)域,然后再shift 去掉一部分的拉伸器區(qū)域~

          像這樣搞定后就行了,然后根據(jù)uni-app的規(guī)定指定圖片大小上傳。

          另外:此用法只適用與android,ios就一個個上傳吧。

          查看json源碼,其中有一項(xiàng)為第三方sdk,配置后可使用第三方sdk的集成,一些常用的第三方sdk已集成,比如授權(quán)登錄、分享、支付等。

          更多的配置自行看吧,再此不表。

          第二個配置文件 pages.json 看名字就看的出來是配置頁面用的

          關(guān)于pages,新增的頁面需要追到到page文件中,定義全局樣式后,每個page可以單獨(dú)的配置其style。

          另外在pages目錄下新增頁面的時候,配置文件中會自動追加和刪除相關(guān)page。

          其中關(guān)于導(dǎo)航欄,官方建議使用原生又uni-app提供的原生導(dǎo)航,如果自定義導(dǎo)航,可能會有很多問題,https://ask.dcloud.net.cn/article/34921

          尤其是前端導(dǎo)航與下拉刷新之間的沖突。

          關(guān)于subNVue,這里解釋一下nvue,剛開始看的時候我也有點(diǎn)懵,啥意思,vue提供的新擴(kuò)展嗎?并不是,nvue 是與native.js 結(jié)合的一種組件規(guī)范,它可以直接調(diào)用原生代碼中的api,官方建議是只是在有特定需求的地方使用nvue,

          而這里提到的subNVue 指的是通過nvue 創(chuàng)建的一種子窗口組件,它使用的是原生渲染的方式,通過窗口進(jìn)行的實(shí)現(xiàn),在做一些浮動的時候,比如遮罩蒙板,視頻彈幕這種的時候用得上。

          所以使用nvue的時候想要調(diào)試必須在終端環(huán)境,模擬器或者微信工具。如果運(yùn)行之前應(yīng)該有記錄,這里不表。

          多頁面通訊:有兩種,官方推薦新的方式,注冊監(jiān)聽

          uni.$on('page-popup', (data) => { 
           vm.title = data.title; 
           vm.content = data.content; 
          }) 
          uni.$emit('page-popup', { 
           title: '我是一個title', 
           content: '我試data content'
          }); 
          另,官方提供了一些建議:所以不要濫用它為好
          

          還有就是關(guān)于subNVue的style 并不是我們平時理解的所有樣式表,它自有規(guī)則,具體請看官網(wǎng),其中有幾個重要的屬性,比如type、position、dock。

          conditon:

          指定頁面,也就說不要不用每次啟動都要重新點(diǎn)一遍來看,只需要指定我們當(dāng)前調(diào)試的頁面即可,這個配置只在開發(fā)時候生效,正式編譯打包后不起作用。


          "condition":{ "current":0, "list":[ { "name":"me", "path":"pages/me/me", "query":"" } ] }
          

          分包:這里是針對小程序的,因?yàn)樾〕绦驅(qū)Π拇笮∮邢拗疲栽谏蟼餍〕绦虻臅r候需要對包進(jìn)行管理,小程序允許分包的存在。

          另外在配置這個文檔中還有package.json ,vue-config.json , uni.scss 的介紹

          package.json :因?yàn)閡ni-app 是基于vue的,在編譯時又是依賴與node的,所以可以添加打包文件,若是通過cli創(chuàng)建的項(xiàng)目,必須自己進(jìn)行配置,對于通過ide創(chuàng)建的項(xiàng)目,則看需求。

          vue.config.js 類似webpack它們都有配置文件或直接通過cli進(jìn)行打包或編譯。其中有一些uni-app不支持,知曉即可。

          對于內(nèi)置的scss,可以進(jìn)行應(yīng)用與修改,其中的變量通過在style標(biāo)簽中指定lang 即可進(jìn)行引用。

          另外日志什么的,有的集中類型不多說了,在HBuilder里可以使用代碼塊,可以快速補(bǔ)全。

          生命周期

          這個標(biāo)題標(biāo)紅,個人認(rèn)為生命周期對于一個框架來說非常的重要。

          1.應(yīng)用生命周期:最后一個監(jiān)聽,比如之前說的nvue和vue之間交互就用它。

          應(yīng)用生命周期監(jiān)聽一般都在APP.VUE 中進(jìn)行注冊監(jiān)聽,作為app的主入口。

          應(yīng)用啟動會,監(jiān)聽的回調(diào)執(zhí)行相關(guān)邏輯。

          h5 打印效果如下:

          2.頁面監(jiān)聽函數(shù)

          相比應(yīng)用監(jiān)聽函數(shù),頁面監(jiān)聽函數(shù)使用的是最多的,uni-app 提供了很多內(nèi)置鉤子,不截圖了,比較多。

          這里的onLoad 和onShow 給我感覺特別好,相比apicloud 每次新的頁面打開,除非設(shè)置強(qiáng)制刷新,否則會進(jìn)行緩存,要么每次打開的時候發(fā)送消息事件,一個入口還好,

          如果多個入口,會特別痛苦,除非自己再定義一個工具類什么,而uni-app的這2個鉤子,可以說完美的避開了這些瑣事,再次顯示的時候,我們可以做一些其他事情了。

          另外對于小程序中的一些固定導(dǎo)航按鈕,同樣有他們的鉤子

          并且,頁面滾動不要自己再去監(jiān)聽dom什么的了,直接提供了鉤子,方便多了。

          還有,對于原生搜索框,也就是之前提到的searchInput 也提供了回調(diào)

          關(guān)于nvue的聲明周期:基本上與vue保持一致性。

          關(guān)于各個頁面之間通訊:

          使用uni-app 提供的事件自定義監(jiān)聽機(jī)制可以對其進(jìn)行監(jiān)聽。(因?yàn)槭莡ni所以只能是終端測試)。

          全局監(jiān)聽提供了4個函數(shù):


          uni.$emit(eventName,OBJECT)uni.$on(eventName,callback)uni.$once(eventName,callback)uni.$off([eventName, callback])// 基本上vue、jqeruy 還有一些第三方庫都有類似的函數(shù)
          

          關(guān)注吧

          PP封裝是形成APP的最省錢的一種方式。你只需要擁有一個網(wǎng)址就可以通過一些技術(shù)處理封裝成一個跨iOS和Android的APP,這個過程往往只需要幾分鐘。在移動互聯(lián)網(wǎng)時代,擁有一個移動端APP是必不可少的。那么APP是怎樣封裝的呢?


          APP封裝實(shí)現(xiàn)

          封裝APP大多指Web app封裝,web app 是一種架構(gòu)型APP開發(fā)方式,通過使用框架(HTML5 APP 框架開發(fā)模式)無論是iOS還是Android,都可以實(shí)現(xiàn)跨平臺運(yùn)行。通過這個框架,你可以把網(wǎng)址封裝成APP,安裝到手機(jī)設(shè)備上。網(wǎng)址簡單說就是一個個網(wǎng)頁(html5)組成的,封裝成APP之后打開的的類似瀏覽器訪問網(wǎng)頁(html5)一樣,因此網(wǎng)頁(html5)訪問手機(jī)硬件、手機(jī)權(quán)限等都會受到限制。

          Web app封裝

          優(yōu)點(diǎn):

          1、可以直接封裝成APP,成本低

          2、只要有網(wǎng)站(網(wǎng)址)就可以封裝成APP,

          3、一次封裝生成跨端APP

          4、代碼維護(hù)方便,版本更新靈活,不受原生限制

          缺點(diǎn):

          1、用戶手機(jī)端體驗(yàn)感較差,長時間可能降低用戶信任度

          2、原生功能使用受限,性能遠(yuǎn)不如原生

          由此引發(fā)出混合開發(fā)APP,在保持webapp便捷開發(fā)的基礎(chǔ)上,使用原生性能,提升用戶體驗(yàn)。混合開發(fā)APP(Hybrid app)使用框架(HTML5 + 原生框架)跨端生成iOS和Android APP。相比hybrid app可以使用原生的能力,體驗(yàn)感更好。

          Hybrid app封裝

          優(yōu)點(diǎn):

          1、需要使用HTML5 + 原生框架來開發(fā)APP,開發(fā)完成封裝成APP,成本較低

          2、一次封裝生成跨端APP

          3、代碼維護(hù)方便,版本更新快

          4、用戶體驗(yàn)感好,用戶留存度高

          5、支持原生功能使用,性能優(yōu)于web app

          缺點(diǎn):

          1、版本更新,如果是原生的問題,需要重新上架應(yīng)用市場

          2、原生功能使用受限,性能不如原生


          主站蜘蛛池模板: 国产福利电影一区二区三区,日韩伦理电影在线福 | 亚洲国产精品一区二区久久hs| 伊人久久精品一区二区三区| 日本精品一区二区三区在线观看| 果冻传媒董小宛一区二区| 午夜影视日本亚洲欧洲精品一区 | 香蕉免费一区二区三区| 亚洲AV成人一区二区三区AV| 色老头在线一区二区三区| 亚洲国产精品无码第一区二区三区 | 人妻无码一区二区三区四区| 国产品无码一区二区三区在线蜜桃| 久久国产免费一区| 国精产品一区一区三区MBA下载| 视频在线观看一区二区三区| 亚洲色无码一区二区三区| 精品国产乱码一区二区三区| 国产精品一区二区在线观看| 国产丝袜无码一区二区三区视频| 亚洲国产韩国一区二区| 精品国产亚洲第一区二区三区| 国产午夜毛片一区二区三区| 日韩一区二区超清视频| 亚洲Aⅴ无码一区二区二三区软件| 国产亚洲一区二区三区在线观看 | 国产成人综合亚洲一区| 清纯唯美经典一区二区| 冲田杏梨AV一区二区三区| 中文字幕一区二区三区永久| 日韩一区二区三区射精| 亚洲国产精品无码第一区二区三区| 精品动漫一区二区无遮挡| 亚洲乱色熟女一区二区三区蜜臀| 亚洲综合无码一区二区痴汉| 无码一区二区波多野结衣播放搜索| 亚洲综合无码一区二区痴汉 | 久久影院亚洲一区| 五十路熟女人妻一区二区 | 国产一区二区免费在线| 亚洲视频一区二区在线观看| 国产免费播放一区二区|