app资源与测试资源的不同可绘制负载

时间:2017-01-05 20:52:49

标签: android resources drawable nine-patch bitmapdrawable

我正在为我正在处理的应用编写一些UI测试,我需要根据推送通知切换图像。要在没有推送通知的情况下编写测试,我将png文件放在androidTest res目录中,然后使用来自测试资源的资源ID将其与ContextCompat.getDrawable()一起加载。我还使用应用资源中的ID从应用资源加载相同的图片。

这是加载资源的代码:

Drawable drawable1 = ContextCompat.getDrawable(setupRule.getActivity().getApplicationContext(), R.drawable.my_contact_pic);
Drawable drawable2 = ContextCompat.getDrawable(setupRule.getActivity().getApplicationContext(), com.mycompany.myapp.devenv.test.R.drawable.my_contact_pic);

drawable1是BitmapDrawable的一个实例,drawable2是NinePatchDrawable的一个实例。由于drawable2的底层PNG是drawable1的PNG副本,我希望它们都是BitmapDrawables,我可以编写这个代码,但是想了解为什么会发生这种情况以供将来参考。

1 个答案:

答案 0 :(得分:0)

所以我终于想通了,要从androidTest资源加载png,你必须指定InstrumentationRegister.getContext(),否则它将从应用程序资源加载。巧合的是,我指定的资源ID指向了NinePatch文件。