Android 四種陰影實現方式對比

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,
缺點:無法單獨給多層佈局最外層加陰影;引入了新的庫佔據資源;需要耐心調整

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