Jeśli chcesz ustawić widoki w kształcie 3D, View.setElevation()
i View.setTranslationZ()
to dobry pomysł.
Niestety, te dwa atrybuty i metody zostały wprowadzone od czasu interfejsu API systemu Android 21. Nie można ich używać na urządzeniach pre-L lub API 21-.
Ale nadal istnieje sposób na dostosowanie cieni i konturów do widoków.
Granice rzutowania tła widoku określają domyślny kształt jego cienia. Kontury przedstawiają zewnętrzny kształt obiektu graficznego i definiują obszar tętnienia dla sprzężenia zwrotnego dotykowego.
Rozważmy widok, określoną z rozciągliwej tle:
<TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />
Tło odkształcalne jest zdefiniowany jako prostokąt z zaokrąglonymi rogami:
<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>
Widok rzuca cień o zaokrąglonych narożach, ponieważ tło do rysowania określa zarys widoku. Zapewnienie niestandardowego obrysu zastępuje domyślny kształt cienia widoku.
Aby zdefiniować niestandardowy obrys na widoku w kodzie:
- rozszerzyć klasę
ViewOutlineProvider
.
- Zastąp metodę
getOutline()
.
- Przypisanie nowego dostawcy konspektu do widoku za pomocą metody .
Za pomocą metod z klasy Outline
można tworzyć kontury owalne i prostokątne z zaokrąglonymi narożnikami. Domyślny dostawca konspektu dla widoków uzyskuje kontur z tła widoku. Aby zapobiec rzucaniu cienia przez widok, ustaw jego dostawcę konspektu na null
.
Mam nadzieję, że to pomaga.
P.S.: yourAppNs:elevation="4dp"
będzie dobrym pomysłem, jeśli używasz biblioteki Android-design.
Elewacja nie jest dostępna na pre L. –
przeczytałem to "Można również ustawić to z kodu za pomocą getElevation()/setElevation() (z podkładkami w ViewCompat) ' tutaj: http: //android-developers.blogspot .de/2014/10/implementacja-material-design-in-your.html – AdrianoCelentano
@AdrianoCelentano To prawda, ale nie ma wpływu na urządzenia przed-5.0 –