2010-03-08 6 views
16

나는 사용자 정의보기안드로이드 Paint.setShadowLayer() Canvas.drawbitmap 대() 문제는

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); 
p.setShadowLayer(3,3,3,0xff000000); 
Bitmap bmp = BitmapFactory.decodeResource(some drawable jpg); 
canvas.drawBitmap(bmp,null,new Rect(blah blah),p); 

의 onDraw는 동안 비트 맵을 그릴 다음 코드를 사용하여 그림자 재미 보인다. 나는 재미있는 무엇을 의미합니까? canvas.drawRect()를 호출하면 다른 그림자가 생기는 것입니다. 그것은 마치 안드로이드 그림자 코드가 비트 맵을 알파 채널처럼 취급하는 것처럼 보입니다.

p.setColor (0xff000000)를 추가하려고했습니다. 및 p.setStyle (Paint.Style.FILL); 하지만 차이는 없습니다.

그림자가있는 drawRect, 그림자가있는 drawBitmap이 있다고 생각합니다.하지만 픽셀을 두 번 렌더링 할 때 바보처럼 보입니다.

+4

이 경우 이미지는 1000 단어 이상을 나타냅니다. 스크린 샷을 추가하십시오. – WarrenFaith

답변

-1

텍스트, 비트 맵 등과 같이 다른 목적을 위해 다른 Paint 객체를 사용해야 할 수도 있습니다. 따라서 설정에 영향을주지 않습니다.

+0

하나의 그리기 작업 만하고 있으므로 하나의 Paint 개체 만 있습니다. 제 질문과 코드를 다시 읽어주십시오. – SteelBytes

2

기본적으로 그림자 레이어는 텍스트 이외의 다른 것은 작동하지 않습니다. 진짜 바보 야. Android hardware acceleration supported operations chart을 확인하십시오.

이 질문은 하드웨어 가속화 된보기 트리가 존재하지 않는 2010 년에 다시 묻습니다. 읽은 것, 심지어 그림자 레이어는 단순한 모양 (전혀 사용하지 않음)에서만 작동하고 다른 것들은 이상하게 보입니다 결과는 텍스트가 아닌 다른 것에 사용합니다. 운이 좋지 않을 수도 있습니다.

마지막으로 그림자 레이어를 가짜로 만들 수있는 방법은 다양합니다. 다른 뷰에서 뷰를 래핑하고 그 뷰 아래에 그릴 수 있습니다. 방사형 그래디언트 등으로 그림자를 그리는 뷰를 작성할 수 있습니다.하지만 그림자처럼 보이는 9 개의 패치를 만들고 싶을 것입니다.