什么是 isInEditMode() 和 if(isInEditMode()) return;

What is isInEditMode() and if(isInEditMode()) return;

  private void init()
    {
        if (isInEditMode())
            return;

        paint.setStyle(Paint.Style.FILL);
        paint.setColor(getResources().getColor(R.color.control_highlight_color));
        paint.setAntiAlias(true);

        setWillNotDraw(true);
        setDrawingCacheEnabled(true);
        setClickable(true);
    }

我 运行 进入上面的代码,同时试图理解涟漪效应是如何产生的。

1) 我的问题是 isInEditMode() 到底是什么。我看过开发者网站,解释有点让我困惑。

2) 另一个是 if(isInEditMode()) return; 代码,这让我觉得很奇怪。我认为 if 语句检查遵循格式 if(){return;}. 但是,上面代码的格式化方式让我感到困惑,我想知道为什么会这样。

3) 另外,如果 return 值什么都不是,为什么不首先指定它呢?

Explanation is simple have look at this

在开发人员工具(Android studio、Eclipse ...等)中显示时,视图通常处于编辑模式。例如,如果此视图是由可视化用户界面构建器绘制的,则此方法应该 return true。

例如:class在其构造函数中生成一个线程,绘图代码依赖于特定于设备的功能等。此方法通常在自定义小部件的绘图代码中检查。

所以 isInEditMode() 仅用于图形目的(在 Android 工作室 ..等)

Another one is the if(isInEditMode()) return; code which strikes me as odd

作为单行代码,您可以省略 {} 方括号 .

Plus, if the return value is nothing why not just not specifies it in the first place?

作为方法 return 类型是 Void 只有 return 如果有。 放置 return 的原因是 java 如果视图处于编辑模式,则不想进行特定于设备的操作。

在eclipse中编写xml布局时,可以很容易地在预览屏幕区域看到if (isInEditMode()) return;行的效果或 android 工作室。此行将使您的自定义视图被忽略并且不会在预览屏幕中呈现。否则,如果渲染不成功,您会看到下面的错误消息。

通常情况下,自定义视图需要先构建,因为它可以在预览屏幕上显示。有些无法呈现并始终导致错误消息。为防止在编写 xml 代码时出现这种情况,请将此行放在自定义视图中其他初始化代码的上方。

由于您对#2 和#3 没有答案,因此:

如果您的 if 中只有一条指令,则可以省略大括号。另外 java 不能通过缩进来工作,而是通过大括号和分号来工作。所以你可以把单条指令和if放在同一行,只要有分号就没有区别。

对于return;,此方法returns void,因此您不能将任何对象放入return。然而,这允许您退出该方法,即当您有一个 bad/unexpected 值时,因为 return 在调用该方法时立即结束该方法。 return;return void; 的意思大致相同(但我不知道这是否会编译)。

isInEditMode() 指示此视图当前是否处于编辑模式。在开发人员工具中显示时,视图通常处于编辑模式。例如,如果此视图由可视化用户界面构建器绘制,则此方法应 return 为真。 Subclasses 应该检查此方法的 return 值以提供不同的行为,如果他们的正常行为可能会干扰主机环境。例如:class 在其构造函数中生成一个线程,绘图代码依赖于特定于设备的功能等。此方法通常在自定义小部件的绘图代码中检查。