将触摸的Pixel的颜色设置为FrameLayout

时间:2012-11-01 23:52:17

标签: android bitmap background-color

我试图获取触摸像素的颜色并将此颜色设置为FrameLayout的背景颜色,但它不起作用。为什么呢?

这是我的代码:

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            float xPos = event.getX();
            float yPos = event.getY();

            ImageView iview = (ImageView)v;
            Bitmap bitmap = ((BitmapDrawable)iview.getDrawable()).getBitmap();
            int color = bitmap.getPixel(Math.round(xPos), Math.round(yPos));

            myFrameLayout.setBackgroundColor(Integer.parseInt(Integer.toString(color), 16));

            return true;
        }

1 个答案:

答案 0 :(得分:0)

错误在于解析颜色。

直接使用int颜色应该做你需要的。

    int color = bitmap.getPixel(Math.round(xPos), Math.round(yPos));
    myFrameLayout.setBackgroundColor(color);

但是,如果您真的想要解析它并重构,请使用Color.argb(int,int,int,int)方法来执行此操作,其中int参数为0x00-0xFF值,用于透明度,红色,绿色,蓝色的成分。

    int color = bitmap.getPixel(Math.round(xPos), Math.round(yPos));
    myFrameLayout.setBackgroundColor(Color.argb(
         (color & (255 << 24)) >> 24, // take the top 8 bits
         (color & (255 << 16)) >> 16, // take the second 8 bits
         (color & (255 << 8 )) >> 8   // take the third 8 bits
          color & 255)         // take the last 8 bits
    );

希望这有帮助。