安卓 做一個簡單的背景陰影

這裏寫圖片描述

通常給一些view加上陰影效果會使頁面效果更好。這裏只對21以上的機子經行說明,經市場統一21一下的手機已經不足市場份額的20%

所以,如果你的 App 的 minSdkVersion 就是 21 的話,直接使用這兩個屬性是最優的解決辦法。

 elevation 屬性

elevation 屬性,主要用於給 View 增加一個高度,可以直接被加在 View 控件上,呈現在界面上,就是一個帶陰影的效果。

在 layout-xml 佈局中,可以通過 android:elevation 屬性來設置,而在 Java 代碼中,通過 View.setElevation() 方法來使用它。

直接使用 elevation 屬性設置即可,它接收一個高度的參數,只需要按我們的需要配置即可。

需要注意的是,View 的陰影一定是需要有背景的 View 在視覺上增高之後,投射出來的。也就是類似於打光的陰影效果。簡單來說,就是需要爲 View 設置一個 Background,可以使用 android:background 屬性或者 View.setBackground() 方法設置,否者 elevation 的屬性設置將無效。這裏的 Background 只需要設置一個 Drawable 即可,你當然也可以選擇一個圖片或者一個純色的 <shape/> 了。

translationZ 屬性

translationZ 屬性,主要用於給 View 增加一個在 Z 軸上的變換效果。它和 elevation 配合起來,就是一個一加一等於二的效果。也可以用於設置 View 的高度。

在 layout-xml 佈局中,可以通過 android:translationZ 屬性來設置它,而在 Java 代碼中,可以通過 View.setTranslationZ() 方法來使用它。

一般來說,我們可以直接使用 android:translationZ 屬性來設置 View,當你配合 android:elevation 屬性一起使用的時候,它們對 View 的高度是累加的,當然你也可以只使用其中一個屬性。

而看到 translationZ 這樣的屬性,很輕易就聯想到了 translationX 和 translationY 了,它們實際上就是不同維度的設置,思路上很像,但是原理不同。對 X、Y 軸的操作並沒有 Api Level 的限制,這一點需要清楚。

和 elevation 屬性一樣,translationZ 也是需要配合 Background 的設置纔會生效的,這個應該不難理解。

如果不在意 Api level 的話,你完全可以使用 android:elevation 和 android:translationZ 兩個屬性來做的陰影的效果,效果也是非常好的,而且它的陰影實際上是不佔用 View 的佈局大小的,它會在原本的佈局之外,向外擴散,所以也不會影響 View 本身大小的視覺效果。

不過它也有缺陷,你只能通過設定這兩個屬性來調整陰影的大小,沒辦法做到精確掌控,並且無法修改陰影的顏色。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章