Próbuję stworzyć gradient, który emituje biały kolor ze środka ekranu i zmienia kolor na czarny, gdy przesuwa się w kierunku krawędzi ekranu.
Kiedy tworzę „normalny” gradient, taki jak ten, eksperymentowałem z różnymi kształtami:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#E9E9E9" android:endColor="#D4D4D4"
android:angle="270"/>
</shape>
Używając „owalnego” kształtu, uzyskałem przynajmniej okrągły kształt, ale nie było efektu gradientu. Jak mogę to osiągnąć?
Zawsze uważam, że obrazy są pomocne podczas uczenia się nowej koncepcji, więc jest to odpowiedź uzupełniająca.
Te
%p
środki procent rodzica, czyli procent od najwęższego wymiaru cokolwiek zobaczyć możemy ustawić nasz rozciągliwej dalej. Powyższe obrazy zostały wygenerowane przez zmianęgradientRadius
w tym kodziemy_gradient_drawable
Które można ustawić w
background
atrybucie widoku, takim jak tenŚrodek
Możesz zmienić środek promienia za pomocą
gdzie ułamki dziesiętne to ułamki szerokości i wysokości odpowiednio dla
x
iy
.Dokumentacja
Oto kilka uwag z dokumentacji wyjaśniających nieco więcej.
źródło
%
a nie.Możesz to również zrobić w kodzie, jeśli potrzebujesz większej kontroli, na przykład wielu kolorów i pozycjonowania. Oto mój fragment Kotlina do tworzenia rysowalnego gradientu radialnego:
Podstawowe użycie (ale możesz dostosować je za pomocą dodatkowych parametrów):
źródło
Myślę, że powinieneś dodać android: centerColor
W tym przykładzie jest wyświetlany gradient poziomy od białego do czarnego do białego.
źródło
źródło
Oto kompletny plik XML z gradientem, skokiem i okrągłym kształtem.
źródło
źródło