有没有办法比较由Bitmaps
包裹的两个BitmapDrawable
。
如果大小不匹配,则比较不会失败,但它应匹配像素和Bitmap
的颜色
我不确定Android的本机部分如何绘制Bitmap
,因为sameAs
即使色泽不同,也会返回true。
如果大小不同,我可以彼此创建缩放的Bitmap
并将它们进行比较。
在我的源代码中,我将DrawableCompat.setTint
与ImageViews
Drawable
结合使用,并且在测试代码中,我从资源中加载Drawable
,并以相同的方式对其进行着色。
有什么想法吗?我想进行测试,以根据是否按下来验证Drawable
的来源ImageView
和颜色。
NOTE 1:我的可绘制对象是白色的,我使用色调设置颜色。 Bitmaps
的循环像素不起作用,因为此时像素为白色,所以很可能Android本机面在绘制时会使用淡色。
注2:
使用compile 'com.android.support:palette-v7:21.0.0'
和Palette.from(bitmap).generate();
都无济于事,因为返回的调色板有0个色板,因此在那里无法获得任何颜色信息。这是我当前的匹配者:
public static Matcher<View> withDrawable(final Drawable d) { return new BoundedMatcher<View, ImageView>(ImageView.class) { @Override public boolean matchesSafely(ImageView iv) { if (d == null) { return iv.getDrawable() == null; } else if (iv.getDrawable() == null) { return false; } if (d instanceof BitmapDrawable && iv.getDrawable() instanceof BitmapDrawable) { BitmapDrawable d1 = (BitmapDrawable) d; BitmapDrawable d2 = (BitmapDrawable) iv.getDrawable(); Bitmap b1 = d1.getBitmap(); Bitmap b2 = d2.getBitmap(); return b1.sameAs(b2); } return iv.getDrawable().getConstantState().equals(d.getConstantState()); } @Override public void describeTo(Description description) { description.appendText("with drawable: "); } }; }
谢谢。
是否有某种方法可以比较由BitmapDrawable包装的两个位图。如果大小不匹配,则比较应该不会失败,但是应该匹配像素和位图的颜色I ...
为此,我使用Frankie Sardo编写的匹配器-https://gist.github.com/frankiesardo/7490059。有几个匹配器必须解决您的问题。全部归功于他。
我遇到了相反的问题:当绘画的大小和/或色调可以改变时,匹配它。