<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                **Android關鍵資源詳解** Android層次結構中,資源扮演著重要的角色,資源是綁定到可執行程序的文件(例如音樂文件)或值(例如對話框標題)。常用的資源實例包括字符串、顏色、布局文件等。例如不需要將字符串硬編碼到應用程序中,可以使用它們的ID,這種間接性使你無需要改變源代碼就能夠更改字符串資源的文本。 Android中主要通過兩種文件類型來支持資源:XML文件和原始文件(包括圖像、音頻和視頻)。甚至在XML文件內部有時也能看到資源被定義為XML文件內部的值(如字符串),有時XML文件整體就是一個資源(如布局資源)。 XML文件集中的另一個特征是可以找到兩種文件類型:一種編譯為二進制文件,另一種按照原樣復制到設備。像字符串資源、位圖資源等都是編譯為二進制文件,然后再包含到可安裝的包中,這些XML文件具有特定的格式,其中XML節點被轉換為ID。如果將文件放到/res/raw/目錄下,它們將不會編譯為二進制格式,必須使用明確的流式傳入的API來讀取這些文件號,如音頻和視頻文件。 **Android常用的關鍵資源:** **1)字符串資源** Android中運行在一個或多個XML資源文件中定義多個字符串,這些包含字符串定義的XML文件位于/res/values子目錄下,XML文件的名稱可以任意指定,常見為strings.xml。如下所示: ~~~ <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">第一個Android應用</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> </resources> ~~~ 當創建或更新文件時Eclipse的ADT插件將根據這兩個字符串為他們創建唯一的資源ID,在應用程序的根包R.java中,自動創建一個Java類。如下所示: ~~~ public static final class R { public static final class string { public static final int action_settings=0x7f050001; public static final int app_name=0x7f050000; public static final int hello_world=0x7f050002; } .... } ~~~ 注意R.java在根包中定義了一個頂級類:public static final class R,這這個外部類R中Android定義了一個內部類:public static final class string,R.java將此內部靜態類創建為一個命名空間,以保持字符串資源ID。這樣我們在代碼中就可以通過這個字符串ID來引用字符串:R.string.hello_world 。 Android還支持子XML元素,例如< b>、< i>、< string>節點下其他簡單的文本格式HTML,在文本視圖繪制之前可以使用這種復合HTML字符串來設置文本樣式。 **2)字符串數組資源** 可以指定一個字符串數組作為/res/values子目錄下所有文件中的資源,我們將使用一個名為string-array的XML節點,此節點是resources的子節點。如下所示: ~~~ <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="test_array"> <item>one</item> <item>two</item> <item>three</item> <item>four</item> </string-array> .... </resources> ~~~ 這樣我們可以應用程序中通過:String strings[] = this.getResources().getStringArray(R.array.test_array)來訪問它們。 **3)顏色資源** 與字符串資源一樣,也可以使用引用標識符來間接引用顏色,這樣Android能夠本地化顏色。在資源文件colors.xml中定義了顏色后,就可以在Java代碼中通過他們的ID來訪問它們了。除此之外Android還在自己的資源文件中定義了一組基本顏色,這些ID也可通過Android的android.R.color命名控件訪問。如下所示: ~~~ <?xml version="1.0" encoding="utf-8"?> <resources> <color name="red">#f00</color> <color name="blue">#0000ff</color> <color name="green">#f0f0</color> </resources> ~~~ 在Java代碼中訪問:int mainBlackGroundColor = this.getResources().getColor(R.color.red); 在視圖定義中使用顏色:<TextView android:id="@+id/textView" ?android:textColor = "@color/red" /> **4)尺寸資源** 像素、英寸和磅值等都是可以在XML布局或Java代碼中使用的尺寸,可以使用這些尺寸資源來本地化Android UI和設置它的樣式,無需更改源碼,可以采用以下單位來指定尺寸: ? ? ?px ? ? ?像素 ? ? ?in ? ? ? 英寸 ? ? ?mm ? 毫米 ? ? ?pt ? ? ?磅 ? ? ?dp ? ? 與密度無關的像素基于160dpi屏幕 ? ? ?sp ? ? 與比例無關的像素,支持用于調整大小,適合在字體中使用 這些資源ID在R.demen.*中,文件中的XML節點為/resources/demen。如下所示: ~~~ <resource> <demen name="mysize_in_pixels">2px</demen> <demen name="mysize_in_dp">5dp</demen> <demen name="medium_size">100sp</demen> </resource> ~~~ 在Java代碼使用尺寸資源:?float dimen = this.getResources().getDimension(R.dimen.mysize_in_pixels); 在清單文件中使用尺寸資源:android:textSize="@dimen/mediaum_size" **5)圖像資源** Android會為/res/drawable子目錄下的圖像文件生成資源ID,支持的圖像格式包括:git、jpg和png。此目錄中的每個圖像文件會根據其基本文件名生成一個唯一的ID。例如文件sample_image.jpg則生成的資源ID為R.drawable.sample_image。 可以在XML視圖定義中直接引用/res/drawable下的圖像:android:background="@drawable/sample_image" 也可以在Java代碼中獲取圖像: BitmapDrawable d = this.getResources().getDrawable(R.drawable.sample_image); button.setBackgroundDrawanle( d ); **6)布局資源** 在Android中,屏幕的視圖通常以資源的形式從XML文件中加載,這些XML文件稱為布局資源。布局資源是Android的UI編程中使用最重要的一種資源。我們在/res/layout下新建一個main.xml布局資源文件時,自動會在R.layout中生成一個R.layout.main的ID來標示這個布局資源。 ~~~ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout> ~~~ 在代碼中我們可以使用布局文件: ~~~ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = (TextView)this.findViewById(R.id.textView); } } ~~~ **7)其他XML文件** Android還允許將任意XML文件用作資源,此方法使用資源的優勢延伸到了任意XML文件,首先它提供了一種快速方式來根據所生成的資源ID引用這些文件,其次該方法允許本地化這些資源XML文件。 需要以此方式讀取的XML文件存儲在/res/xml子目錄下,如圖所示: ~~~ <root> <sub> Hello world from an sub element </sub> </root> ~~~ 就像處理其他Android XML資源文件一樣,Android將編譯此XML文件,然后將其放入應用程序包中,如果需要解析這些文件,需要使用一個XmlPullParser實例。 代碼清單給出了解析test.xml的具體實例: ~~~ private String getEventsFromXmlFile(Activity activity) { StringBuffer sb = new StringBuffer(); XmlResourceParser xpp = activity.getResources().getXml(R.xml.test); int eventType = xpp.next().getEventType(); while(eventType != XmlParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_DOCUMENT) { sb.append("Start document"); } else if(eventType == XmlPullParser.START_TAG) { sb.append("Start tag"+xpp.getName()); } else if(eventType == XmlPullParser.ENG_TAG) { sb.append("end tag" + xpp.getName()); } else if(eventType == XmlPullParser.TEXT) { sb.append("Text:"+ xpp.getText()); } eventType = xpp.next().getEventType(); } sb.append("End document"); return sb.toString(); } ~~~ **8)原始資源** 除了支持任意XML文件之外Android還支持使用原始文件,這些原始文件位于/res/raw下,包括音頻、視頻或文本文件等需要本地化或需要通過資源ID引用的原始文件資源。與/res/xml下的XML文件不同,這些都文件沒有貶義,而是按照原樣轉移到應用程序包中,但是每個文件在R.java中都會生成一個標識符。 代碼清單給出了一個解析/res/raw/下的test.txt文本文件的實例: ~~~ String getStringFromRawFile(Activity activity) { InputStream is = activity.getResources().openRawResource(R.raw.test); String myText = convertStreamToString(is); is.close(); return myText; } String convertStreamToString(InputStream is) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int num = is.read(); while( num != -1 ) { baos.write(num); num = is.read(); } return baos.toString(); } ~~~ **9)原始資產** Android提供了一個/assets目錄,可以將要包含在包中的文件放在這里,這個目錄與/src具有相同的級別,也就是說它未包含在/res目錄中,/asset中的文件不會在R.java中生成資源ID,必須制定文件路徑才能讀取它們。文件路徑是以/asset開頭的絕對路徑,可以使用AssetManager類訪問這些文件: ~~~ String getStringFromAssetFile(Activity activity) { AssetManager am = activity.getAssets(); InputStream is = am.open("test.txt"); String s = convertStreamToString(is); is.close(); reutn s; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看