Android自定義View繪制的方法及過(guò)程(二)
上一篇《Android 自定義View(一) Paint、Rect、Canvas介紹》講了最基礎(chǔ)的如何自定義一個(gè)View,以及View用到的一些工具類(lèi)。下面講下View繪制的方法及過(guò)程
public class MyView extends View { private String TAG = "--------MyView"; private int width, height; public MyView(Context context, AttributeSet attrs) { super(context, attrs); Log.i(TAG,"MyView()"); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); width = w; height = h; Log.i(TAG,"onSizeChanged()"); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Log.i(TAG,"onDraw()"); Rect rect = new Rect(0, 0, width, height); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawRect(rect, paint); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Log.i(TAG,"onMeasure()"); } @Override protected void onFinishInflate() { super.onFinishInflate(); Log.i(TAG,"onFinishInflate()"); } }
03-15 01:28:53.111 30961-30961/com.myView I/--------MyView: MyView()
03-15 01:28:53.111 30961-30961/com.myView I/--------MyView: onFinishInflate()
03-15 01:28:53.210 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.210 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.520 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.520 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.520 30961-30961/com.myView I/--------MyView: onSizeChanged()
03-15 01:28:53.543 30961-30961/com.myView I/--------MyView: onDraw()
1、MyView() 構(gòu)造方法,這個(gè)不做解釋?zhuān)F定第一個(gè)被調(diào)用。
作用:傳入Context
2、onFinishInflate() 當(dāng)View中所有的子控件均被映射成xml后觸發(fā)
3、onMeasure() 在View放置到父容器時(shí)調(diào)用
作用:測(cè)量View的大小,也可以通過(guò)下面方式,修改View的大小
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(100,100); }
也可以通過(guò)以下方式獲取控件的寬和高
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = MeasureSpec.getSize(widthMeasureSpec); int height = MeasureSpec.getSize(heightMeasureSpec)); }
4、onSizeChanged() 在控件大小發(fā)生改變時(shí)調(diào)用。所以這里初始化會(huì)被調(diào)用一次
作用:獲取控件的寬和高度
5、onDraw() 最后就是繪制圖形了
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android自定義View之繼承TextView繪制背景
- Android自定義View系列之Path繪制仿支付寶支付成功動(dòng)畫(huà)
- Android自定義view繪制圓環(huán)占比動(dòng)畫(huà)
- Android自定義View實(shí)現(xiàn)shape圖形繪制
- Android自定義View實(shí)現(xiàn)繪制虛線(xiàn)的方法詳解
- Android使用自定義View繪制漸隱漸現(xiàn)動(dòng)畫(huà)
- 自定義滑動(dòng)按鈕為例圖文剖析Android自定義View繪制
- Android自定義View繪制隨機(jī)生成圖片驗(yàn)證碼
- Android編程開(kāi)發(fā)之在Canvas中利用Path繪制基本圖形(圓形,矩形,橢圓,三角形等)
- Android使用Canvas繪制圓形進(jìn)度條效果
- Android開(kāi)發(fā)使用自定義View將圓角矩形繪制在Canvas上的方法
相關(guān)文章
Android開(kāi)發(fā)之創(chuàng)建可點(diǎn)擊的Button實(shí)現(xiàn)方法
這篇文章主要介紹了Android創(chuàng)建可點(diǎn)擊的Button實(shí)現(xiàn)方法,實(shí)例分析了Android創(chuàng)建button按鈕過(guò)程中的界面配置,功能實(shí)現(xiàn)與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-03-03android 之Spinner下拉菜單實(shí)現(xiàn)級(jí)聯(lián)
android 之Spinner下拉菜單實(shí)現(xiàn)級(jí)聯(lián),需要的朋友可以參考一下2013-02-02Flutter使用Overlay與ColorFiltered新手引導(dǎo)實(shí)現(xiàn)示例
這篇文章主要介紹了Flutter使用Overlay與ColorFiltered新手引導(dǎo)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10淺析Android手機(jī)衛(wèi)士保存手機(jī)安全號(hào)碼
這篇文章主要介紹了淺析Android手機(jī)衛(wèi)士保存手機(jī)安全號(hào)碼的相關(guān)資料,需要的朋友可以參考下2016-04-04Android報(bào)錯(cuò)Error:Could not find com.android.tools.build:gradle
這篇文章主要介紹了Android Studio報(bào)錯(cuò)Error:Could not find com.android.tools.build:gradle:4.1解決辦法,碰到該問(wèn)題的同學(xué)快過(guò)來(lái)看看吧2021-08-08Android簡(jiǎn)單實(shí)現(xiàn)啟動(dòng)畫(huà)面的方法
這篇文章主要介紹了Android簡(jiǎn)單實(shí)現(xiàn)啟動(dòng)畫(huà)面的方法,結(jié)合實(shí)例形式分析了啟動(dòng)畫(huà)面核心代碼及相關(guān)函數(shù),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱(chēng)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱(chēng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02