- 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)它仍然工作正常。
- The Complete Rust Programming Reference Guide
- 玩轉(zhuǎn)Scratch少兒趣味編程
- JavaScript+Vue+React全程實(shí)例
- ASP.NET 3.5程序設(shè)計(jì)與項(xiàng)目實(shí)踐
- 微信小程序開發(fā)解析
- RISC-V體系結(jié)構(gòu)編程與實(shí)踐(第2版)
- 微服務(wù)架構(gòu)深度解析:原理、實(shí)踐與進(jìn)階
- 愛上micro:bit
- 從零開始學(xué)Python網(wǎng)絡(luò)爬蟲
- Mastering ASP.NET Core 2.0
- Scratch編程從入門到精通
- Ubuntu Server Cookbook
- Python深度學(xué)習(xí)與項(xiàng)目實(shí)戰(zhàn)
- CISSP in 21 Days(Second Edition)
- Testing Practitioner Handbook