Android之CardView

Android5.0中向我們介紹了一個全新的控件–CardView,從本質上看,可以將CardView看做是FrameLayout在自身之上添加了圓角和陰影效果。請注意:CardView被包裝為一種布局,并且經(jīng)常在ListView和RecyclerView的Item布局中,作為一種容器使用。

CardView應該被使用在顯示層次性的內容時;在顯示列表或網(wǎng)格時更應該被選擇,因為這些邊緣可以使得用戶更容易去區(qū)分這些內容。

使用CardView

首先你需要導入支持的依賴庫(android-support-v7-cardview的jar包)在你的build.gradle文件中。

在項目中使用CardView進行,由于CardView繼承于FrameLayout,所以使用的時候可以當做FrameLayout使用。

就是這樣!使用依賴庫能夠保證你的程序穩(wěn)定的兼容之前的版本;盡管在AndroidL和之前的Android版本中對其處理方式有所不同。

定制CardView

CardView提供了一個默認的elevation(意為CardView的Z軸陰影)和圓角角度,所以每一個卡片都能夠在不同的設備上保持相同的外觀。然而,你也可以根據(jù)自己的需求去定制這些值。

注意:cardElevation屬性被用來決定陰影的大小以及柔和度,以至于可以逼真的模擬出對于深度效果的描述。

添加波紋點擊效果

默認情況,CardView是不可點擊的,并且沒有任何的觸摸反饋效果。觸摸反饋動畫在用戶點擊CardView時可以給用戶以視覺上的反饋。為了實現(xiàn)這種行為,你必須提供一下屬性:

使用android:foreground=”?android:attr/selectableItemBackground”可以使CardView點擊產(chǎn)生波紋的效果,有觸摸點向外擴散。

對更早的版本的支持

在AndroidL之前的設備上,CardView為了支持圓角的效果加上了padding,圓角剪裁操作可以算是很昂貴的操作。相似的,對陰影效果來說,在AndroidL之前,也會提供padding去繪制陰影面積,這些內容的padding是和elevation屬性相關的,按照文檔:

padding值為:

左右兩邊的值為:maxCardElevation + (1 - cos45) * cornerRadius

上下兩邊的值為:maxCardElevation * 1.5 + (1 - cos45) * cornerRadius

因此,如果你需要給自己的內容加上padding的話,需要使用新的屬性:card_view:contentPadding

相似的,如果改變CardView的背景,也需要使用新的屬性:card_view:cardBackgroundColor

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容