zoukankan      html  css  js  c++  java
  • 关于界面绘制过程多次回调ondraw()方法产生的问题

    最近项目中,出现一个问题,要做成的效果是这样的,但是一进去就变成这样了,

    后来发现,刚进去是正常的,一闪而过,就变成全部了。

    界面绘制过程,ondraw() 会被多次回调。

    就是说在第一次绘制的时候是可以的,后面的绘制出现了问题,后来发现绘制轨道和阴影渐变色用的是同一个paint对象,

    猜测是paint对象的属性被设置过了。果然是第一次设置了阴影颜色之后,第二次绘制时属性还在,于是绘制进度条轨道

    @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
    
            int centre = getWidth() / 2; 
            int radius = (int) (centre - roundWidth / 2); 
            
            paint.setColor(getResources().getColor(R.color.proessround));
            paint.setStyle(Paint.Style.STROKE);
       paint.setStrokeWidth(roundWidth); paint.setAntiAlias(
    true);
        //关键语句:设置进度条轨道时应该设置背景色为空
    paint.setShader(
    null); canvas.drawCircle(centre, centre, radius, paint); paint.setStrokeWidth(0); paint.setColor(textColor); paint.setTextSize(textSize); paint.setTypeface(Typeface.DEFAULT_BOLD); int percent = (int) (((float) progress / (float) max) * 100); float textWidth = paint.measureText(percent + "%"); if (textIsDisplayable && percent != 0 && style == STROKE) { canvas.drawText(percent + "%", centre - textWidth / 2, centre + textSize / 2, paint); } paint.setStrokeWidth(roundWidth); // paint.setColor(roundProgressColor); int[] mColors = new int[] {// 渐变色数组 0xFF0da7ff, 0xFF31da41, 0xFF31da41, 0xFF0da7ff ,0xFF0da7ff }; Shader sg = new SweepGradient(0, 0, mColors, null); SweepGradient sg2 = new SweepGradient(centre, centre, getResources() .getColor(R.color.proessstartcolor), getResources().getColor( R.color.proessendcolor)); paint.setShader(sg); RectF oval = new RectF(centre - radius, centre - radius, centre + radius, centre + radius); switch (style) { case STROKE: { Log.e("zhang", centre+"调试1:"+radius); paint.setStyle(Paint.Style.STROKE); canvas.drawArc(oval, -90, 360 * progress / max, false, paint); break; } case FILL: { Log.e("zhang", "调试2:"+360 * progress / max); paint.setStyle(Paint.Style.FILL_AND_STROKE); if (progress != 0) canvas.drawArc(oval, 0, 360 * progress / max, true, paint); break; } } }

    时就出现了背景色。

  • 相关阅读:
    99年人民币冠号大全
    9910的5种水印冠号发行量分布图
    儿童、青少年长身高的注意事项
    钱币评级流程与方法
    99版人民币收藏价值分析
    四、五版币冠字号发行量统计排行
    如何收藏第四套人民币大全套
    第四套荧光钞大全介绍
    小程序加载中提示实现
    微信小程序navigateBack如何带参数
  • 原文地址:https://www.cnblogs.com/Jackie-zhang/p/5210436.html
Copyright © 2011-2022 走看看