커스텀위젯(view 상속)을 이용하여 계산기 keypad를 만들어야합니다.

 

onDraw()를 이용하여 제가 원하는 모양의 이미지를 bitmap으로 가져오고

그 비트맵을 canvas를 이용하여

canvas.drawBitmap(arrBit[i][j],w_size,h_size,null);

로 띄웠습니다.

계산기 키패드니까 0~9까지의 숫자가 적혀있는 이미지입니다.

 

문제는 이 비트맵 이미지로 click 이벤트를 받아서

숫자를 EditText에 넣어줘야되는데요..

 

비트맵으로 도저히 click 이벤트를 받는 법을 모르겠어요..

 

비트맵을 이용하지 않고 다른 방법이 있나요?

제이미지를 버튼으로 할수있는???

무조건 view를 상속받는 커스텀 위젯을 이용해야합니다..

그리고 onDraw를 이용하여 키패드를 만들어야합니다..

 

제가 처음 생각햇던 방법은 이미지를 아예 0~9까지 다 포함된 이미지를 비트맵으로 받아와서..

그것을 부분별로 나누어서 숫자를 넘겨줄려했는데.. 이건 너무 어려울것 같아서

각각의 0~9까지 버튼을 받아서 적당한 위치를 잡아서

canvas.drawBitmap(arrBit[i][j],w_size,h_size,null); 했습니다.

현재 onDraw() 함수는 다음과 같습니다.

 

protected void onDraw(Canvas canvas)
 {
  
  //Paint pnt = new Paint();
  //Resources r = getResources();
  //BitmapDrawable bd = (BitmapDrawable)r.getDrawable(R.drawable.keypad2);
  
  int i,j;

  //Bitmap b =BitmapFactory.decodeResource(getContext().getResources(),R.drawable.keypad2);
  Bitmap[][] arrBit = new Bitmap[2][5];
  int num=0;
  int w_size=0;
  int h_size=0;
  for(i = 0;i<2;i++)
  {
   for(j=0;j<5;j++)
   {
    arrBit[i][j] = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.b0+num);
    num++;
    canvas.drawBitmap(arrBit[i][j],w_size,h_size,null);
    w_size=w_size+98;
    //imgView.setImageBitmap(arrBit[i][j]);
    //imgView.setOnClickListener(mClickListener3);
   }
   w_size=0;
   h_size += 98;
  }
  
  //canvas.drawBitmap(b,0,0, pnt);
 }

 

주석 단 부분은 제가 다르게 시도해보려는 노력입니다...