自定義View一基礎(chǔ)概念

基礎(chǔ)概念

  1. View的坐標(biāo)系

View的坐標(biāo)系統(tǒng)是相對(duì)于父控件而言的.

getTop();       //獲取子View左上角距父View頂部的距離
getLeft();      //獲取子View左上角距父View左側(cè)的距離
getBottom();    //獲取子View右下角距父View頂部的距離
getRight();     //獲取子View右下角距父View左側(cè)的距離
  1. 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();
  1. 角度與弧度

為了精確描述一個(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í)針為角度增大方向

  1. 覆蓋混合模式

混合模式 計(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)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容