-
Bitmap
- 作用:像素位圖重绷,是以像素為單位組成的圖像益缎,像素點(diǎn)可根據(jù)不同的排列和顏色(A R G B)以構(gòu)成圖像。因此莫秆,bitmap要點(diǎn)之處不外乎像素排列方式伙菊,像素壓縮編碼格式募舟。
-
Bitmap
占用內(nèi)存計(jì)算(byte) = 圖片長度(像素) * 圖片寬度(像素) * 每個(gè)像素點(diǎn)占用的字節(jié)數(shù)(byte) - 注意:改變圖片寬高窘俺,像素存儲(chǔ)方式遇八,會(huì)影響占用內(nèi)存大小,但質(zhì)量壓縮虑鼎,如
JPEG
壓縮算法,只會(huì)減小文件大小,而解碼為Bitmap
加載到內(nèi)存占用大小是不變的炫彩。 -
Bitmap.Config
:描述像素的存儲(chǔ)方式匾七,通過改變A R G B每個(gè)像素點(diǎn)占用的字節(jié)數(shù)來壓縮內(nèi)存。-
ALPHA_8
:1byte江兢,僅有alpha通道昨忆,不存儲(chǔ)顏色信息。 -
RGB_565
:2byte杉允,僅有RGB通道邑贴,其中R占5位(32種R精度),G占6位(64種G精度)叔磷,B占5位(32種B精度)拢驾,圖片可能會(huì)偏綠,可使用Dither
添加抖動(dòng)處理改基,如果需要不透明位圖繁疤,它比ARGB_4444
的圖片質(zhì)量更高。 -
ARGB_4444
:2byte秕狰,不建議使用稠腊,在android4.4以上使用此配置會(huì)默認(rèn)替換為ARGB_8888
,A R G B各占4位(16種精度)鸣哀。 -
ARGB_8888
:4byte架忌,A R G B各占8位(256種精度),是常見存儲(chǔ)方式中圖片質(zhì)量最高的像素存儲(chǔ)方式我衬。 -
RGBA_F16
:8byte叹放,適用于廣色域和HDR內(nèi)容。 -
HARDWARE
:當(dāng)位圖僅存儲(chǔ)在圖形內(nèi)存中低飒,如果位圖的唯一操作是繪制到屏幕上许昨,可以考慮使用它。
-
-
Bitmap.CompressFormat
:以JPEG
褥赊,PNG
糕档,WEBP
進(jìn)行圖片質(zhì)量壓縮,在保持像素的前提下拌喉,通過改變圖片位深及透明度來達(dá)到圖片壓縮的目的速那,因此只會(huì)改變生成的文件大小,并不會(huì)改變解碼為Bitmap
加載到內(nèi)存中占用的內(nèi)存大小尿背。 -
BitmapFactory
:根據(jù)文件端仰,流或字節(jié)數(shù)組創(chuàng)建Bitmap
-
Options
-
inDensity
:圖片本身的像素密度(其實(shí)就是圖片資源所在的哪個(gè)密度文件夾下,如在xxhdpi
下就是480田藐,如果在asstes
荔烧、網(wǎng)絡(luò)圖片或sd
卡下吱七,默認(rèn)是160dpi
) -
inTargetDensity
:圖片最終在bitmap
里的像素密度,如果沒有賦值鹤竭,會(huì)將inTargetDensity
設(shè)置成inScreenDensity
-
inScreenDensity
:手機(jī)本身的屏幕密度 -
inScaled
=TargetDensity
/inDensity
-
-
-
Canvas
- 定義:
Canvas
踊餐,是一種繪制時(shí)的規(guī)則,是Android
2D圖形繪制的基礎(chǔ)臀稚。 - 作用:規(guī)定繪制內(nèi)容時(shí)的規(guī)則 & 內(nèi)容吝岭,繪制內(nèi)容是根據(jù)
Canvas
的規(guī)則繪制在屏幕上的,Canvas
只是繪制時(shí)的規(guī)則吧寺,實(shí)際內(nèi)容是繪制在屏幕上的窜管。 - 其他:
- 當(dāng)調(diào)用
Canvas.save()
/Canvas.restore()
會(huì)進(jìn)行圖層以及畫布狀態(tài)的出入棧。
-
Canvas
是由多個(gè)圖層構(gòu)成的- 在畫布上操作 = 在圖層上操作
- 如無設(shè)置稚机,繪制操作和畫布操作是默認(rèn)在默認(rèn)圖層上進(jìn)行
- 在通常情況下幕帆,使用默認(rèn)圖層就可滿足需求;若需要繪制復(fù)雜的內(nèi)容(如地圖)抒钱,則需使用更多的圖層
-
最終顯示的結(jié)果 = 所有圖層疊在一起的效果
- 當(dāng)調(diào)用
- 定義:
-
Drawable
- 作用:可繪制物體的抽象層面蜓肆,其子類表示可以繪制在
Canvas
上的對(duì)象。設(shè)置背景谋币,點(diǎn)擊效果仗扬,形狀,動(dòng)畫等時(shí)常會(huì)用到其子類蕾额。不過注意的是早芭,他不像View
,不能進(jìn)行事件分發(fā)和響應(yīng)用戶操作诅蝶,大多數(shù)都是可以通過res/drawable
中xml
進(jìn)行配置的退个。
- 作用:可繪制物體的抽象層面蜓肆,其子類表示可以繪制在
-
其他要點(diǎn)
- 屏幕點(diǎn)密度
dpi
計(jì)算公式:手機(jī)對(duì)角線像素(Pixel) / 手機(jī)對(duì)角線長度(英寸 Inch) -
px
:一個(gè)像素點(diǎn)的長度 -
dp
:在dpi
=160時(shí),1px
的長度调炬,最后根據(jù)實(shí)際設(shè)備的dpi
语盈,進(jìn)行像素縮放。因此px
=dp
* (dpi
/ 160) -
sp
:文本大小單位缰泡,與dp
同理刀荒,默認(rèn)情況下,等同于dp
大小棘钞,僅能用于文字大小單位缠借。 -
res
資源目錄對(duì)應(yīng)關(guān)系:匹配的資源目錄 屏幕點(diǎn)密度(dpi) 縮放比(對(duì)比 mdpi
)ldpi
120 0.75 mdpi
160(基準(zhǔn)dpi,默認(rèn)值) 1.0 hdpi
240 1.5 xhdpi
320 2.0 xxhdpi
480 3.0 xxxhdpi
640 4.0 nodpi
ALL / tvdpi
≈213dpi 適用于TV ≈1.33 -
drawble
與mipmap
文件夾- 如果在
app
內(nèi)使用資源宜猜,那么放在drawable
或mipmap
目錄下泼返,系統(tǒng)只會(huì)根據(jù)上表dpi
加載匹配的資源目錄下的資源。 - 如果是在
launcher
中姨拥,那么放在mipmap
下的資源绅喉,launcher
會(huì)自動(dòng)選擇更加合適密度的資源渠鸽。 - 因此,應(yīng)用圖標(biāo)
launcher icon
必須放在mipmap
文件夾下霹疫,且必須保證不同密度的icon
拱绑。 - 其他資源隨意放在哪個(gè)文件夾下,如果有不同密度的圖那最好丽蝎,但如果僅有一張圖,優(yōu)先放在高密度(如
xxhdpi
)文件夾下膀藐,可以避免 高密度設(shè)備 使用 放在低密度文件夾下的圖片 放大寬高 造成的占用內(nèi)存增加屠阻。 - 如果是網(wǎng)絡(luò)圖片,assets文件夾底下或者手機(jī)本地文件夾加載的圖片额各,都會(huì)默認(rèn)使用
mdpi
也就是160dpi
的像素密度国觉,如果想改變其縮放比,必須同時(shí)調(diào)整BitmapFactory.Options.inDensity
和BitmapFactory.Options.inTargetDensity
的值才能起作用虾啦。 - 例子:一個(gè)30 * 30的ARGB_8888圖片放在
hdpi
文件夾下麻诀,480dpi
的設(shè)備訪問這張圖,那么首先30 * 30的圖片會(huì)被放大成 30 * ( 3 / 2) * 30 * ( 3 / 2) = 45 * 45 大小的圖片 最終加載成bitmap
占用內(nèi)存的大小就是 45 * 45 * 4 = 8100(byte)
- 如果在
- 屏幕點(diǎn)密度
- 繪制圖形基礎(chǔ)以及各api使用
- 系列文章
自定義View——繪制背景知識(shí)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門韭脊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來童谒,“玉大人,你說我怎么就攤上這事沪羔〖⒁粒” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵任内,是天一觀的道長撵渡。 經(jīng)常有香客問我,道長死嗦,這世上最難降的妖魔是什么趋距? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮越除,結(jié)果婚禮上节腐,老公的妹妹穿的比我還像新娘外盯。我一直安慰自己,他們只是感情好翼雀,可當(dāng)我...
- 文/花漫 我一把揭開白布饱苟。 她就那樣靜靜地躺著,像睡著了一般狼渊。 火紅的嫁衣襯著肌膚如雪箱熬。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼良瞧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了训唱?” 一聲冷哼從身側(cè)響起褥蚯,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雪情,沒想到半個(gè)月后遵岩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡巡通,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年尘执,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宴凉。...
- 正文 年R本政府宣布籽暇,位于F島的核電站温治,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏戒悠。R本人自食惡果不足惜熬荆,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绸狐。 院中可真熱鬧卤恳,春花似錦累盗、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拆融,卻和暖如春蠢琳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镜豹。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長得像搞旭,于是被迫代替她去往敵國和親散怖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...