我试图获取触摸像素的颜色并将此颜色设置为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;
}
答案 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
);
希望这有帮助。