Android自定義View onDraw()方法會調(diào)用兩次的問題解決
問題
自定義了View后,在構(gòu)造函數(shù)中設(shè)置畫筆顏色,發(fā)現(xiàn)它沒起效,但是在onDraw()里設(shè)置顏色就會起效,出問題的代碼如下:
public RoundSeekbarView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//布局引用調(diào)用的是兩個(gè)參數(shù)的構(gòu)造函數(shù)
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setAntiAlias(true);
paint.setDither(true);
paint.setColor(Color.RED);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.v("RoundSeekbarView", "onDraw");
//paint.setColor(Color.RED); //在onDraw()里設(shè)置顏色就會起效
paint.setStrokeWidth(100);
canvas.drawLine(100, 0,100,100,paint);
paint.reset();
Log.v("RoundSeekbarView", "onDraw end");
}我在構(gòu)造函數(shù)中設(shè)置的畫筆顏色是紅色,但是實(shí)際畫出的線是黑色的(畫筆默認(rèn)顏色是黑色),分析了一下發(fā)現(xiàn)是paint.reset()的問題,reset就是畫筆重置設(shè)置嘛,如何它就會變成默認(rèn)的黑色,這個(gè)我懂,可是為什么會把線的顏色改了?畫線的代碼明明在reset的前面。
分析

通過打日志分析發(fā)現(xiàn)onDraw()方法被執(zhí)行了兩次,也就是畫筆(紅)畫了一次---->畫筆reset(變回默認(rèn)顏色黑色了)---->又執(zhí)行了onDraw,黑筆畫了一次,覆蓋了原來的紅線。
因此最后看到的顏色會是黑色,所有有關(guān)畫筆的設(shè)置還是寫在onDraw()里好一點(diǎn)。
目前不知道為什么onDraw()為什么會執(zhí)行兩次,有沒有大佬可以賜教。
到此這篇關(guān)于Android自定義View onDraw()方法會調(diào)用兩次的文章就介紹到這了,更多相關(guān)Android自定義View onDraw()方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Flutter實(shí)現(xiàn)按位置大小比例布局的控件
做視頻監(jiān)控項(xiàng)目時(shí)需要需要展示多分屏,比如2x2、3x3、414等等,所以本文為大家介紹了如何基于Flutter實(shí)現(xiàn)按位置大小比例布局的控件,需要的可以參考一下2023-08-08
Android實(shí)現(xiàn)底部滾輪式選擇彈跳框
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部滾輪式選擇彈跳框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
Android組件實(shí)現(xiàn)長按彈出上下文菜單功能的方法
這篇文章主要介紹了Android組件實(shí)現(xiàn)長按彈出上下文菜單功能的方法,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)長按彈出上下文菜單的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Android異步消息處理機(jī)制實(shí)現(xiàn)原理詳解
這篇文章主要介紹了Android異步消息處理機(jī)制實(shí)現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Android?Flutter使用本地?cái)?shù)據(jù)庫編寫備忘錄應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Android?Flutter如何使用本地?cái)?shù)據(jù)庫實(shí)現(xiàn)編寫簡單的備忘錄應(yīng)用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03
Android CoordinatorLayout詳解及實(shí)例代碼
這篇文章主要介紹了Android CoordinatorLayout詳解及實(shí)例代碼的相關(guān)資料,CoordinatorLayout基本實(shí)現(xiàn)兩個(gè)功能: 作為頂層布局 和調(diào)度協(xié)調(diào)子布局,這里詳細(xì)介紹此部分知識,需要的朋友可以參考下2016-12-12
Android高性能日志寫入方案的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于Android高性能日志寫入方案的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01

