Android自定义View onDraw()方法会调用两次的问题解决

 更新时间:2024年01月22日 11:29:09   作者:新镜  
这篇文章主要介绍了Android自定义View onDraw()方法会调用两次的问题解决,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

问题

自定义了View后,在构造函数中设置画笔颜色,发现它没起效,但是在onDraw()里设置颜色就会起效,出问题的代码如下:

     public RoundSeekbarView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        //布局引用调用的是两个参数的构造函数
        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()里设置颜色就会起效
        paint.setStrokeWidth(100);
        canvas.drawLine(100, 0,100,100,paint);
        paint.reset();
        Log.v("RoundSeekbarView", "onDraw end");
    }

我在构造函数中设置的画笔颜色是红色,但是实际画出的线是黑色的(画笔默认颜色是黑色),分析了一下发现是paint.reset()的问题,reset就是画笔重置设置嘛,如何它就会变成默认的黑色,这个我懂,可是为什么会把线的颜色改了?画线的代码明明在reset的前面。

分析

通过打日志分析发现onDraw()方法被执行了两次,也就是画笔(红)画了一次---->画笔reset(变回默认颜色黑色了)---->又执行了onDraw,黑笔画了一次,覆盖了原来的红线。

因此最后看到的颜色会是黑色,所有有关画笔的设置还是写在onDraw()里好一点。

目前不知道为什么onDraw()为什么会执行两次,有没有大佬可以赐教。

到此这篇关于Android自定义View onDraw()方法会调用两次的文章就介绍到这了,更多相关Android自定义View onDraw()方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于android连续点击出现多个Activity界面的解决方法

    关于android连续点击出现多个Activity界面的解决方法

    这篇文章主要介绍了关于android连续点击出现多个Activity界面的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android ListView介绍及优化方案

    Android ListView介绍及优化方案

    这篇文章主要介绍了Android ListView介绍及优化方案的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Android 自定义TextView去除paddingTop和paddingBottom

    Android 自定义TextView去除paddingTop和paddingBottom

    这篇文章主要介绍了Android 自定义TextView去除paddingTop和paddingBottom的相关资料,这里提供实例来帮助大家实现这样的功能,需要的朋友可以参考下
    2017-09-09
  • Android入门之使用SimpleAdapter实现复杂界面布局

    Android入门之使用SimpleAdapter实现复杂界面布局

    这篇文章主要为大家详细介绍了Android如何使用SimpleAdapter实现复杂的界面布局,文中的示例代码讲解详细,对我们学习Android有一定的帮助,需要的可以参考一下
    2022-11-11
  • Android布局——Preference自定义layout的方法

    Android布局——Preference自定义layout的方法

    PreferenceActivity是一个方便设置管理的界面,但是对于界面显示来说比较单调,所以自定义布局就很有必要了,下面与大家分享下Preference中自定义layout的方法
    2013-06-06
  • 浅析Android中build.gradle的实用技巧

    浅析Android中build.gradle的实用技巧

    这篇文章主要介绍了浅析Android中build.gradle的实用技巧,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Kotlin协程到底是如何切换线程的

    Kotlin协程到底是如何切换线程的

    kotlin协程可以用同步方式写异步代码,自动实现对线程切换的管理,本文主要给大家讲解kotlin协程到底是怎么切换线程的,感兴趣的朋友跟随小编一起看看吧
    2021-07-07
  • Android仿视频加载旋转小球动画效果的实例代码

    Android仿视频加载旋转小球动画效果的实例代码

    这篇文章主要介绍了Android仿视频加载旋转小球动画效果的实例代码,文中给大家提到了PathMeasure的用法,介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Android Kotlin Flow 冷热流详解

    Android Kotlin Flow 冷热流详解

    在Android开发中,Flow是Kotlin协程库的重要组成部分,用于处理异步数据流,它能够异步生产多个值,类似于RxJava中的Observable,本文介绍Android Kotlin Flow 冷热流,感兴趣的朋友一起看看吧
    2024-11-11
  • Android编程之短信列表的时间显示实例分析

    Android编程之短信列表的时间显示实例分析

    这篇文章主要介绍了Android编程之短信列表的时间显示,实例分析了Android中短信列表的时间显示及具体注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11

最新评论