Android群英傳讀書筆記--第6章 Android繪圖機(jī)制與處理技巧

個人讀書筆記戴已,部分沒讀懂的知識點(diǎn)可能會簡單概括或缺失,以后反復(fù)閱讀后再完善锅减。

第6章 Android繪圖機(jī)制與處理技巧

6.1 屏幕的尺寸信息

6.1.1 屏幕參數(shù)

屏幕大小 指屏幕對角線的長度糖儡,通常用“寸”來度量。

分辨率 指手機(jī)屏幕的像素點(diǎn)的個數(shù)怔匣。

PPI 每英寸像素握联,又被稱為DPI。由對角線的像素點(diǎn)除以屏幕的大小得到劫狠。

6.1.2 系統(tǒng)屏幕密度

系統(tǒng)屏幕密度.jpg

6.1.3 獨(dú)立像素密度

Android系統(tǒng)使用mdpi即密度值為160的屏幕作為標(biāo)準(zhǔn)拴疤,在這個屏幕上1px=1dp。

在mdpi這1dp=1px,在hdpi中1dp=1.5px,在xhdpi中1dp=2px,在xxhdpi中1dp=3px独泞。

ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12呐矾。

6.1.4 單位轉(zhuǎn)換

public class DisplayUtil {
    /*將px值轉(zhuǎn)換為dip或dp值,保證尺寸大小不變*/
    public static int px2dip(Context context, float pxValue) {
        final float scale=context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /*將dip或dp值轉(zhuǎn)換為px值懦砂,保證尺寸大小不變*/
    public static int dip2px(Context context, float dipValue) {
        final float scale=context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }

    /*將px值轉(zhuǎn)換為sp值蜒犯,保證文字大小不變*/
    public static int px2sp(Context context, float pxValue) {
        final  float fontScale=context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }

    /*將sp值轉(zhuǎn)換為px值组橄,保證文字大小不變*/
    public static int sp2px(Context context, float spValue) {
        final float fontScale=context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

}

6.2 2D繪圖基礎(chǔ)

系統(tǒng)通過提供的Canvas對象來提供繪圖方法。它提供了各種繪制對象的API罚随。

6.3 Android XML 繪圖

6.3.1 Bitmap

6.3.2 Shape

6.3.3 Layer

Layer可以實現(xiàn)Photoshop中的圖層效果玉工。

6.3.4 Selector

Selector可以通過不同的事件設(shè)置不同的圖像。

6.4 Android 繪圖技巧

6.4.1 Canvas

Canvas.save()方法是將之前所有已繪制圖像保存起來淘菩,讓后續(xù)的操作就好像在一個新的圖層上操作一樣遵班。

Canvas.restore()方法是將我們在save()之后的所有圖像與save()之前的圖像合并。

6.4.2 Layer圖層

6.5 Android 圖像處理之色彩特效處理

6.5.1 色彩矩陣分析

Android中潮改,系統(tǒng)使用一個顏色矩陣——ColorMatrix狭郑,來處理圖像的色彩效果。

6.5.1.1 改變偏移量
6.5.1.2 改變顏色系數(shù)
6.5.1.3 改變色光屬性

6.5.2 Android顏色矩陣--ColorMatrix

一個顏色矩陣改變圖片的實例

6.5.3 常用圖像顏色矩陣處理效果

6.5.4 像素點(diǎn)分析

系統(tǒng)提供了Bitmap.getPixels()方法來幫我們提取整個Bitmap中的像素點(diǎn)汇在,并保存到一個數(shù)組中翰萨。

6.5.3 常用像素點(diǎn)處理效果

6.6 Android 圖像處理之圖形特效處理

6.7 Android 圖像處理之畫筆特效處理

6.7.1 PorterDuffXfermode

PorterDuffXfermode設(shè)置的是兩個圖層交集區(qū)域的顯示方式。

6.7.2 Shader

Shader用來實現(xiàn)一系列的漸變糕殉、渲染效果亩鬼。

PathEffect

PathEffect指用各種筆觸效果來繪制一個路徑。

6.8 View之孿生兄弟--SurfaceView

6.8.1 SurfaceView與View的區(qū)別

View通過刷新來重繪視圖阿蝶,Android系統(tǒng)通過發(fā)出VSYNC信號來進(jìn)行屏幕的重繪雳锋,
刷新的間隔時間為16ms。如果16ms內(nèi)View沒有完成所需要執(zhí)行的所有操作羡洁,
那么用戶在視覺上就會產(chǎn)生卡頓魄缚。

SurfaceView用來解決刷新的問題。

區(qū)別:

View主要適用于主動更新焚廊,而SurfaceView主要適用于被動更新冶匹。

View在主線程對畫面進(jìn)行刷新,而SurfaceView通常會通過子線程刷新咆瘟。

View繪圖時沒有雙緩沖機(jī)制嚼隘,而SurfaceView在底層就已經(jīng)實現(xiàn)了雙緩沖機(jī)制。

6.8.2 SurfaceView的使用

SurfaceView通常套用模板來進(jìn)行編寫袒餐。

6.8.3 SurfaceView實例

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末飞蛹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子灸眼,更是在濱河造成了極大的恐慌卧檐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焰宣,死亡現(xiàn)場離奇詭異霉囚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匕积,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門盈罐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榜跌,“玉大人,你說我怎么就攤上這事盅粪〉龊” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵票顾,是天一觀的道長础浮。 經(jīng)常有香客問我,道長奠骄,這世上最難降的妖魔是什么霸旗? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮戚揭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撵枢。我一直安慰自己民晒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布锄禽。 她就那樣靜靜地躺著潜必,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沃但。 梳的紋絲不亂的頭發(fā)上磁滚,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音宵晚,去河邊找鬼垂攘。 笑死,一個胖子當(dāng)著我的面吹牛淤刃,可吹牛的內(nèi)容都是我干的晒他。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逸贾,長吁一口氣:“原來是場噩夢啊……” “哼陨仅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铝侵,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤灼伤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咪鲜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狐赡,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年疟丙,在試婚紗的時候發(fā)現(xiàn)自己被綠了猾警。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孔祸。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖发皿,靈堂內(nèi)的尸體忽然破棺而出崔慧,到底是詐尸還是另有隱情,我是刑警寧澤穴墅,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布惶室,位于F島的核電站,受9級特大地震影響玄货,放射性物質(zhì)發(fā)生泄漏皇钞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一松捉、第九天 我趴在偏房一處隱蔽的房頂上張望夹界。 院中可真熱鬧,春花似錦隘世、人聲如沸可柿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽复斥。三九已至,卻和暖如春械媒,著一層夾襖步出監(jiān)牢的瞬間目锭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工纷捞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痢虹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓主儡,卻偏偏與公主長得像世分,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缀辩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評論 25 707
  • 用兩張圖告訴你臭埋,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,723評論 2 59
  • 在Android系統(tǒng)中臀玄,有一種特殊的視圖瓢阴,稱為SurfaceView,它擁有獨(dú)立的繪圖表面健无,即它不與其宿主窗口共享...
    一個不掉頭發(fā)的開發(fā)閱讀 11,317評論 12 74
  • 前言 Android群英傳讀書筆記 目錄 Android屏幕相關(guān)知識 了解一些基礎(chǔ)名詞和參數(shù)信息 屏幕尺寸信息 屏...
    14cat閱讀 685評論 1 4
  • 最近發(fā)生了好多事荣恐,好的壞的。 籃球賽結(jié)束,可能以后都沒太有機(jī)會打球了叠穆,沒有機(jī)會認(rèn)識球友少漆,其實打球認(rèn)識的人我都好喜歡...
    FFFEason閱讀 174評論 0 1