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)用的是兩個參數(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è)置的畫筆顏色是紅色,但是實際畫出的線是黑色的(畫筆默認(rèn)顏色是黑色),分析了一下發(fā)現(xiàn)是paint.reset()的問題,reset就是畫筆重置設(shè)置嘛,如何它就會變成默認(rèn)的黑色,這個我懂,可是為什么會把線的顏色改了?畫線的代碼明明在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)文章
關(guān)于android連續(xù)點(diǎn)擊出現(xiàn)多個Activity界面的解決方法
這篇文章主要介紹了關(guān)于android連續(xù)點(diǎn)擊出現(xiàn)多個Activity界面的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android 自定義TextView去除paddingTop和paddingBottom
這篇文章主要介紹了Android 自定義TextView去除paddingTop和paddingBottom的相關(guān)資料,這里提供實例來幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09Android入門之使用SimpleAdapter實現(xiàn)復(fù)雜界面布局
這篇文章主要為大家詳細(xì)介紹了Android如何使用SimpleAdapter實現(xiàn)復(fù)雜的界面布局,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Android有一定的幫助,需要的可以參考一下2022-11-11Android布局——Preference自定義layout的方法
PreferenceActivity是一個方便設(shè)置管理的界面,但是對于界面顯示來說比較單調(diào),所以自定義布局就很有必要了,下面與大家分享下Preference中自定義layout的方法2013-06-06Android仿視頻加載旋轉(zhuǎn)小球動畫效果的實例代碼
這篇文章主要介紹了Android仿視頻加載旋轉(zhuǎn)小球動畫效果的實例代碼,文中給大家提到了PathMeasure的用法,介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09