我的视图背景设置为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/

10-09 07:41