從0到1Android自定義View(一)零散基礎知識

Android.jpg

前言

最近做個項目,寫了大量的自定義 View ,突然今天就想寫一個從 0 到1 的 Android 自定義 View 的文章,為了更好的總結和理解。最后,如果對每周的名企面試題或者本系列文章興趣的可以關注公眾號“于你供讀”

目錄

從0到1Android自定義View(一) 零散基礎知識.png

一、Android 坐標系

1、Android 屏幕坐標

數學中常見的坐標系與 Android 系統上 View 的坐標系是有點差別的,Android 設備中,屏幕的左上角為坐標原點,向右為 x 軸增大方向,向下為 y 軸增大方向。

Android坐標系與數學坐標系的區別.png

2、View 的坐標

View 的坐標是相對父容器而言的


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

其中的源代碼:

/**
* Top position of this view relative to its parent.
* 相對應父控件的top位置,單位為像素,即頭部到父控件的距離
* @return The top of this view, in pixels.
*/ 
@ViewDebug.CapturedViewProperty 
public final int getTop() { 
    return mTop; 
}  

View坐標系.png

3、MotionEvent中 get 和 getRaw 的區別


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

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

getY和getRawY.jpg

二、Android 中的角度與弧度

Android 自定義 View 中,經常會用到一些角度弧度的計算,還有一些數學函數的應用,因此,Android 中的角度和弧度我們也需要了解。

1、角度與弧度的定義

角度:兩條射線從圓心向圓周射出,形成一個夾角和夾角正對的一段弧。當這段弧長正好等于圓周長的360分之一時,兩條射線的夾角的大小為1度.

弧度:兩條射線從圓心向圓周射出,形成一個夾角和夾角正對的一段弧。當這段弧長正好等于圓的半徑時,兩條射線的夾角大小為1弧度.

2、角度和弧度的換算關系

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

故得等價關系:360(角度) = 2π(弧度) ==> 180(角度) = π(弧度)

得出公式:

一角度=π/180弧度

一弧度= 180/π角度

注意:

在常見的數學坐標系中角度增大方向為逆時針方向
在默認的屏幕坐標系中角度增大方向為順時針方向

角度增大的方向.png

三、顏色

1、Java 中定義顏色

xml 定義顏色相信剛接觸 Android 的都基本會用的,所以這里就介紹下 Java 中定義顏色,畢竟顏色在自定義 View 中也是必不可少的。


int color = Color.BLACK;     //黑色

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

int color  = Color.parseColor("#ffffff");  //白色

2、透明度

透明度也是必不可少的,透明度分為 256 階(0-255),計算機上用 16 進制表示為(00-ff)。透明就是 0 階,不透明就是25 5階,如果 50% 明就是 127 階(256 的一半當然是 128,但因為是從 0 開始,所以實際上是127 )。

透明度 和 不透明度 是兩個概念, 它們加起來是 1,或者 100%

ARGB 中的透明度alpha,表示的是不透明度。

透明度參照表.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 目錄 從0到1Android自定義View(一) 零散基礎知識.png 一、Android 坐標系 1、Andro...
    justCode_閱讀 501評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,325評論 25 708
  • 基礎篇 一、坐標系 1、屏幕坐標系和數學坐標系的區別 由于移動設備一般定義屏幕左上角為坐標原點,向右為x軸增大方向...
    呂侯爺閱讀 489評論 0 2
  • 今天是加入貓群寫作營練習寫作的第五天,以往每次信誓旦旦說要堅持日更,可是寫了幾天后就因為一些突如其來的事情而被迫中...
    紫苑書閣閱讀 234評論 3 1
  • Markdown Markdown是一種可以使用普通文本編輯器編寫的標記語言,通過簡單的標記語法,它可以使普通文本...
    biaoqianwo閱讀 654評論 0 0