View 體系及自定義View

1.理解View的坐標(biāo)體系

Android中有兩種坐標(biāo)系市袖,分別為Android坐標(biāo)系和視圖坐標(biāo)系咙鞍。 在Android中苞冯,將屏幕的左上角的頂點(diǎn)作為Android坐標(biāo)系的原點(diǎn),這個(gè)原點(diǎn)向右是X軸正方向肯尺,原點(diǎn)向下是Y軸正方向沃缘。
MotionEvent提供的getRawX()和getRawY()獲取的坐標(biāo)都是Android坐標(biāo)系的坐標(biāo)。

2.了解View 滑動(dòng)的實(shí)現(xiàn)機(jī)理

實(shí)現(xiàn)滑動(dòng)效果要監(jiān)聽用戶的觸摸事件则吟,并根據(jù)事件傳入的坐標(biāo)槐臀,動(dòng)態(tài)且不斷的改變 View 的坐標(biāo),從而實(shí)現(xiàn) View 跟隨用戶觸摸的滑動(dòng)而滑動(dòng)氓仲。

  • 通過 layout() 方法
  • offsetLeftAndRight() 方法和 offsetTopAndBottom()
  • 通過修改 LayoutParams 實(shí)現(xiàn)滑動(dòng)
  • 使用動(dòng)畫
  • View 的 scrollTo()水慨、scrollBy() 方法實(shí)現(xiàn)滑動(dòng)
  • 通過 Scroller 類實(shí)現(xiàn)滑動(dòng)
  • ViewDragHelper 實(shí)現(xiàn)滑動(dòng)

3.了解View 動(dòng)畫的種類及實(shí)現(xiàn)

補(bǔ)間動(dòng)畫

在res/anim文件夾中定義

幀動(dòng)畫

在res/drawable文件下新建xml

屬性動(dòng)畫

  • 自定義估值器Evaluator
  • 設(shè)置動(dòng)畫過度ValueAnimator
  • 動(dòng)畫集合Animatorset

4.掌握屬性動(dòng)畫涉及的相關(guān)類得糜,以及開發(fā)流程

ValueAnimator,ObjectAnimator(繼承自ValueAnimator)晰洒,Animatorset(動(dòng)畫集合)

開發(fā)流程

  • 自定義估值器Evaluator
  • 設(shè)置動(dòng)畫過度ValueAnimator
  • 動(dòng)畫集合Animatorset

5.了解 View 的事件分發(fā)機(jī)制

事件分發(fā)的三個(gè)方法

  • dispatchTouchEvent:用于分發(fā)傳遞事件朝抖,只要事件能夠傳遞到當(dāng)前View,這個(gè)方法就會(huì)被調(diào)用欢顷。
  • onInterceptTouchEvent:用于判斷是否攔截事件槽棍,不往下傳遞捉蚤。(此方法只有ViewGroup擁有抬驴,Activity和View沒有)此方法在dispatchTouchEvent方法中調(diào)用。
  • onTouchEvent:用于處理事件缆巧,同樣也是在dispatchTouchEvent方法中調(diào)用布持。

6.理解 View 的工作流程,以及measure過程陕悬、layout過程和draw過程的實(shí)現(xiàn)機(jī)理

View 的工作流程

流程主要是指 measure题暖、layout、draw 這三大流程

measure 測(cè)量

  • 面中全部視圖運(yùn)行requestLayout
  • 運(yùn)行scheduleTraversals捉超,當(dāng)中發(fā)送一個(gè)空的消息
  • 傳遞的消息是DO_TRAVERSAL胧卤,分支調(diào)用performTraversals
  • performTraversals方法中調(diào)用host.measure

layout 布局

  • setFrame方法設(shè)定View四個(gè)頂點(diǎn)的位置
  • 調(diào)用onLayout方法
  • setChildFrame方法調(diào)用子元素的layout方法設(shè)定子元素位置

draw 繪制

  • 繪制背景background.draw(canvas)
  • 繪制自己(onDraw)
  • 繪制children(diapatchDraw):遍歷所有子元素的draw方法
  • 繪制裝飾(onDraeScrollBars)

7.理解自定義 View的4種類型,掌握最簡(jiǎn)單的自定義View的實(shí)現(xiàn)拼岳。

組合控件枝誊、自繪控件、繼承控件

例子:

  • 新建一個(gè)Android項(xiàng)目惜纸,創(chuàng)建自定義標(biāo)題欄的布局文件title_bar.xml
  • 創(chuàng)建一個(gè)類TitleView叶撒,繼承自RelativeLayout
  • 在activity_main.xml中引入自定義的標(biāo)題欄
  • 在MainActivity中獲取自定義的標(biāo)題欄,并且為返回按鈕添加自定義點(diǎn)擊事件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耐版,一起剝皮案震驚了整個(gè)濱河市祠够,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粪牲,老刑警劉巖古瓤,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異腺阳,居然都是意外死亡落君,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門舌狗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叽奥,“玉大人,你說我怎么就攤上這事痛侍〕ィ” “怎么了魔市?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赵哲。 經(jīng)常有香客問我待德,道長(zhǎng),這世上最難降的妖魔是什么枫夺? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任将宪,我火速辦了婚禮,結(jié)果婚禮上橡庞,老公的妹妹穿的比我還像新娘较坛。我一直安慰自己,他們只是感情好扒最,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布丑勤。 她就那樣靜靜地躺著,像睡著了一般吧趣。 火紅的嫁衣襯著肌膚如雪法竞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天强挫,我揣著相機(jī)與錄音岔霸,去河邊找鬼。 笑死俯渤,一個(gè)胖子當(dāng)著我的面吹牛呆细,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稠诲,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼侦鹏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了臀叙?” 一聲冷哼從身側(cè)響起略水,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劝萤,沒想到半個(gè)月后渊涝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡床嫌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年跨释,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厌处。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳖谈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阔涉,到底是詐尸還是另有隱情缆娃,我是刑警寧澤捷绒,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站贯要,受9級(jí)特大地震影響暖侨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜崇渗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一字逗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宅广,春花似錦葫掉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至兽肤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绪抛,已是汗流浹背资铡。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幢码,地道東北人笤休。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像症副,于是被迫代替她去往敵國(guó)和親店雅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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