[TOC]
前奏
progressbar在xml的寫法是:
<ProgressBar android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="133.3dp"
android:layout_height="42.4dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:minHeight="42.4dp"
android:minWidth="133.3dp"
android:progressDrawable="@drawable/networkdata_down_book_progress_selector" />
networkdata_down_book_progress_selector的xml文件是:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/background" android:drawable="@drawable/networkdata_btn_normal"></item>
<item android:id="@android:id/progress" android:drawable="@drawable/networkdata_btn_press"></item>
</layer-list>
現(xiàn)象
將圖片networkdata_btn_normal和networkdata_btn_press放在drawable-mdpi,現(xiàn)象是
而把圖片放在drawable-xhdpi茶鉴,現(xiàn)象是
最終把圖放在drawable-nodpi里饭望,現(xiàn)象是
WHY翁涤?
progressbar的android:progressDrawable屬性是繪制draw圖片,只有圖的大小和progressbar大小一樣才會(huì)正常顯示延旧,不然要么圖片被截取顯示谋国,要么拉伸顯示。
結(jié)論
我用的機(jī)器屏幕密度是1.65迁沫,也就是264dpi芦瘾。而mdpi是160dpi,hdpi是240dpi集畅,xhdpi是320dpi近弟,所以在drawable-mdpi和drawable-hdpi里,圖片只顯示一部分 挺智,在drawabe-xhdpi里會(huì)拉伸顯示祷愉。 把圖放在drawable-mdpi里,圖會(huì)變成原來(lái)的寬高(264/160)赦颇,也就是放大了1.65倍二鳄,而progressbar設(shè)定寬高,那么就會(huì)從放大后的圖里沐扳,以左上角為原點(diǎn)泥从,截取progressbar的寬高大小的圖,hdpi同理是放大沪摄,所以顯示不全躯嫉;而在xhdpi里,圖會(huì)變成原來(lái)的寬高(264/320)杨拐,也就是縮小了0.825倍祈餐,那么要取progressbar的大小,也就需要填充哄陶,所以繪制第二張圖來(lái)填滿progressbar帆阳。把圖放在drawable-nodpi,那么只會(huì)獲取原圖的大小屋吨,所以只要把progressbar的大小設(shè)為和圖的大小一樣就可以了蜒谤。**
**PS:圖片放在不同的資源文件夾里也會(huì)造成內(nèi)存消耗不同,感興趣的朋友可以參考: 關(guān)于Android中圖片大小至扰、內(nèi)存占用與drawable文件夾關(guān)系的研究與分析 **
歡迎回復(fù)討論鳍徽!