原文:Android自定義View學習(1)——基礎知識介紹 - Stars-One的雜貨小窩 準備學習自定義View,介紹一下先瞭解了下相關的前置基礎知識,特此總結 本系列集合文章鏈接可訪問Android自定義View學習系列教程 坐標系 屏幕坐標系 不管是Android設備,還是PC設備,屏幕坐 ...
原文: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模式圖解:
角度與弧度
單位換算:
在常見的數學坐標系中角度增大方向為逆時針,
在預設的屏幕坐標系中角度增大方向為順時針。
參考
- 安卓自定義View基礎-角度與弧度
- 安卓自定義View基礎-坐標系
- 安卓自定義View基礎-顏色
- Android自定義View教程目錄
- Android開發——繪圖基礎 - Stars-one - 博客園
提問之前,請先看提問須知 點擊右側圖標發起提問 或者加入QQ群一起學習 TornadoFx學習交流群:1071184701