乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Android Resources之a(chǎn)ssets

       rongq2007 2021-09-26

      https://www.jianshu.com/p/c5d41272c7e9

      Assets資源

      assets/和res/raw目錄

      相同之處

      兩者目錄下的文件在打包后會(huì)原封不動(dòng)的保存在apk包中,不會(huì)被編譯成二進(jìn)制,這些文件將被打包到APK中應(yīng)用使用。

      不同之處

      • res/raw中的文件會(huì)被映射到R.java文件中,訪問(wèn)的時(shí)候直接使用資源ID即R.id.filename;assets文件夾下的文件不會(huì)被映射到R.java中,訪問(wèn)的時(shí)候需要AssetManager類。

      • res/raw不可以有目錄結(jié)構(gòu),而assets則可以有目錄結(jié)構(gòu),也就是assets目錄下可以再建立文件夾

      因?yàn)橄到y(tǒng)在編譯的時(shí)候不會(huì)編譯assets下的資源文件,所以我們不能通過(guò)R.XXX.ID的方式訪問(wèn)它們。而且不能通過(guò)該資源的絕對(duì)路徑去訪問(wèn)它們。因?yàn)閍pk安裝之后會(huì)放在/data/app/**.apk目錄下,以apk形式存在,asset/res和被綁定在apk里,并不會(huì)解壓到/data/data/YourApp目錄下去,所以我們無(wú)法直接獲取到assets的絕對(duì)路徑,因?yàn)樗鼈兏揪蜎](méi)有。

      res/raw目錄

      訪問(wèn)res/raw目錄下文件的原始數(shù)據(jù)

      InputStream is = getResources().openRawResource(R.id.filename);

      assets/目錄

      創(chuàng)建assets/目錄

      • 直接在src/main/路徑下創(chuàng)建assets文件夾

      • Project選中project模式,選中app文件夾,工具欄選擇File > New > Folder > Assets Folder

      AssetManager

      AssetManager提供對(duì)應(yīng)用程序的原始資源文件進(jìn)行訪問(wèn);這個(gè)類提供了一個(gè)低級(jí)別的API,它允許你以簡(jiǎn)單的字節(jié)流的形式打開(kāi)和讀取和應(yīng)用程序綁定在一起的原始資源文件。

      獲取AssetManager示例

      可以通過(guò)Context.getAssets()來(lái)獲取AssetManager示例。

      AssetManager常用方法

      public Method描述
      String[] list(String path)返回指定路徑下的所有文件及目錄名。
      InputStream open(String fileName)使用 ACCESS_STREAMING模式打開(kāi)assets下的指定文件。
      InputStream open(String fileName, int accessMode)使用指定的訪問(wèn)模式打開(kāi)assets下的指定文件.

      當(dāng)調(diào)用open()來(lái)創(chuàng)建一個(gè)InputStream流時(shí),fileName參數(shù)必須是文件,不能是文件夾。open方法是以assets目錄為根的。

      實(shí)踐

      1. 加載assets/目錄下的html文件:webView.loadUrl("file:///android_asset/win8_Demo/index.html");.Android SDK制定了URI:file:///android_asset/ + 文件路徑來(lái)表示assets/目錄下文件的絕對(duì)路徑。這種方式可以加載assets目錄下的網(wǎng)頁(yè),并且與網(wǎng)頁(yè)有關(guān)的css,js,圖片等文件也會(huì)的加載。

      2. String fileNames[] =context.getAssets().list("");來(lái)獲取assets/跟目錄下的所有文件和文件夾。這里發(fā)現(xiàn),安裝app之后assets/目錄下默認(rèn)有三個(gè)文件夾:images,webkit,sounds。

      assets dir.png

      注意點(diǎn)

      調(diào)用close()時(shí)機(jī)

      當(dāng)我們?cè)陧?xiàng)目中調(diào)用AssetManager.close()時(shí),程序會(huì)終止并報(bào)錯(cuò):Assetmanager has been closed

      這是因?yàn)?,每一個(gè)APK文件在進(jìn)程中都對(duì)應(yīng)有一個(gè)全局的Resourses對(duì)象以及一個(gè)全局的AssetManager對(duì)象。其中,這個(gè)全局的Resourses對(duì)象保存在一個(gè)對(duì)應(yīng)的ContextImpl對(duì)象的成員變量mResources中,而這個(gè)全局的AssetManager對(duì)象保存在這個(gè)全局的Resourses對(duì)象的成員變量mAssets中。

      問(wèn)題

      • URI怎么轉(zhuǎn)換成文件路徑

      • res/raw/目錄下的資源怎么通過(guò)URI來(lái)訪問(wèn)

      參考

      Android開(kāi)發(fā)之a(chǎn)ssets目錄下資源使用總結(jié)

      Android Studio 添加Assets目錄

      java.lang.RuntimeException: Assetmanager has been closed

      作者:獅_子歌歌
      鏈接:https://www.jianshu.com/p/c5d41272c7e9
      來(lái)源:簡(jiǎn)書(shū)
      著作權(quán)歸作者所有。非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多