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)繪制虛線的方法詳解
- 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-03
android 之Spinner下拉菜單實(shí)現(xiàn)級(jí)聯(lián)
android 之Spinner下拉菜單實(shí)現(xiàn)級(jí)聯(lián),需要的朋友可以參考一下2013-02-02
Flutter使用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-04
Android報(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-08
Android簡(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-07
Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

