2013-06-06 2 views
0

BitmapShader, PaintCanvas을 사용하여 이미지를 원형으로 그리어 원형 ImageView 느낌과 모양을 만드는 서브 클래스 인 ImageView 하위 클래스를 만들었습니다. Facebook의 ChatHeads가하는 일 중 하나는 얼마나 많은 새로운 메시지가 있는지를 나타내는 ImageView 상단에 알림 상자를 넣는 것입니다. 이 모양을 모방하고 내 CircularImageView 상단에 알림 상자를 적용하고 싶습니다.ChatHead 스타일 ImageView를 만드는 방법은 무엇입니까?

enter image description here

주의 수 사진에서 하나 빨간색 상자 : 여기에 내가 무슨 말의 예입니다? 나는 이걸 내 ImageView 위에 올려 놓고 싶지만 어떻게해야 될지 확신 할 수 없다. 아마도 onDraw 메서드를 재정의하고 canvas 개체에서 drawText 메서드를 사용할 수는 있지만 어떻게 텍스트에 대한 올바른 좌표를 제공 할 수 있습니까? 좌표가 ImageView에 상대적입니까?

그래서 모든 것을 요약하면 ImageView 위에 알림 상자를 놓는 것이 가장 좋은 방법은 무엇입니까?

+0

원형 모양으로 이미지를 자른 방법에 대한 코드를 제공해 주시면 매우 유용합니다. – Joyson

답변

0

내 문제에 대한 해결책은 정확하게 내가 생각한 것입니다. onDraw 메서드를 재정의하고 Bitmap을 동그라미에 넣은 Canvas (이미 내 질문 이전에 완료)을 재정의해야했습니다. 이전에 그려진 것이 무엇이든간에 Canvas 인스턴스에서 drawText 메서드를 호출해야했습니다. 그러므로 내가 그 코드를 게시하지 않았다

BitmapDrawable bitDraw = (BitmapDrawable) this.getDrawable(); 
Bitmap bitmap = bitDraw.getBitmap(); 

//paint for the text 
Paint paint = new Paint(); 
paint.setAntiAlias(true); 
paint.setColor(Color.WHITE); 
paint.setTextSize((int) getTextSize() * scale); 
paint.setShadowLayer(1f, 0f, 1f, Color.BLACK); 

//draw the text to specific position 
Rect bounds = new Rect(); 
paint.getTextBounds(String.valueOf(getNotificationAmount()), 0, String.valueOf(getNotificationAmount()).length(), bounds); 
int x = bitmap.getWidth() - bounds.width(); 
int y = bitmap.getHeight() - bounds.height(); 
canvas.drawText(String.valueOf(getNotificationAmount()), x, y, paint); 

주, 비트 맵 오브젝트가 이미 원으로 캔버스에 그려진이 질문의 중점 아니었다 :

여기에 코드입니다. 왼쪽은 x와 y 값을 사용하여 적절한 위치를 지정하는 것입니다. 아, 그리고 텍스트 뒤에 빨간 사각형을 넣고 싶다면 직사각형과 비슷한 것을해야한다고 생각합니다. 이것은 누군가가 비슷한 문제를 겪는 데 도움이되기를 바랍니다.

관련 문제