Android自定義View學習(1)——基礎知識介紹

原文:Android自定義View學習(1)——基礎知識介紹 - Stars-One的雜貨小窩

準備學習自定義View,介紹一下先了解了下相關的前置基礎知識,特此總結

本系列集合文章鏈接可訪問Android自定義View學習系列教程

座標系

屏幕座標系

不管是Android設備,還是PC設備,屏幕座標原點都是在左上角

只需要記住一點:屏幕的y座標與數學中的座標系相反的!

View的座標

getTop();       //獲取子View左上角距父View頂部的距離
getLeft();      //獲取子View左上角距父View左側的距離
getBottom();    //獲取子View右下角距父View頂部的距離
getRight();     //獲取子View右下角距父View左側的距離

圖例:

事件中的觸摸點座標

Android自定義View中,肯定會涉及到關於事件,一般Android使用MotionEvent類來裝載定義的觸摸點座標

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

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

圖例:

顏色

顏色常用RGB,需要透明度的則是ARGB格式

A:從0x00到0xff表示從透明到不透明。

RGB:從0x00到0xff表示顏色從淺到深。

當RGB全取最小值(0或0x000000)時顏色爲黑色,全取最大值(255或0xffffff)時顏色爲白色

透明色

關於透明色的設置,Android和前端Css有所區別 Android這邊是前兩位,而Css中是後兩位

Android設置顏色透明度,範圍大小爲00-FF,如FF代表設置不透明度爲100%

css中,後兩位設置顏色透明度,範圍也是00-FF

不透度對應16進制大全(0-100)
不透明度 16進制
0% 00
1% 03
2% 05
3% 08
4% 0A
5% 0D
6% 0F
7% 12
8% 14
9% 17
10% 1A
11% 1C
12% 1F
13% 21
14% 24
15% 26
16% 29
17% 2B
18% 2E
19% 30
20% 33
21% 36
22% 38
23% 3B
24% 3D
25% 40
26% 42
27% 45
28% 47
29% 4A
30% 4D
31% 4F
32% 52
33% 54
34% 57
35% 59
36% 5C
37% 5E
38% 61
39% 63
40% 66
41% 69
42% 6B
43% 6E
44% 70
45% 73
46% 75
47% 78
48% 7A
49% 7D
50% 80
51% 82
52% 85
53% 87
54% 8A
55% 8C
56% 8F
57% 91
58% 94
59% 96
60% 99
61% 9C
62% 9E
63% A1
64% A3
65% A6
66% A8
67% AB
68% AD
69% B0
70% B3
71% B5
72% B8
73% BA
74% BD
75% BF
76% C2
77% C4
78% C7
79% C9
80% CC
81% CF
82% D1
83% D4
84% D6
85% D9
86% DB
87% DE
88% E0
89% E3
90% E6
91% E8
92% EB
93% ED
94% F0
95% F2
96% F5
97% F7
98% FA
99% FC
100% FF

顏色定義

1.通過Color類

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

2.直接定義16進制數值

//相當於#aaff0000
int color = 0xaaff0000;                   //帶有透明度的紅色

3.在xml文件中定義顏色

這種相信各位經常用,方便管理

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

補充#定義顏色:

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

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

在Java中引用:

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

注:getResources()方法是由Activity提供

在xml中引用

android:background="@color/red" 

圖像疊加

通過前面介紹我們知道顏色一般都是四個通道(ARGB)的,其中(RGB)控制的是顏色,而A(Alpha)控制的是透明度。

因爲我們的顯示屏是沒法透明的,因此最終顯示在屏幕上的顏色裏可以認爲沒有Alpha通道。Alpha通道主要在兩個圖像混合的時候生效。

實際上,上述我們所說的透明效果,其實是通過圖像疊加原理來實現

圖像疊加有多種不同的模式,我們可以使用其他效果,比如說常見的橡皮檫功能

其實還可以有不同的混合模式供我們選擇,可以使用用Paint.setXfermode(),指定不同的PorterDuff.Mode

Paint paint =  new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));//設置xfermode

xfermode模式圖解:

角度與弧度

單位換算:

在常見的數學座標系中角度增大方向爲逆時針,

在默認的屏幕座標系中角度增大方向爲順時針。

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章