三崇众、View 繪制流程 —— 基礎(chǔ)(1)

1. View分類

類別 解釋 特點(diǎn)
單一視圖 即一個(gè)View,如 TextView 不包含子View
視圖組 即多個(gè)View組成的ViewGroup包晰,如 LinearLayout 包含子View

即視圖View分為兩類: View尝艘、ViewGroup

2. View類簡(jiǎn)介

  • View 類是Android中各種組件的基類演侯,如View是ViewGroup的基類
  • View的構(gòu)造方法 共有4個(gè),具體如下 (自定義View必須重寫至少一個(gè)構(gòu)造方法)
    public class CustomView extends View {
        //如果 View 是在 Java 代碼里 new 出來的背亥,則調(diào)用第一個(gè)構(gòu)造函數(shù)
        public CustomView(Context context) {
            super(context);
        }

        //如果 View 是在 .xml 里聲明的秒际,則調(diào)用第二個(gè)構(gòu)造函數(shù)
        //自定義屬性是從 AttributeSet 參數(shù)傳進(jìn)來的
        public CustomView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        //不會(huì)自動(dòng)調(diào)用
        //一般是在第二個(gè)構(gòu)造函數(shù)里主動(dòng)調(diào)用的
        //如 View 有 style 屬性時(shí)
        public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        //API 21 之后才使用
        //不會(huì)自動(dòng)調(diào)用
        //一般是在第二個(gè)構(gòu)造函數(shù)里主動(dòng)調(diào)用的
        //如 View 有 style 屬性時(shí)
        public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
            super(context, attrs, defStyleAttr, defStyleRes);
        }
    }

3. View視圖結(jié)構(gòu)

對(duì)于多 View 的視圖悬赏,即視圖組,結(jié)構(gòu)是樹形結(jié)構(gòu):最頂層是 ViewGroup娄徊,ViewGroup下可能有多個(gè)ViewGroup或View闽颇。

View視圖結(jié)構(gòu).png

請(qǐng)記住:無論是 measure 過程寄锐、layout 過程 還是 draw 過程兵多,永遠(yuǎn)都是從 View 樹的根節(jié)點(diǎn)開始測(cè)量或計(jì)算(即從樹的頂端開始),一層一層橄仆,一個(gè)分支一個(gè)分支的進(jìn)行剩膘。最終計(jì)算整個(gè)View樹中各個(gè)View,最終確定整個(gè)View樹的相關(guān)屬性盆顾。

4. Android坐標(biāo)系

  • 區(qū)別于一般的數(shù)學(xué)坐標(biāo)系


    坐標(biāo)系.png
  • Android實(shí)際屏幕上的默認(rèn)坐標(biāo)系如下:( 假設(shè)深色部分為手機(jī)屏幕)


    Android坐標(biāo)系.png

5. View位置描述及獲取

  • View 的坐標(biāo)系統(tǒng)是相對(duì)于父控件而言的怠褐。
    getLeft();      //獲取子 View 左上角距父 View 左側(cè)的距離
    getTop();       //獲取子 View 左上角距父 View 頂部的距離
    getRight();     //獲取子 View 右下角距父 View 左側(cè)的距離
    getBottom();    //獲取子 View 右下角距父 View 頂部的距離
Android位置描述.png
  • 通過 MotionEvent 對(duì)象我們得到點(diǎn)擊事件發(fā)送的 x 和 y 坐標(biāo)
    event.getX();
    event.getY();     //返回的是相對(duì)于當(dāng)前 View 的坐標(biāo).

    event.getRawX();
    event.getRawY();  //返回的是相對(duì)于手機(jī)屏幕的坐標(biāo).
MotionEvent坐標(biāo)描述.png

7. Android的角度 (angle) 與弧度 (radian)

  • 自定義View實(shí)際是將一些簡(jiǎn)單的東西通過數(shù)學(xué)計(jì)算組合到一起形成的效果。
  • 這其中可能會(huì)涉及到 畫布的相關(guān)操作(旋轉(zhuǎn)),以及一些正選函數(shù)的計(jì)算等椎扬,這里面就涉及到角度與弧度的相關(guān)知識(shí)
  • 數(shù)學(xué)公式: 假設(shè) rad 是弧度惫搏, deg 是角度
    2\pi(弧度) = 360(角度)* \pi / 180

deg = \cfrac{180}{\pi} \times rad
同樣的
rad = deg \times \cfrac{\pi}{180}

8. Android的顏色

詳情請(qǐng)查看 http://www.gcssloop.com/customview/Color

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蚕涤,隨后出現(xiàn)的幾起案子筐赔,更是在濱河造成了極大的恐慌,老刑警劉巖揖铜,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茴丰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡天吓,警方通過查閱死者的電腦和手機(jī)贿肩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來龄寞,“玉大人汰规,你說我怎么就攤上這事∥镆兀” “怎么了溜哮?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長色解。 經(jīng)常有香客問我茂嗓,道長,這世上最難降的妖魔是什么科阎? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任述吸,我火速辦了婚禮,結(jié)果婚禮上锣笨,老公的妹妹穿的比我還像新娘蝌矛。我一直安慰自己道批,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布朴读。 她就那樣靜靜地躺著屹徘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衅金。 梳的紋絲不亂的頭發(fā)上噪伊,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音氮唯,去河邊找鬼鉴吹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惩琉,可吹牛的內(nèi)容都是我干的豆励。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞒渠,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼良蒸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伍玖,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤嫩痰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后窍箍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體串纺,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年椰棘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纺棺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邪狞,死狀恐怖祷蝌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帆卓,我是刑警寧澤杆逗,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站鳞疲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蠕蚜。R本人自食惡果不足惜尚洽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靶累。 院中可真熱鬧腺毫,春花似錦癣疟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至急黎,卻和暖如春扎狱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勃教。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工淤击, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人故源。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓污抬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绳军。 傳聞我的和親對(duì)象是個(gè)殘疾皇子印机,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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