2012-05-23 9 views
8

Düğmelere veya diğer bileşenlere özel gölgeler yapmak için bir bileşen elde etmeye çalışıyorum, bunun bir 9patch veya gölgeli bir png ile daha kolay olacağını biliyorum, ancak rengi değiştirmek istiyorum ve boyutlarını programlı olarak kendi durumlarında (basılı, vb), bu yüzden ben de her biri XML'de 9 görüntü ile denemeye karar verdim, böylece gölge gölgeleri parçanın kenarından eğimini başlatır.Üst boyutta XML'de Radyal gradyan

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

iyi görünüyor, sorun köşelerinde ve android ile geçerli: şimdi gradientRadius parametresi sabit boyutunda olacak şekilde ayarlanmış, ancak içeriksel yardım baz boyutunun yüzdesi ayarlanabilir söylenir % 10 veya ana boyut% 10 p,% 100 p yarıçapını ayarlamak istediğimde, degrade her zaman ana renkten çıkacak ve karenin kenarında kaybolacaktır.

- DÜZENLEME -.

i üst görünüme uygun şekilde bu boyutunu ayarlamak nasıl im şimdi :(bilmiyorum 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> 

ve thats hakkında android doc

Bileşen ile işiniz bittiğinde, kodun cevabına koyacağım herhangi bir yardım için minnettarız :) böylece tipik düğmeler, xml cinsinden özelleştirilebilir gölgelere sahip olabilir.

Hakedilen bileşenin görüntüsü.

--Edit--

Im hala bu ilgi hiç kimse bir ipucu var :)?

Button with radia gradients

+0

Bu görüntü ne istiyorsan ya da şimdiye kadar neler yapmış? – Leaudro

+0

merhaba @ Leaudro, istediğim şey, bunu, genişlik ve yüksekliği elle ayarlayarak yapabilirim, böylece degrade, radyal olmayan eğime uymaz. Köşeler için radyal degradeler yapamıyorum, böylece bu şekil genel bileşenler için gölgeler oluşturmak için yeniden kullanılabilir. – Goofyahead

cevap

2

Sana xml ile vazgeçip kodunda çekilebilir uygulamak gerektiğini düşünüyorum. Drawable sınıfını genişletirken, getBounds() ile boyut olarak dikdörtgen alabilirsiniz. Ayrıca, dinamik olarak onBoundsChange yönteminde yeniden hesaplayabilirsiniz. Ayrıca gradyanları kolayca yapılandırabilir ve bunları Paint nesnesinde kullanabilirsiniz (setShader yöntemi)

+1

hey bunu okuyana kadar!, Evet bunu da düşünüyorum, ama anoying :) – Goofyahead