Android自定義View onDraw()方法會(huì)調(diào)用兩次的問題解決
問題
自定義了View后,在構(gòu)造函數(shù)中設(shè)置畫筆顏色,發(fā)現(xiàn)它沒起效,但是在onDraw()里設(shè)置顏色就會(huì)起效,出問題的代碼如下:
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è)置顏色就會(huì)起效 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è)置嘛,如何它就會(huì)變成默認(rèn)的黑色,這個(gè)我懂,可是為什么會(huì)把線的顏色改了?畫線的代碼明明在reset的前面。
分析
通過打日志分析發(fā)現(xiàn)onDraw()方法被執(zhí)行了兩次,也就是畫筆(紅)畫了一次---->畫筆reset(變回默認(rèn)顏色黑色了)---->又執(zhí)行了onDraw,黑筆畫了一次,覆蓋了原來(lái)的紅線。
因此最后看到的顏色會(huì)是黑色,所有有關(guān)畫筆的設(shè)置還是寫在onDraw()里好一點(diǎn)。
目前不知道為什么onDraw()為什么會(huì)執(zhí)行兩次,有沒有大佬可以賜教。
到此這篇關(guān)于Android自定義View onDraw()方法會(huì)調(diào)用兩次的文章就介紹到這了,更多相關(guān)Android自定義View onDraw()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于android連續(xù)點(diǎn)擊出現(xiàn)多個(gè)Activity界面的解決方法
這篇文章主要介紹了關(guān)于android連續(xù)點(diǎn)擊出現(xiàn)多個(gè)Activity界面的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-03-03Android 自定義TextView去除paddingTop和paddingBottom
這篇文章主要介紹了Android 自定義TextView去除paddingTop和paddingBottom的相關(guān)資料,這里提供實(shí)例來(lái)幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09Android入門之使用SimpleAdapter實(shí)現(xiàn)復(fù)雜界面布局
這篇文章主要為大家詳細(xì)介紹了Android如何使用SimpleAdapter實(shí)現(xiàn)復(fù)雜的界面布局,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Android有一定的幫助,需要的可以參考一下2022-11-11Android布局——Preference自定義layout的方法
PreferenceActivity是一個(gè)方便設(shè)置管理的界面,但是對(duì)于界面顯示來(lái)說(shuō)比較單調(diào),所以自定義布局就很有必要了,下面與大家分享下Preference中自定義layout的方法2013-06-06淺析Android中build.gradle的實(shí)用技巧
這篇文章主要介紹了淺析Android中build.gradle的實(shí)用技巧,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-03-03Android仿視頻加載旋轉(zhuǎn)小球動(dòng)畫效果的實(shí)例代碼
這篇文章主要介紹了Android仿視頻加載旋轉(zhuǎn)小球動(dòng)畫效果的實(shí)例代碼,文中給大家提到了PathMeasure的用法,介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09Android編程之短信列表的時(shí)間顯示實(shí)例分析
這篇文章主要介紹了Android編程之短信列表的時(shí)間顯示,實(shí)例分析了Android中短信列表的時(shí)間顯示及具體注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11