Android 5.0 版本中新增了CardView,CardView繼承自FrameLayout類,而且能夠設置圓角和陰影,使得控件具備立體性,也能夠包含其餘的佈局容器和控件。java
1.配置build.gradleandroid
若是SDK低於5.0,咱們仍舊要引入v7包。在build.gradle 中加入以下代碼已自動導入 support-v7包。記得配置完再從新Build一下工程。app
compile 'com.android.support:appcompat-v7:22.2.1‘
compile 'com.android.support:cardview-v7:22.1.0'
2.使用CardView實現以下效果:ide
佈局以下:佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="250dp" android:id="@+id/cv_cardview" app:cardCornerRadius="20dp" app:cardElevation="20dp" android:layout_centerInParent="true"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/aa" android:scaleType="centerInside"/> </android.support.v7.widget.CardView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp"> <SeekBar android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/sb_1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="控制圓角大小"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp"> <SeekBar android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/sb_2"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="控制陰影大小"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp"> <SeekBar android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/sb_3"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="控制圖片間距大小"/> </LinearLayout> </LinearLayout>
重要屬性:gradle
app:cardCornerRadius 設置圓角的半徑
app:cardElevation 設置陰影的半徑
其它屬性:
app:cardBackgroundColor=""設置背景色 app:cardMaxElevation="" 設置Z軸最大高度值 app:cardUseCompatPadding="" 是否使用CompatPadding app:cardPreventCornerOverlap="" 是否使用PreventCornerOverlap app:contentPadding="" 內容的Padding app:contentPaddingTop="" 內容的上Padding app:contentPaddingLeft="" 內容的左Padding app:contentPaddingRight="" 內容的右Padding app:contentPaddingBottom="" 內容的下Padding
java代碼:ui
package com.example.cardviewdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.CardView; import android.widget.SeekBar; public class MainActivity extends AppCompatActivity { /* app:cardBackgroundColor=""設置背景色 app:cardMaxElevation="" 設置Z軸最大高度值 app:cardUseCompatPadding="" 是否使用CompatPadding app:cardPreventCornerOverlap="" 是否使用PreventCornerOverlap app:contentPadding="" 內容的Padding app:contentPaddingTop="" 內容的上Padding app:contentPaddingLeft="" 內容的左Padding app:contentPaddingRight="" 內容的右Padding app:contentPaddingBottom="" 內容的下Padding*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final CardView mCardview = (CardView) findViewById(R.id.cv_cardview); SeekBar sb_1 = (SeekBar) findViewById(R.id.sb_1); SeekBar sb_2 = (SeekBar) findViewById(R.id.sb_2); SeekBar sb_3 = (SeekBar) findViewById(R.id.sb_3); sb_1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { mCardview.setRadius(i);//設置圓角半徑 } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); sb_2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { mCardview.setCardElevation(i);//設置陰影半徑 } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); sb_3.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { mCardview.setContentPadding(i, i, i, i);//設置cardView中子控件和父控件的距離 } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } }
完成spa