Android自定義View繪制的方法及過程(二)
上一篇《Android 自定義View(一) Paint、Rect、Canvas介紹》講了最基礎(chǔ)的如何自定義一個(gè)View,以及View用到的一些工具類。下面講下View繪制的方法及過程
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è)不做解釋,鐵定第一個(gè)被調(diào)用。
作用:傳入Context
2、onFinishInflate() 當(dāng)View中所有的子控件均被映射成xml后觸發(fā)
3、onMeasure() 在View放置到父容器時(shí)調(diào)用
作用:測量View的大小,也可以通過下面方式,修改View的大小
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(100,100);
}
也可以通過以下方式獲取控件的寬和高
@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)用。所以這里初始化會被調(diào)用一次
作用:獲取控件的寬和高度
5、onDraw() 最后就是繪制圖形了
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android自定義View之繼承TextView繪制背景
- Android自定義View系列之Path繪制仿支付寶支付成功動畫
- Android自定義view繪制圓環(huán)占比動畫
- Android自定義View實(shí)現(xiàn)shape圖形繪制
- Android自定義View實(shí)現(xiàn)繪制虛線的方法詳解
- Android使用自定義View繪制漸隱漸現(xiàn)動畫
- 自定義滑動按鈕為例圖文剖析Android自定義View繪制
- Android自定義View繪制隨機(jī)生成圖片驗(yàn)證碼
- Android編程開發(fā)之在Canvas中利用Path繪制基本圖形(圓形,矩形,橢圓,三角形等)
- Android使用Canvas繪制圓形進(jìn)度條效果
- Android開發(fā)使用自定義View將圓角矩形繪制在Canvas上的方法
相關(guān)文章
android okhttp的基礎(chǔ)使用【入門推薦】
本文主要總結(jié)了Android著名網(wǎng)絡(luò)框架-okhttp的基礎(chǔ)使用。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
Android.permission.MODIFY_PHONE_STATE權(quán)限問題解決辦法
這篇文章主要介紹了Android.permission.MODIFY_PHONE_STATE權(quán)限問題解決辦法的相關(guān)資料,這里提供了幾種方法幫助大家解決這種問題,需要的朋友可以參考下2016-12-12
android使用SharedPreferences進(jìn)行數(shù)據(jù)存儲
Android平臺給我們提供了一個(gè)SharedPreferences類,它是一個(gè)輕量級的存儲類,特別適合用于保存軟件配置參數(shù)。有興趣的可以了解一下。2017-02-02
android中實(shí)現(xiàn)OkHttp下載文件并帶進(jìn)度條
本篇文章主要介紹了android中實(shí)現(xiàn)OkHttp下載文件并帶進(jìn)度條,OkHttp是比較火的網(wǎng)絡(luò)框架,它支持同步與異步請求,支持緩存,可以攔截,更方便下載大文件與上傳文件的操作,有興趣的可以了解一下2017-07-07
Android實(shí)現(xiàn)添加商品到購物車動畫效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)添加商品到購物車的動畫效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Android viewpager無限輪播獲取網(wǎng)絡(luò)圖片功能
這篇文章主要為大家詳細(xì)介紹了Android viewpager無限輪播獲取網(wǎng)絡(luò)圖片功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09

