2013-09-02 5 views
0

저는 간단한 사용자 정의 컨트롤을 android에 만들었고 배경 이미지를 배치했습니다. 컨트롤이 다른 크기 (즉,이 늘어 경우)에서 레이아웃에 배치 할 때 내가 특별히 문제에 봉착 :Android 사용자 정의보기에서 크기 조정에 몇 가지 문제가 있습니다.

  1. 나는 내가 알고있는 특정 위치와 크기로 사각형을 오버레이 할 원래 이미지의 픽셀 위치. 어떻게하면 내 통제하에이 일을 할 수 있을까요? 나는 이것이 9 패치라는 점을 감안할 때 불가능하다고 생각합니다. 가장 좋은 방법은 원본의 상단/왼쪽에서 백분율을 계산하는 것입니다. 그렇지 않으면 일부 부품이 늘어나고 일부는 그렇지 않습니다. I 생성자이 같은 이미지를 설정 한 사용자 컨트롤

  2. :

    setBackgroundResource (R.drawable.buttonbt);

잘 작동하지만 원래는 onDraw 이벤트에 그려야했습니다. 예를 들어 속성 ​​변경에 따라 변경하고 싶을 수 있습니다.

Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.buttonbt); 
canvas.drawBitmap(b, 0, 0, null); 

그러나 경계 상자의 크기에 따라 크기가 조정되지는 않습니다. 크기 조정없이 원본 크기로 표시하려고하는 것입니다. 이전 방법이 더 좋았는지 여부에 관계없이 어떻게 할 수 있습니까?

감사합니다.

+0

광고 1 해달라고 당신이 – pskink

+0

광고 2 사용 drawBitmap과를 무슨 뜻인지 Matrix param, Matrix.rectToRect (- – pskink

+0

)를 사용하여 행렬을 설정합니다. 예, 묘사하기 어렵습니다. 아마도 그림을 넣어야합니다. 기본적으로 컨트롤은 너비/높이 및 디스플레이의 밀도에 따라 늘어날 수 있습니다. . 사각형을 말하면서 특정 상대 오프셋으로 뷰를 겹치기를 원합니다.이 위치를 계산하는 방법 - 크기에 상관없이 같은 위치를 계산하는 방법. 더 좋아? –

답변

1

당신은

Bitmap bitmap = Bitmap.createScaledBitmap(b, width, height, true); 

이 당신을 위해 작동합니다 희망 아래로 축소 된 비트 맵을 만들 수 있습니다. 저에게 알려주세요!

+0

고마워요. 필요한 크기의보기를 쉽게 얻을 수있는 방법이 있습니까? onMeasure 메소드가 나를 혼란에 빠뜨리고 그 사용 여부를 필요로하는지 생각합니다. –

+0

정말 onMeasure 함수를 사용할 필요가 없다고 생각합니다. –

0

확인을보기는 100 × 100 픽셀 말과 비트 맵 당신이 inDraw 방법에 (여기 의사 코드) 다음을 시도 할 수 있습니다 최대 300x300입니다 :

# src is a Bitmap 300x300 
# dst is a View 100x100 
mMatrix.setRectToRect(RectF src, RectF dst, Matrix.ScaleToFit stf) 
canvas.save() 
canvas.concat(mMatrix) 
canvas.drawBitmap(mBitmap, 0, 0, null) 
// actually it will draw a rect with left/top edge at (10, 10) and right/bottom at (20, 20) 
canvas.drawRect(30, 30, 60, 60, paint) 
canvas.restore() 
관련 문제