마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

View Draw 이미지 영역에 대해서..?

0 추천

view 에서 draw로 이미지(4조각으로 나뉜)를 입혀서 영역을 누르면 어느 사각형을 누럿는지 알수 잇는방법이 없을까요?

예를 들면 1번을 찍으면 1번을 표시(Toast)해주는 겁니다

도대체 어떻게해야하는지 모르겟어요

  class MyView extends View {

     int cx, cy;     

     int tw, th;    

     int width, height;   
     Bitmap imgRect; 
  public MyView(Context context) {
   super(context);
   // TODO Auto-generated constructor stub
   Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
   width = display.getWidth();  // View의 가로 폭
   height = display.getHeight();   // View의 세로 높이
   
   cx = width / 2;
   cy = height / 2 - 30;   // View의 중심보다 위로 이동
 

   imgRect = BitmapFactory.decodeResource(context.getResources(), R.drawable.rect);
   imgRect = Bitmap.createScaledBitmap(imgRect, width-20, height-500, true);
   
   tw = imgRect.getWidth() / 2; 

   th = imgRect.getHeight() / 2;   
  }
  
  public void onDraw(Canvas canvas) {
   Paint paint = new Paint();
   paint.setColor(Color.WHITE);
   paint.setTextSize(18);
   canvas.drawBitmap(imgRect,  cx - tw, cy - th, null);
   
  } // onDraw\\
  
  @Override
  public boolean onTouchEvent(MotionEvent event) {
   if (event.getAction() == MotionEvent.ACTION_DOWN) {
    int x = (int) event.getX();
    int y = (int) event.getY();
    if (imgRect.getPixel(x, y) <= x) {
      Toast.makeText(getApplicationContext(), "aaaaaaa", 1).show();
    } // if   
   }
   return true;
  }   
 
  }

헨씀히포 (3,660 포인트) 님이 2014년 3월 2일 질문
헨씀히포님이 2014년 3월 2일 수정

3개의 답변

0 추천
 
채택된 답변
각각의 영역이 Rect 객체로 있다고 할 때,

Rect class의 메소드들을 보시면 contains 와 같은 유용한 메소드들로 쉽게 판별 할 수 있어요.
b22n (22,940 포인트) 님이 2014년 3월 3일 답변
헨씀히포님이 2014년 3월 3일 채택됨
0 추천
view 로 해야할 특별한 이유가 있나요?

child view 에 button 이나 imageview 를 쓰시면 그냥 click event 처리하시면 되는데
aucd29 (218,390 포인트) 님이 2014년 3월 3일 답변
게임을 만들어볼려고 하는데 막히네요
0 추천
이미지의 영역이 정해져있다면 아래와 같이 고정픽셀 영역별 이벤트 지정하셔도 되고

정해져있지않고 변하더라도 화면사이즈 가져오는 함수등을 사용해서 적절히 영역을 맞춰주면 가능

무튼 터치이벤트 가져와서 응용하시면 되요 ㅎㅎ

 

if(event.getAction()==MotionEvent.ACTION_DOWN) // 손가락을 붙임
   {
    dx = (int)event.getX();      // 붙인 곳의 위치를 변수 dx, dy 에 담음
    dy = (int)event.getY();
    
    if(dx>300 && dx <350 && dy >300 && dy <350)
    {
     Toast.makeText(getApplication(), "300  이벤트 발생", Toast.LENGTH_SHORT).show();
    }
   }
초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 3일 답변
...