2013-06-05 84 views
0

我在屏幕上显示图像。图像由灰色阴影组成。当我点击图片时,我想要获取点击的rgb代码。这是可能的Android?我如何获得点击的颜色?

+0

我认为这是相当完整的答案在http://stackoverflow.com/questions/7807360/how-to-get-pixel-colour-in-android。 –

+0

当我把颜色,我设置一个标签的图像视图。后来,我确实拿到了标签()来获取信息 – mromer

回答

3

在onTouch电话试试这个:

public boolean onTouch (View v, MotionEvent ev) 
{ 

    final int action = ev.getAction(); 

    final int evX = (int) ev.getX(); 
    final int evY = (int) ev.getY(); 

    switch (action) { 
     case MotionEvent.ACTION_DOWN : 
      break; 
     case MotionEvent.ACTION_UP : 
      ImageView img = (ImageView) findViewById (YOUR_IMG_DRAWABLE); 
      img.setDrawingCacheEnabled(true); 
      Bitmap imgbmp = Bitmap.createBitmap(img.getDrawingCache()); 
      img.setDrawingCacheEnabled(false); 
      int pxl = imgbmp.getPixel(evX, evY); 
      int redComponent = Color.red(pxl); 
      int greenComponent = Color.green(pxl); 
      int blueComponent = Color.blue(pxl); 

      ...USE COLOR HERE... 

      break; 
    } 

} 

希望帮助!

1

您可以使用下面的参考。您可以覆盖触摸侦听器上的imageview并获取imageview的像素和rgb值。

public class MainActivity extends Activity { 

ImageView iv; 
int redValue,blueValue,greenValue; 
int pixel; 
Bitmap bitmap; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    iv= (ImageView) findViewById(R.id.imageView1); 
    BitmapDrawable bitmapDrawable = (BitmapDrawable)iv.getDrawable(); 
    bitmap = bitmapDrawable.getBitmap(); 
    iv.setOnTouchListener(new OnTouchListener() 
    { 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       // int color = bitmap.getPixel(event.getX(),event.getY()); 
       break; 
      case MotionEvent.ACTION_UP: 
       pixel = bitmap.getPixel((int)event.getX(),(int)event.getY()); 
       redValue = Color.red(pixel); 
       blueValue = Color.blue(pixel); 
       greenValue = Color.green(pixel); 
       System.out.println("...."+redValue+"..blue"+blueValue+"..."+greenValue+"color"+pixel); 
       Toast.makeText(MainActivity.this,""+pixel, 1000).show(); 
       break; 
      } 

      return true; 
    } 

    }); 
} 
}