官术网_书友最值得收藏!

  • Android編程權(quán)威指南(第4版)
  • (美)克莉絲汀·馬西卡諾 布賴恩·加德納 比爾·菲利普斯 克里斯·斯圖爾特
  • 1262字
  • 2021-06-15 15:29:09

2.5 添加圖標(biāo)資源

GeoQuiz應(yīng)用現(xiàn)在已經(jīng)可用了。如果NEXT按鈕上能夠顯示向右的圖標(biāo),用戶界面看起來更簡潔美觀。

本書隨書文件中提供了這樣的箭頭圖標(biāo)。每章一個(gè),隨書文件包括本書全部Android Studio項(xiàng)目文件。

下載隨書文件,找到并打開02_MVC/GeoQuiz/app/src/main/res目錄。在該目錄下,可以看到drawable-hdpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi和drawable-xxxhdpi五個(gè)目錄。

五個(gè)目錄各自的后綴名代表設(shè)備的像素密度。

  • mdpi:中等像素密度屏幕(約160dpi)。
  • hdpi:高像素密度屏幕(約240dpi)。
  • xhdpi:超高像素密度屏幕(約320dpi)。
  • xxhdpi:超超高像素密度屏幕(約480dpi)。
  • xxxhdpi:超超超高像素密度屏幕(約640dpi)。

(另外還有l(wèi)dpi和tvdpi這兩個(gè)類別,本書用不到它們,因此未包括在內(nèi)。)

每個(gè)目錄下有兩個(gè)圖片文件:arrow_right.png和arrow_left.png。這些圖片文件都是按照目錄名對應(yīng)的dpi定制的。

GeoQuiz項(xiàng)目中的所有圖片資源都會隨應(yīng)用安裝在設(shè)備里,Android操作系統(tǒng)知道如何為不同設(shè)備提供最佳匹配。注意,在為不同設(shè)備準(zhǔn)備適配圖片的同時(shí),應(yīng)用安裝包容量也隨之增大。當(dāng)然,對于GeoQuiz這樣的小項(xiàng)目,問題并不明顯。

如果應(yīng)用不包含設(shè)備對應(yīng)的屏幕像素密度文件,則在運(yùn)行時(shí),Android系統(tǒng)會自動(dòng)找到可用的圖片資源,并針對該設(shè)備進(jìn)行縮放適配。有了這種特性,就不一定要準(zhǔn)備各種屏幕像素密度文件了。因此,為控制應(yīng)用包的大小,可以只為主流設(shè)備準(zhǔn)備分辨率較高的定制圖片資源。至于那些不常見的低分辨率設(shè)備,讓Android系統(tǒng)自動(dòng)適配就好。

(第22章會介紹為屏幕像素密度定制圖片的替代方案,另外,還會解釋mipmap目錄的用途。)

2.5.1 向項(xiàng)目中添加資源

接下來,將圖片文件添加到GeoQuiz項(xiàng)目資源中去。

首先,確認(rèn)打開了Android Studio的Project視角模式。如圖2-6所示,展開GeoQuiz/app/src/main/res目錄會看到已有mipmap-hdpi和mipmap-xhdpi這樣的目錄。

圖2-6 在Project視角模式下查看資源

在隨書文件中,選擇并復(fù)制drawable-hdpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi和drawable-xxxhdpi這五個(gè)目錄,將它們粘貼到app/src/main/res目錄中。完成后,在Android Studio的項(xiàng)目工具窗口可以看到這五個(gè)目錄,每個(gè)目錄中含有對應(yīng)的arrow_left.png和arrow_right.png文件,如圖2-7所示。

圖2-7 drawable目錄中的箭頭圖標(biāo)文件

如果將項(xiàng)目工具窗口切換回Android視角模式,新增加的drawable圖片資源會以圖2-8所示的形式展示。

圖2-8 drawable目錄中的箭頭圖標(biāo)文件匯總

向應(yīng)用添加圖片就這么簡單。任何添加到res/drawable目錄中,后綴名為.png、.jpg或者.gif的文件都會自動(dòng)獲得資源ID。(注意,文件名必須是小寫字母且不能有空格。)

這些資源ID并不按照屏幕像素密度匹配,因此不需要在運(yùn)行時(shí)確定設(shè)備的屏幕像素密度,只要在代碼中引用這些資源ID就可以了。應(yīng)用運(yùn)行時(shí),操作系統(tǒng)知道如何在特定的設(shè)備上顯示匹配的圖片。

Android資源系統(tǒng)是如何工作的?從第3章起,我們會深入學(xué)習(xí)這方面的相關(guān)知識。現(xiàn)在,能顯示右箭頭圖標(biāo)就可以了。

2.5.2 在XML文件中引用資源

在代碼中可以使用資源ID引用資源。如果想在布局定義中配置NEXT按鈕顯示箭頭圖標(biāo),該如何在布局XML文件中引用資源呢?

答案很簡單,只是語法稍有不同而已。打開activity_main.xml文件,為Button部件新增兩個(gè)屬性,如代碼清單2-11所示。

代碼清單2-11 為NEXT按鈕增加圖標(biāo)(res/layout/activity_main.xml)

<LinearLayout  ... >
    ...
    <LinearLayout  ... >
        ...
    </LinearLayout>

    <Button
        android:id="@+id/next_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/next_button"
        android:drawableEnd="@drawable/arrow_right"
        android:drawablePadding="4dp" />

</LinearLayout>

在XML資源文件中,可以通過資源類型和資源名稱引用其他資源。以@string/開頭的定義是引用字符串資源。以@drawable/開頭的定義是引用drawable資源。

從第3章開始,我們還會學(xué)習(xí)更多資源命名以及res目錄結(jié)構(gòu)中其他資源的使用等相關(guān)知識。

運(yùn)行GeoQuiz應(yīng)用。新按鈕很漂亮吧?測試一下,確認(rèn)它仍然工作正常。

主站蜘蛛池模板: 阿拉善左旗| 五大连池市| 上蔡县| 固安县| 永吉县| 恩平市| 彩票| 石柱| 兴义市| 龙江县| 遂川县| 宜昌市| 邢台县| 安福县| 定襄县| 中宁县| 常宁市| 都江堰市| 乌兰浩特市| 清水县| 饶阳县| 深圳市| 贺州市| 益阳市| 龙江县| 青冈县| 巴林右旗| 子长县| 巫溪县| 屯昌县| 阿拉善右旗| 纳雍县| 延庆县| 四子王旗| 墨竹工卡县| 新龙县| 县级市| 西城区| 阜南县| 涟水县| 邢台市|