自定義陰影顏色的CardView

自定義陰影顏色的CardView

今天用CardView做卡片式設計的時候,給出的UI讓做一個藍色的陰影效果,我找遍了CardView的接口都沒有發現修改陰影顏色的方法,於是看了一下源碼,發現谷歌把CardView的陰影顏色給寫死了。因此寫了一個能自定義顏色、陰影寬度、模糊度的CardView,感覺效果還不錯,便封裝起來做成依賴庫發佈了。

一個簡單的效果圖:
在這裏插入圖片描述

使用方法:

1.添加依賴

首先,在build.gradle文件下加入 maven {url ‘https://jitpack.io’}

allprojects {
	repositories {
		google()
		jcenter()
		maven {url "https://jitpack.io"}
	}
}

然後在dependencies下加入依賴

implementation 'com.github.EHENJOOM:ShadowCardView:1.2.0'

2.在佈局文件中添加ShadowCardView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

   <com.zhk.shadowcardview.ShadowCardView
       android:layout_width="match_parent"
       android:layout_height="200dp"
       android:layout_centerInParent="true"
       android:layout_marginLeft="40dp"
       android:layout_marginRight="40dp"
       app:cornersRadius="15dp"
       app:shadowColor="@color/red" />

</RelativeLayout>

3.在java代碼裏修改對應的屬性值

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ShadowCardView shadowCardView=findViewById(R.id.shadowCardView);
        shadowCardView.setCornersRadius(ShadowCardView.dp2px(this,15))
                .setShadowColor(getResources().getColor(R.color.red))
                .setShadowOffsetY(ShadowCardView.dp2px(this,5));
    }
}

4.xml標籤屬性表

加入命名空間才能使用下面的屬性

xmlns:app="http://schemas.android.com/apk/res-auto"
標籤名 對應屬性
cornersRadius CardView圓角
shadowLeftHeight 左側陰影寬度
shadowTopHeight 頂部陰影寬度
shadowRightHeight 右側陰影寬度
shadowBottomHeight 底部陰影寬度
shadowOffsetX X軸的陰影偏離度
shadowOffsetY Y軸的陰影偏離度
cardColor CardView的顏色
shadowColor 陰影顏色
shadowRadius 陰影模糊度,值越大越模糊

5.java代碼方法表

方法名 對應屬性
setCornersRadius(int) 設置CardView圓角
setShadowLeftHeight(int) 設置左側陰影寬度
setShadowTopHeight(int) 設置頂部陰影寬度
setShadowRightHeight(int) 設置右側陰影寬度
setShadowBottomHeight(int) 設置底部陰影寬度
setShadowOffsetX(int) 設置X軸的陰影偏離度
setShadowOffsetY(int) 設置Y軸的陰影偏離度
setCardColor(int) 設置CardView的顏色
setShadowColor(int) 設置陰影顏色
setShadowRadius(int) 設置陰影模糊度,值越大越模糊
需要注意的是,這裏寬度的單位爲px,如果想使用dp爲單位,可以調用dp2px(Context,float)函數將dp轉化爲px值再傳入參數。

後續將會更新更多的屬性和方法,有什麼想法的小夥伴可以留言。覺得這個控件不錯的小夥伴動動手指點個讚唄,也歡迎去項目地址Star。

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