<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Blogger Scott

    android三個(gè)特殊的資源目錄 /res/xml /res/raw 和 /assets

    在android開發(fā)中,我們離不開資源文件的使用,從drawable到string,再到layout,這些資源都為我們的開發(fā)提供了極大的便利,不過我們平時(shí)大部分時(shí)間接觸的資源目錄一般都是下面這三個(gè)。

    /res/drawable
    /res/values
    /res/layout

    但android的資源文件并不止這些,下面就為大家介紹一下另外三個(gè)資源目錄

    /res/xml
    /res/raw
    /assets

    首先是/res/xml ,這個(gè)目錄中大家可能偶爾用到過,這里可以用來存儲(chǔ)xml格式的文件,并且和其他資源文件一樣,這里的資源是會(huì)被編譯成二進(jìn)制格式放到最終的安裝包里的,我們也可以通過R類來訪問這里的文件,并且解析里面的內(nèi)容,例如我們?cè)谶@里存放了一個(gè)名為data.xml的文件:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
            <title>Hello XML!</title>
    </root>
    復(fù)制代碼
    隨后,我們就可以通過資源ID來訪問并解析這個(gè)文件了:

            
    XmlResourceParser xml = getResources().getXml(R.xml.data);
    xml.next();
    int eventType = xml.getEventType();
    boolean inTitle = false;
    while(eventType != XmlPullParser.END_DOCUMENT) {
            
            //到達(dá)title節(jié)點(diǎn)時(shí)標(biāo)記一下
            if(eventType == XmlPullParser.START_TAG) {
                    if(xml.getName().equals("title")) {
                            inTitle = true;
                    }
            }
            
            //如過到達(dá)標(biāo)記的節(jié)點(diǎn)則取出內(nèi)容
            if(eventType == XmlPullParser.TEXT && inTitle) {
                    ((TextView)findViewById(R.id.txXml)).setText(
                                    xml.getText()
                    );
            }
            
            xml.next();
            eventType = xml.getEventType();
    }
    復(fù)制代碼
    在這里,我們用資源類的getXml方法,返回了一個(gè)xml解析器,這個(gè)解析器的工作原理和SAX方式差不多,有關(guān)SAX的具體細(xì)節(jié)可以看看我的另一篇帖子:
    http://www.eoeandroid.com/thread-33212-1-1.html

            要注意的是,這里的xml文件,最終是會(huì)被編譯成二進(jìn)制形式的,如果大家想讓文件原樣存儲(chǔ)的話,那么就要用到下一個(gè)目錄啦,那就是/res/raw目錄
           
            這個(gè)目錄的唯一區(qū)別就是,這里的文件會(huì)原封不動(dòng)的存儲(chǔ)到設(shè)備上,不會(huì)被編譯為二進(jìn)制形式,訪問的方式也是通過R類,下面是一個(gè)例子:

            
            ((TextView)findViewById(R.id.txRaw)).setText(
                    readStream(getResources().openRawResource(R.raw.rawtext))   
            );
            
            private String readStream(InputStream is) {
                   
                    try {
                            ByteArrayOutputStream bo = new ByteArrayOutputStream();
                            int i = is.read();
                            while(i != -1) {
                                    bo.write(i);
                                    i = is.read();
                            }
                            
                            return bo.toString();
                    } catch (IOException e) {
                            return "";
                    }
            }
    復(fù)制代碼
    這次使用資源類中的方法,openRawResource,返回給我們一個(gè)輸入流,這樣我們就可以任意讀取文件中的內(nèi)容了,例如上面例子中那樣,原樣輸出文本文件中的內(nèi)容。
           
            當(dāng)然,如果你需要更高的自由度,盡量不受android平臺(tái)的約束,那么/assets這個(gè)目錄就是你的首選了~
            這個(gè)目錄中的文件除了不會(huì)被編譯成二進(jìn)制形式之外,另外一點(diǎn)就是,訪問方式是通過文件名,而不是資源ID。并且還有更重要的一點(diǎn)就是,大家可以在這里任意的建立子目錄,而/res目錄中的資源文件是不能自行建立子目錄的。如果需要這種靈活的資源存儲(chǔ)方式,那么就看看下面這個(gè)例子:

            
            AssetManager assets = getAssets();
            
            ((TextView)findViewById(R.id.txAssets)).setText(
                    readStream(assets.open("data.txt"))
            );
    復(fù)制代碼
    在context上下文中,調(diào)用getAssets返回一個(gè)AssetManager,然后使用open方法就可以訪問需要的資源了,這里open方法是以assets目錄為根的。所以上面這段代碼訪問的是assets目錄中名為data.txt的資源文件~
           
            這三個(gè)目錄中我們平時(shí)開發(fā)應(yīng)用的時(shí)候,還是很實(shí)用的,這里發(fā)給大家,希望能對(duì)大家在開發(fā)應(yīng)用時(shí)有所幫助~

     

    本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/shichexixi/archive/2010/11/03/5985683.aspx

    posted on 2010-12-05 00:00 江天部落格 閱讀(1775) 評(píng)論(0)  編輯  收藏 所屬分類: Android

    主站蜘蛛池模板: 色噜噜亚洲男人的天堂| 国产三级免费电影| 久久A级毛片免费观看| a级毛片毛片免费观看久潮| 在线观看黄片免费入口不卡| 国产视频精品免费视频| 成人自慰女黄网站免费大全| 一区二区3区免费视频| 国产免费黄色无码视频 | 精品亚洲成α人无码成α在线观看| 国产成人免费福利网站| 国产三级免费电影| 亚洲日韩涩涩成人午夜私人影院| 亚洲一区二区精品视频| 亚洲精品乱码久久久久久 | 在线播放免费人成视频在线观看| 成人毛片手机版免费看| 日本不卡在线观看免费v| 亚洲精品第一国产综合境外资源| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲精品美女久久久久99| 亚洲国产精品久久久久婷婷老年| 久久亚洲sm情趣捆绑调教| 亚洲影视自拍揄拍愉拍| 亚洲AV无码一区二区三区久久精品 | 久久夜色精品国产亚洲av| 亚洲欧洲自拍拍偷午夜色无码| 亚洲视频在线观看一区| 亚洲av无码专区在线| 亚洲精品无码av片| 日韩电影免费在线观看网址| 你是我的城池营垒免费看| 在线观看免费中文视频| 成人五级毛片免费播放| 国产精品亚洲精品日韩已方| 亚洲天天做日日做天天欢毛片| 亚洲色欲色欲www| 在线观看国产一区亚洲bd| 国产在线观看无码免费视频| 69免费视频大片| 凹凸精品视频分类国产品免费|