Android自定義View繪制的方法及過程(二)
上一篇《Android 自定義View(一) Paint、Rect、Canvas介紹》講了最基礎(chǔ)的如何自定義一個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)造方法,這個不做解釋,鐵定第一個被調(diào)用。
作用:傳入Context
2、onFinishInflate() 當View中所有的子控件均被映射成xml后觸發(fā)
3、onMeasure() 在View放置到父容器時調(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ā)生改變時調(diào)用。所以這里初始化會被調(diào)用一次
作用:獲取控件的寬和高度
5、onDraw() 最后就是繪制圖形了
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android自定義View之繼承TextView繪制背景
- Android自定義View系列之Path繪制仿支付寶支付成功動畫
- Android自定義view繪制圓環(huán)占比動畫
- Android自定義View實現(xiàn)shape圖形繪制
- Android自定義View實現(xiàn)繪制虛線的方法詳解
- Android使用自定義View繪制漸隱漸現(xiàn)動畫
- 自定義滑動按鈕為例圖文剖析Android自定義View繪制
- Android自定義View繪制隨機生成圖片驗證碼
- Android編程開發(fā)之在Canvas中利用Path繪制基本圖形(圓形,矩形,橢圓,三角形等)
- Android使用Canvas繪制圓形進度條效果
- Android開發(fā)使用自定義View將圓角矩形繪制在Canvas上的方法
相關(guān)文章
Android開發(fā)之創(chuàng)建可點擊的Button實現(xiàn)方法
這篇文章主要介紹了Android創(chuàng)建可點擊的Button實現(xiàn)方法,實例分析了Android創(chuàng)建button按鈕過程中的界面配置,功能實現(xiàn)與相關(guān)注意事項,需要的朋友可以參考下2016-03-03android 之Spinner下拉菜單實現(xiàn)級聯(lián)
android 之Spinner下拉菜單實現(xiàn)級聯(lián),需要的朋友可以參考一下2013-02-02Flutter使用Overlay與ColorFiltered新手引導(dǎo)實現(xiàn)示例
這篇文章主要介紹了Flutter使用Overlay與ColorFiltered新手引導(dǎo)實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10Android報錯Error:Could not find com.android.tools.build:gradle
這篇文章主要介紹了Android Studio報錯Error:Could not find com.android.tools.build:gradle:4.1解決辦法,碰到該問題的同學(xué)快過來看看吧2021-08-08Android實現(xiàn)環(huán)信修改頭像和昵稱
這篇文章主要為大家詳細介紹了Android實現(xiàn)環(huán)信修改頭像和昵稱,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02