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

캔버스에 그림자 그리기 (dispatchDraw)

0 추천

일단 오랜만에 접속했는데 질답게시판이 새롭게 개편했네요!

 

오늘 드릴 질문은 캔버스에 그림자를 넣는 법입니다.

정말 지극히 정상적인 코드임에도 안돌아가는 것 같아서 질문 남깁니다.

현재 그림자는 dispatchDraw에서 그리려고 하고 있고요.

FrameLayout을 상속받은 레이아웃입니다.


	@Override
	protected void dispatchDraw(Canvas canvas) {
		Paint shadowPaint = new Paint();
		shadowPaint.setAntiAlias(true);
		shadowPaint.setColor(Color.MAGENTA);
		shadowPaint.setShadowLayer(5, 5, 5, Color.BLACK);
		canvas.drawRect(mLastMotionX - 50, mLastMotionY - 50, mLastMotionX + 50, mLastMotionY + 50, shadowPaint);
		super.dispatchDraw(canvas);
	}

그려지지 않습니다.... 마젠타색의 네모만 나올 뿐입니다...


	@Override
	protected void dispatchDraw(Canvas canvas) {
		Paint shadowPaint = new Paint();
		shadowPaint.setAntiAlias(true);
		shadowPaint.setColor(Color.MAGENTA);
		shadowPaint.setMaskFilter(new BlurMaskFilter(20, Blur.NORMAL));
		canvas.drawRect(mLastMotionX - 50, mLastMotionY - 50, mLastMotionX + 50, mLastMotionY + 50, shadowPaint);
		super.dispatchDraw(canvas);
	}

블러를 이용해서 위에 덧대려고 했습니다..... 안됩니다....

혹시 super.dispatchDraw의 위치에 따라 다른가 싶어 변경도 해보았지만 전혀 먹히지 않습니다.

물론 저 코드 아래로 다른 Drawable들을 그리는 코드들이 있습니다.

상관이 있을까요? ㅠㅠㅠ

네모는 아주 잘 그려집니다만 Blur라던가 Shadow는 전혀 먹히질 않네요...ㅠ

혹시 이와 관련해서 같은 문제에 봉착해보셨다던가 해결책을 아신다면 답변 부탁드립니다. ㅠ

P.S. 혹시 canvas.save(), restore()와 연계되지 않는다던가 하는 정보가 있으시면 답변 부탁드리겠습니다 ㅠ

Lifeclue (7,930 포인트) 님이 2013년 3월 13일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...