什么是View
View這個(gè)類代表用戶界面組件的基本構(gòu)建塊解寝。View在屏幕上占據(jù)一個(gè)矩形區(qū)域,并負(fù)責(zé)繪制和事件處理。View是用于創(chuàng)建交互式用戶界面組件(按鈕酸钦、文本等)的基礎(chǔ)類。它的子類ViewGroup是所有布局的父類咱枉,它是一個(gè)可以包含其他view或者viewGroup并定義它們的布局屬性的看不見(jiàn)的容器卑硫。
View的方法
View類中包含眾多的方法,這里挑出一些比較常用的方法分類介紹庞钢。
構(gòu)造方法
View的構(gòu)造方法一共有四個(gè)拔恰,其中常用的有下面三個(gè):
View(Context context)
在java代碼中直接new一個(gè)View實(shí)例的時(shí)候,會(huì)調(diào)用此構(gòu)造函數(shù).
View(Context context, AttributeSet attrs)
在布局文件中使用View時(shí)會(huì)調(diào)用此構(gòu)造函數(shù),AttributeSet 是View的xml屬性
View(Context context, AttributeSet attrs, int defStyleAttr)
主動(dòng)調(diào)用基括,當(dāng)需要用到自定義屬性時(shí)在前兩個(gè)方法中調(diào)用此方法颜懊。
布局
onFinishInflate()
當(dāng)View和他的所有子控件被XML布局文件填充完成時(shí)被調(diào)用。(這個(gè)方法里面可以完成一些初始化,比如初始化子控件)河爹。
onMeasure(int widthMeasureSpec, int heightMeasureSpec)
當(dāng)決定View和它的子View的尺寸需求時(shí)被調(diào)用(也就是測(cè)量控件大小時(shí)調(diào)用)匠璧,widthMeasureSpec和heightMeasureSpec是由尺寸和模式組合而成的一個(gè)值,用來(lái)描述父控件對(duì)子控件尺寸的約束咸这。將widthMeasureSpec和heightMeasureSpec值傳入MeasureSpec類的getMode和getSize方法就能分別獲得View寬高的模式和具體尺寸夷恍。
onLayout(boolean changed, int left, int top, int right, int bottom)
當(dāng)View給他的子View分配大小和位置的時(shí)候調(diào)用(擺放子控件)
onSizeChanged(int w, int h, int oldw, int oldh)
當(dāng)view尺寸發(fā)生變化時(shí)調(diào)用
繪制
onDraw(Canvas canvas)
在視圖上繪制所要呈現(xiàn)的內(nèi)容時(shí)調(diào)用
事件處理
onKeyDown(int keyCode, KeyEvent event)
按下按鍵時(shí)調(diào)用,keyCode是按鍵編號(hào)媳维,KeyEvent是按鍵事件
onKeyUp(int keyCode, KeyEvent event)
抬起按鍵時(shí)調(diào)用
onTouchEvent(MotionEvent event)
觸摸屏幕時(shí)調(diào)用酿雪,MotionEvent是捕捉到的觸摸事件
焦點(diǎn)
onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect)
獲取到或者失去焦點(diǎn)時(shí)調(diào)用
onWindowFocusChanged(boolean hasWindowFocus)
窗口獲取或者失去焦點(diǎn)時(shí)調(diào)用
Attaching
onAttachedToWindow()
當(dāng)視圖被連接到一個(gè)窗口時(shí)調(diào)用
onDetachedFromWindow()
當(dāng)視圖從窗口分離時(shí)調(diào)用
onWindowVisibilityChanged(int)```
當(dāng)View的窗口的可見(jiàn)性發(fā)生改變時(shí)調(diào)用