查找第一图像是否是第二图像的子集

时间:2011-04-22 20:12:18

标签: android

我正在为我的Android应用程序编写Instrumentation测试。我想做的一件事是找出所有UI组件是否都在屏幕上。为此我已经拍摄了完整屏幕的屏幕截图,然后我正在寻找该图像中的特定小部件。 此代码只能在设备上运行,而不是在桌面上运行。

E.g。全屏拍摄(图像-1)有各种Android组件,如textview,button,listview和图像。现在我有了这个图像的一个子集(图像-2),假设按钮的图像。

我怎样才能发现image-2是否是image-1的一部分?

1 个答案:

答案 0 :(得分:2)

假设此代码是从应用程序内部发生的,那么图像比较似乎不是确定视图是否可见的最简单方法。

如果您正在编写某种外部仪器应用程序,并且此答案不适用,请告知我们。

以下是我要测试应用程序中是否存在UI元素的方法:

the Android API docs on the View object:你可以通过在XML文件中设置的ID找到一个视图:

<Button android:id="@+id/my_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/my_button_text"/>

在App中: Button myButton = (Button) findViewById(R.id.my_button);

然后,检查getVisibility()getGlobalVisibleRect (Rect r, Point globalOffset),两者都记录在查看文档页面上。

伪代码:

int[] viewIds = {<known ids from xml>};
foreach(int viewId in viewIds) {
  View v = findViewById(viewId);
  if (v!=null) {
    bool isVisible = (v.getVisibility()==VISIBLE) && getGlobalVisibleRect(new Rect(), new Point());
    // do something with the visible/invisible info
  }
}