我将 VectorDrawableCompat 设置为 View 的背景。
仅当我单击可绘制的非透明区域时,我才需要在此 View 上处理单击。
对于 BitmapDrawable 来说非常简单 - 我可以只检查 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/