基礎(chǔ)概念
-
View的坐標(biāo)系
View的坐標(biāo)系統(tǒng)是相對(duì)于父控件而言的.
getTop(); //獲取子View左上角距父View頂部的距離
getLeft(); //獲取子View左上角距父View左側(cè)的距離
getBottom(); //獲取子View右下角距父View頂部的距離
getRight(); //獲取子View右下角距父View左側(cè)的距離

-
MotionEvent中 get 和 getRaw 的區(qū)別
event.getX(); //觸摸點(diǎn)相對(duì)于其所在組件坐標(biāo)系的坐標(biāo)
event.getY();
event.getRawX(); //觸摸點(diǎn)相對(duì)于屏幕默認(rèn)坐標(biāo)系的坐標(biāo)
event.getRawY();
-
角度與弧度
為了精確描述一個(gè)角的大小引入了角度與弧度的概念。
由于兩者進(jìn)制是不同的(角度是60進(jìn)制,弧度是10進(jìn)制),在合適的地方使用合適的單位來(lái)描述會(huì)更加方便。
例如: 角度是60進(jìn)位制,遇到30°6′這樣的角,應(yīng)該轉(zhuǎn)化為10進(jìn)制的30.1°。但弧度就不需要,因?yàn)榛《缺旧砭褪鞘M(jìn)制的實(shí)數(shù)。

順時(shí)針為角度增大方向

-
覆蓋混合模式
| 混合模式 | 計(jì)算公式 |
|---|---|
| ADD | Saturate(S + D) |
| CLEAR | [0, 0] |
| DARKEN | [Sa + Da - SaDa, Sc(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] |
| DST | [Da, Dc] |
| DST_ATOP | [Sa, Sa * Dc + Sc * (1 - Da)] |
| DST_IN | [Sa * Da, Sa * Dc] |
| DST_OUT | [Da * (1 - Sa), Dc * (1 - Sa)] |
| DST_OVER | [Sa + (1 - Sa)Da, Rc = Dc + (1 - Da)Sc] |
| LIGHTEN | [Sa + Da - SaDa, Sc(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] |
| MULTIPLY | [Sa * Da, Sc * Dc] |
| SCREEN | [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] |
| SRC | [Sa, Sc] |
| SRC_ATOP | [Da, Sc * Da + (1 - Sa) * Dc] |
| SRC_IN | [Sa * Da, Sc * Da] |
| SRC_OUT | [Sa * (1 - Da), Sc * (1 - Da)] |
| SRC_OVER | [Sa + (1 - Sa)Da, Rc = Sc + (1 - Sa)Dc] |
| XOR | [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] |
示例圖:
src表示輸入的圖,dst表示原Canvas上的內(nèi)容
