android 绘制完成后禁止调用onDraw

问题描述 投票:0回答:3

我想做以下事情:

  1. 获取画布

  2. 在画布上绘制矩形和位图列表 基于for循环

  3. 绘制所有项目后不要调用 onDraw 直到 我旋转设备,因为当我尝试时应用程序太慢 浏览它

  4. 我的画布在 HorizontalScrollView 中

当我尝试滚动时它非常慢

编辑:我正在扩展 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));
        }

    }

请任何人帮忙??

java android android-canvas
3个回答
1
投票

你不能阻止 onDraw 被调用,但你可以覆盖它并使用标志来判断它是否应该执行。我没有看到你的代码,但我建议你这样:

boolean callOnDraw = true;

   @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;


0
投票

我找到了一个解决方法来完成这项工作,我在位图中绘制,每次我尝试调用 onDraw() 我检查我的位图是否不为空使用它

谢谢大家


0
投票

对我来说,它通过在 if 条件后调用

return;
来工作。喜欢:

if(lengthX == lengthTotal) return;
© www.soinside.com 2019 - 2024. All rights reserved.