完成绘制android后禁用调用onDraw

kyks70gy  于 2023-03-11  发布在  Android
关注(0)|答案(3)|浏览(130)

我想作如下说明:
1.起锚
1.基于for循环在画布上绘制矩形和位图列表
1.绘制完所有项目后,在旋转设备之前不调用onDraw,因为当我尝试在应用程序中导航时,应用程序太慢
1.我的画布在水平滚动视图中
当我试图滚动时,它非常慢
编辑:我正在扩展View类,所以我可以保存视图并且不调用onDraw,除非我想让它失效吗?
编辑2:这是我的onDraw方法

@Override
    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);

        for (int i = 0 ; i < mIcons.size() ; i++) {

            prepareItem(canvas, paint, mIcons.get(i));
        }

    }

请问有谁能帮忙吗??

wswtfjt7

wswtfjt71#

你不能阻止onDraw被调用,但你可以覆盖它,并使用flag来告诉它是否应该执行。我没有看到你的代码,但我建议你这样做:
布尔调用绘图时=真;

@Override
    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);

      if(callOnDraw){
        for (int i = 0 ; i < mIcons.size() ; i++) {

            prepareItem(canvas, paint, mIcons.get(i));
        }
        callOnDraw = false;
      }

    }

当你想停止绘制时,你可以设置标记callOnDraw = false;

67up9zun

67up9zun2#

我已经找到了一个变通方案来实现这一点,我已经在位图中绘制,每次我试图调用onDraw()时,我都会检查我的位图是否不为空,使用它
谢谢大家

p5fdfcr1

p5fdfcr13#

对我来说,在if条件后调用return;是有效的。

if(lengthX == lengthTotal) return;

相关问题