2012-05-23 4 views
8

버튼이나 다른 구성 요소에 맞춤형 그림자를 만들기 위해 구성 요소를 구현하려고하는데 9patch 또는 그림자가있는 Png에서 더 쉬울 것이라는 것을 알고 있지만 색상을 변경하고 싶습니다. 및 크기를 프로그램 적으로 상태 (눌렀을 때 등)로 표시하므로 9 개의 이미지를 XML로 모두 사용하기로 결정 했으므로 섀도우 음영이 구성 요소 측면에서 그라디언트를 시작합니다.부모 크기의 XML에서 방사형 그래디언트

<!-- Left Shadow layer --> 
<item> 
    <shape android:shape="rectangle" > 
     <gradient 
      android:angle="0" 
      android:endColor="#FFFF0000" 
      android:startColor="#00FF0000" /> 
    </shape> 
</item> 

이 좋아 보인다는 문제가 모서리와 안드로이드 함께 지금 gradientRadius 매개 변수 고정 된 크기의 세트,하지만 상황에 맞는 도움말의 기본 크기의 백분율로 설정 될 수 있다고 10 % 또는 부모 크기 10 % p, 100 % p 반경을 설정하여 그래디언트가 항상 주 색상에서가 져서 사각형의 가장자리에서 사라 지도록합니다.

- 편집 -.

내가 부모보기에 맞게이 크기를 설정하는 방법 메신저 지금 :(내가 모르는 gradientRadius gradientRadius

<shape android:shape="rectangle" > 
     <gradient 
      android:endColor="#00FF0000" 
      android:startColor="#FFFF0000" 
      android:gradientRadius="18" 
      android:centerX="100%" 
      android:centerY="100%" 
      android:type="radial" /> 
    </shape> 

그리고 그게 전부에 대한 안드로이드 문서

어떤 도움을 받으실 수 있습니다, 구성 요소로 끝났을 때 나는 대답에 코드를 넣을 것입니다 :) 그래서 전형적인 버튼은 XML에서 사용자 정의 가능한 그림자를 가질 수 있습니다.

자격이 된 구성 요소의 이미지.

--Edit--

임은 여전히 ​​관심은 아무도 단서가 없습니다 :)?

Button with radia gradients

+0

이 이미지는 원하는 이미지 또는 지금까지 얻은 이미지입니다. – Leaudro

+0

안녕하세요 @ Leaudro, 그게 내가 원하는 건, 내가 그 그라디언트가 아닌 방사형 그라디언트에 맞게 수동으로 너비와 높이를 설정할 수 있습니다. 모서리의 방사형 그래디언트를 만들지 않아서이 모양을 다시 사용하여 일반 구성 요소의 그림자를 만들 수 있습니다. – Goofyahead

답변

2

난 당신이 XML을 포기하고 코드에 당김을 구현한다고 생각합니다. Drawable 클래스를 확장하면 getBounds()를 사용하여 크기를 사각형으로 가져올 수 있습니다. 또한 onBoundsChange 메서드에서 동적으로 다시 계산할 수 있습니다. 그라디언트를 쉽게 구성하고 Paint 객체 (setShader 메서드)에 사용할 수도 있습니다.

+1

어이 누군가가 이것을 읽을 때까지!, 그래, 나도 생각하지만, 그 종류의 anoying :) – Goofyahead

관련 문제