我的视图背景设置为VectorDrawableCompat。
我需要处理点击这个视图,只有当我点击了一个非透明的可绘制区域。
因为位图绘制非常简单-我可以检查getPixel(x,y),我可以用vectorDrawableCompat做些什么?
最佳答案
您可以尝试对访问字段VectorDrawableCompat.mVectorState
使用反射,并从属性mCachedBitmap
获取缓存位图。
像这样的:
public static int getColorAt(VectorDrawableCompat drawable, float x, float y) {
try {
final Field field = drawable.getClass().getDeclaredField("mVectorState");
field.setAccessible(true);
final Object state = field.get(drawable);
final Field bitmapField = state.getClass().getDeclaredField("mCachedBitmap");
bitmapField.setAccessible(true);
final Bitmap bitmap = (Bitmap) bitmapField.get(state);
return bitmap.getPixel((int) x, (int) y);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return -1;
}
关于android - 如何通过指定的x和y坐标获取VectorDrawableCompat的像素颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37405257/