1 點九生成陰影
優點 隨意調整 效果立即可見,快速實現。
缺點 自帶大小會壓縮佈局;如果佈局內有圖片,容易被圖片覆蓋陰影
https://inloop.github.io/shadow4android/
2 shape生成陰影
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <layer-list> <item android:left="4dp" android:top="4dp"> <shape> <solid android:color="#ff58bb52" /> <corners android:radius="30dip"/> </shape> </item> </layer-list> </item> <item> <layer-list> <!-- SHADOW LAYER --> <item android:left="4dp" android:top="4dp"> <shape> <solid android:color="#66000000" /> <corners android:radius="30dip"/> </shape> </item> <!-- CONTENT LAYER --> <item android:bottom="4dp" android:right="4dp"> <shape> <solid android:color="#ff58bb52" /> <corners android:radius="30dip"/> </shape> </item> </layer-list> </item> </selector>
優點:不影響佈局,靈活使用
缺點:難以調整效果,不夠直觀
3 使用cardview
android.support.v7.cardview
直接套在item外即可形成硬朗的卡片陰影效果,參數也可以調整。
app:cardBackgroundColor 設置背景顏色
app:cardCornerRadius 設置圓角大小
app:cardElevation 設置z軸的陰影
app:cardMaxElevation 設置z軸的最大高度值
app:cardUseCompatPadding是否使用CompatPadding
app:cardPreventCornerOverlap是否使用PreventCornerOverlap
app:contentPadding 設置內容的padding
app:contentPaddingLeft 設置內容的左padding
app:contentPaddingTop 設置內容的上padding
app:contentPaddingRight 設置內容的右padding
app:contentPaddingBottom 設置內容的底padding
優點:使用方便,md風格。
缺點:參數調整麻煩,需要重新編譯;5.0以下系統效果受影響。
4 使用封裝好的陰影庫
https://github.com/Devlight/ShadowLayout
優點:使用後會給所有子佈局包括文字加上陰影,效果可以preview,
缺點:無法單獨給多層佈局最外層加陰影;引入了新的庫佔據資源;需要耐心調整