Untuk solusi XML saja, Anda dapat membuat layer-list
dengan dua objek gradient
terpisah.
Kode berikut membuat dua objek gradient
yang tumpang tindih dan menggunakan centerY
dengan centerColor
untuk mengimbangi bagian hitam. Di sini, atribut centerY
disetel ke 0.9
dan 0.1
, sehingga warna hitam dibatasi pada 10% atas dan bawah dari tinggi tampilan.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:angle="90"
android:centerColor="@android:color/transparent"
android:centerY="0.9"
android:endColor="@android:color/black"
android:startColor="@android:color/transparent" />
</shape>
</item>
<item>
<shape>
<gradient
android:angle="90"
android:centerColor="@android:color/transparent"
android:centerY="0.1"
android:endColor="@android:color/transparent"
android:startColor="@android:color/black" />
</shape>
</item>
</layer-list>
Untuk API level 23 atau lebih tinggi, solusi berikut juga akan berfungsi, menggunakan android:height
. Solusi ini dapat bekerja bahkan jika Anda tidak mengetahui tinggi total tampilan Anda, selama Anda mengetahui seberapa besar gradien yang Anda inginkan.
Kode ini membuat dua gradien terpisah, masing-masing dengan tinggi 60sp
, lalu menggunakan android:gravity
untuk mengapungkan gradien ke atas dan bawah tampilan.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:height="60sp"
android:gravity="top">
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="@android:color/black"
android:startColor="@android:color/transparent" />
</shape>
</item>
<item
android:height="65sp"
android:gravity="bottom">
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="@android:color/transparent"
android:startColor="@android:color/black" />
</shape>
</item>
</layer-list>
Terima kasih @Luksprog untuk bantuan kode, dan @thenaoh untuk awal ide.
Solusi di atas berfungsi dan bagus karena merupakan XML murni. Jika gradien Anda ditampilkan dengan garis-garis, Anda mungkin ingin mencoba solusi terprogram, seperti yang ditunjukkan dalam jawaban @lelloman, untuk membuat gradien yang lebih halus.
person
Tot Zam
schedule
17.03.2017