我编写了一个简单的应用程序,它向您显示图像中触摸颜色的 RGB 值。问题是,每次我触摸我的图像时,RGB 值之一是 255。例如。我应该有值#F0F0F0 我有#FFF0F0 或#F0FFF0。
这是我的代码:
iv = (ImageView) findViewById(R.id.imageView1);
mTextLog = (TextView) findViewById(R.id.textView3);
iv.setOnTouchListener(new OnTouchListener() {
int x = 0, y = 0;
float fx, fy;
public boolean onTouch(View v, MotionEvent event) {
ImageView imageView = ((ImageView)v);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
v.getWidth();
v.getHeight();
bitmap.getWidth();
bitmap.getHeight();
fx = ((event.getX()/656)*960);
fy = ((event.getY()/721)*1029);
if(fx > 950) fx = 950;
if(fy > 1000) fy = 1000;
if(fx < 32) fx = 32;
x = Math.round(fx);
y = Math.round(fy);
if(fx > 0 && fy > 0){
int pixel = bitmap.getPixel(x, y);
int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);
if(redValue > 255) redValue = 255;
if(redValue < 0) redValue = 0;
if(greenValue > 255) greenValue = 255;
if(greenValue < 0) greenValue = 0;
if(blueValue > 255) blueValue = 255;
if(blueValue < 0) blueValue = 0;
br = (byte) redValue;
bg = (byte) greenValue;
bb = (byte) blueValue;
tv2.setText("Red: " + redValue + " Green: " + greenValue + " Blue: " + blueValue);
RelativeLayout rl = (RelativeLayout) findViewById(R.id.idd);
rl.setBackgroundColor(pixel);
另一个问题是当我在屏幕上移动手指时,改变背景颜色很好,但是当我试图通过蓝牙将它发送到我的 microkontroler 时出现问题。铁。如果我触摸黑色两次,它首先发送黑色,然后发送蓝色。:O
仅当我从此 onTouch 方法返回 true 时才会发生这种情况。
我会很感激任何帮助。
顺便说一句。对不起我的英语不好。