2011-02-28 1 views
1

내 안드로이드 앱을위한 그라디언트로 9 개의 패치 버튼 배경을 만들고 싶습니다. 그라디언트가 어떻게 작동하는지 궁금합니다. os는 버튼이 늘어남에 따라 그래디언트를 적용하는 방법을 알아야 할 것이라고 생각할 것입니다. 9 정보 파일 (그래픽 벡터 방정식)을 9 패치 파일에서 사용할 수 없다고 생각합니까? 그래서이 문제에 대한 해결책이 있습니까? 또한, 디더링 (dithering) 등은 몇 가지 9 패치 버튼 배경을 만들었지 만 그라디언트가없는 것은 없습니다. 아직. 미리 감사드립니다.그라디언트로 9 개 (9) 패치 PNG 파일 만들기

답변

2

왜 9 패치를 사용 하시겠습니까? 9 패치는 픽셀을 복사/복제하여 이미지 영역을 늘립니다. 그래디언트로는 잘 작동하지 않습니다. 대신 GradientDrawable을 사용해 보셨습니까?

<shape android:shape="rectangle"> 
    <gradient android:startColor="..." android:endColor="..." /> 
</shape> 

shape drawables을 참조하십시오.

+0

나는 GradientDrawable을 사용할 것입니다. 그러나이 드로어블 모양은 타원형, 타원형, 사각형 등의 경우에만 유용하며 9- 패치 .png와 같은 임의의 모양에는 사용할 수 없습니까? 어쩌면 어떤 종류의 레이어 목록을 사용할 수 있습니까? 감사. – Mike

+0

컨트롤이 더 많으므로 9 패치를 사용하는 것이 좋으며 폭이 넓어지는 위쪽에서 아래쪽까지의 그래디언트에서 잘 작동합니다. 예를 들어 버튼 상단과 하단에서 다른 테두리 색상을 사용할 수 있습니다 (iPhone 버튼은 이와 유사합니다). 아니면 모양이 다를 수 있습니다. 그러나 모든 것에 완벽하지는 않습니다. 토론 및 예제는 다음 링크를 참조하십시오. http://www.anddev.org/tutorial_buttons_with_niceley_stretched_background-t4369.html – Fraggle

0

디더링에 대한 질문에 대해서는 이전 답변을 통해 언급하지 않았습니다.

응용 프로그램 코드에서 디더링을 사용하도록 설정해야합니다. XML에서 처리 할 수있는 방법이 없다는 것을 알고있는 한 두려워합니다. 문서 here과 같이 드로어 블에서 setDither(true) 콜을 사용할 수 있습니다.

그래디언트 이미지에서 볼 수있는 밴딩 아티팩트가 완화되므로 훨씬 더 멋진 그래디언트가 만들어집니다. 나는 shape drawables에서 이것을 시도하지 않았다. 단지 PNG 파일이다.

또한 진저 브레드를 타겟팅하는 경우 Bitmap quality, banding and dithering의 가치가있을 수 있습니다. 분명히 그들은이 쟁점들을 다루는 2.3으로의 변화를 몰래 들여다 보았다.

+1

'android : dither = "true"'속성이있는''이 있는데, 적어도 합법적입니다. 내가 실제로 (실제로) 기능 하는지를 확인하지 않았다. –