2013-06-05 4 views
0

내 화면에 이미지보기가 있습니다. 이미지는 회색 음영으로 구성됩니다. 그림을 클릭하면 내가 클릭 한 곳의 RGB 코드를 얻고 싶습니다. 안드로이드에서 가능합니까?클릭하면 나는 어디에서 색상을 얻을 수 있습니까?

+0

나는 이것이 http://stackoverflow.com/questions/7807360/how-to-get-pixel-colour-in-android에서 완전히 답변되었다고 생각합니다. –

+0

색상을 넣으면 이미지보기에 태그를 설정합니다. 나중에, getTag() 메소드를 호출하여 정보를 얻는다. – 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

다음은 참조 용으로 사용할 수 있습니다. 터치 리스너에서 이미지 뷰를 무시하고 이미지 뷰의 픽셀 및 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; 
    } 

    }); 
} 
} 
관련 문제