自定義View基礎① 筆

資料鏈接:
1.GcsSloop的自定義系列

一九府、坐標系

1.移動設備坐標系

2.View的坐標系

注意:View的坐標系統(tǒng)是相對于父控件而言的.
// 獲取子View左上角距父View頂部的距離
getTop();
// 獲取子View左上角距父View左側(cè)的距離
getLeft();
// 獲取子View右下角距父View頂部的距離
getBottom();
// 獲取子View右下角距父View左側(cè)的距離
getRight();

3.MotionEvent中 get 和 getRaw 的區(qū)別

// 觸摸點相對于其所在組件坐標系的坐標
event.getX();       
event.getY();

// 觸摸點相對于屏幕默認坐標系的坐標
event.getRawX();    
event.getRawY();

二覆致、角度與弧度

1.角度與弧度的定義

名稱 定義
角度 兩條射線從圓心向圓周射出,形成一個夾角和夾角正對的一段弧儡羔。當這段弧長正好等于圓周長的360分之一時宣羊,兩條射線的夾角的大小為1度.
弧度 兩條射線從圓心向圓周射出笔链,形成一個夾角和夾角正對的一段弧。當這段弧長正好等于圓的半徑時鉴扫,兩條射線的夾角大小為1弧度.

2.角度和弧度的換算關(guān)系

圓一周對應的角度為360度(角度),對應的弧度為2π弧度炕婶。

rad 是弧度, deg 是角度

3.屏幕坐標系角度增大

在默認的屏幕坐標系中角度增大方向為順時針柠掂。

三依沮、顏色

1.簡介

1.1.安卓支持的顏色

顏色模式 備注
ARGB8888 四通道高精度(32位)
ARGB4444 四通道低精度(16位)
RGB565 屏幕默認模式(16位)
Alpha8 僅有透明通道(8位)

注意:我們常用的是ARGB8888和ARGB4444,而在所有的安卓設備屏幕上默認的模式都是RGB565危喉。

1.2.顏色定義

ARGB8888為例

類型 | 解釋 | 0(0x00) | 255(0xff)
----|------
A(Alpha) | 透明度 | 透明 | 不透明
R(Red) | 紅色 | 無色 | 紅色
G(Green) | 綠色 | 無色 | 綠色
B(Blue) | 藍色 | 無色 | 藍色

其中 A R G B 的取值范圍均為0255(即16進制的0x000xff)
A 從0x00到0xff表示從透明到不透明。
RGB 從0x00到0xff表示顏色從淺到深辜限。

2.顏色的創(chuàng)建與使用

2.1.java中定義

// 灰色
int color = Color.GRAY;
// 半透明紅色
int color = Color.argb(127, 255, 0, 0);
// 帶有透明度的紅色
int color = 0xaaff0000;

2.2.在xml文件中定義顏色

.../res/values/color.xml 中定義

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
</resources>

定義顏色以‘#’開頭,后面跟十六進制的值氧急,有如下幾種定義方式:

// 低精度 - 不帶透明通道紅色
#f00
// 低精度 - 帶透明通道紅色
#af00

// 高精度 - 不帶透明通道紅色
#ff0000
// 高精度 - 帶透明通道紅色
#aaff0000

2.3.java中引用xml中定義的顏色

int color = getResources().getColor(R.color.mycolor);

2.4.在xml文件(layout或style)中引用或者創(chuàng)建顏色

<!--在style文件中引用-->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/red</item>
</style>

// 引用在/res/values/color.xml 中定義的顏色
android:background="@color/red"
// 創(chuàng)建并使用顏色
android:background="#ff0000"

3.顏色混合模式(Alpha通道相關(guān))

默認情況下毫深,當一個顏色繪制到Canvas上時的混合模式是這樣計算的:

(RGB通道) 最終顏色 = 繪制的顏色 + (1 - 繪制顏色的透明度) × Canvas上的原有顏色吩坝。

其他混合模式:用Paint.setXfermode费什,指定不同的PorterDuff.Mode

PorterDuff 模式的混合計算公式:
D:原本在Canvas上的內(nèi)容dst
S:繪制輸入的內(nèi)容src
a:alpha通道
c:RGB各個通道

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


2017/5/16 9:58:19

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸳址,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子稿黍,更是在濱河造成了極大的恐慌,老刑警劉巖巡球,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邓嘹,死亡現(xiàn)場離奇詭異,居然都是意外死亡汹押,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門棚贾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榆综,“玉大人妙痹,你說我怎么就攤上這事鼻疮。” “怎么了判沟?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挪哄。 經(jīng)常有香客問我,道長中燥,這世上最難降的妖魔是什么塘偎? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吟秩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涵防。我一直安慰自己,他們只是感情好壮池,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著厅克,像睡著了一般。 火紅的嫁衣襯著肌膚如雪证舟。 梳的紋絲不亂的頭發(fā)上硕旗,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天女责,我揣著相機與錄音,去河邊找鬼抵知。 笑死,一個胖子當著我的面吹牛辛藻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吱肌,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼氮墨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起规揪,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎字支,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堕伪,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡栗菜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年欠雌,在試婚紗的時候發(fā)現(xiàn)自己被綠了疙筹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡而咆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翘盖,到底是詐尸還是另有隱情,我是刑警寧澤馍驯,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布玛痊,位于F島的核電站狂打,受9級特大地震影響擂煞,放射性物質(zhì)發(fā)生泄漏趴乡。R本人自食惡果不足惜对省,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一晾捏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惦辛,春花似錦、人聲如沸胖齐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剿另,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雨女,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工戚篙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溺职,地道東北人岔擂。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓浪耘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親七冲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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