您的位置:首页 > 移动开发 > Android开发

Android 5.x新特性之利用CardView制造温和的阴影效果

2015-10-15 17:05 543 查看
利用gradle引进支持包:

compile 'com.android.support:cardview-v7:21.+'


因为V7支持包将cardview支持包单独拿出来了,所以不必担心引入太多的类:



总共只有这些类,其中一些类还是为了兼容性做了特别的处理,可以看到源码中关于这些的处理:

private static final CardViewImpl IMPL;

static {
if (Build.VERSION.SDK_INT >= 21) {
IMPL = new CardViewApi21();
} else if (Build.VERSION.SDK_INT >= 17) {
IMPL = new CardViewJellybeanMr1();
} else {
IMPL = new CardViewEclairMr1();
}
IMPL.initStatic();
}

具体的可以进去看详细的。

CardView如Linearlayout、Framelayout一样都是ViewGroup,即其他控件的容器。CardView继承于Framelayout,所以Framelayout的属性他都有,同时CardView还有几个特殊的属性:

在API21(Android L)等级以上拥有属性elevation,意为CardView的Z轴阴影,只有L平台有效。只能通过xml中的elevation属性指定;

其余(2.0以上)有属性cardBackgroundColor,意为CardView的卡片颜色,只能通过xml的cardBackgroundColor进行指定;

其余(2.0以上)有属性cardConerRadius,意为CardView卡片的四角圆角矩形程度,单位dimen(dp px sp),可以通过xml指定,也可以通过代码中的setRadius指定。

示例:

需在头部引入:
xmlns:app="http://schemas.android.com/apk/res-auto"


<android.support.v7.widget.CardView
android:layout_width="200dip"
android:layout_height="34dip"
android:layout_marginTop="110dip"
android:layout_centerHorizontal="true"
android:gravity="center"
app:cardCornerRadius="5dp"
app:cardElevation="7dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dip"
android:layout_gravity="center"
android:text="测试"
android:textColor="#e8753e"
android:textSize="16sp" />
</android.support.v7.widget.CardView>


如果你的项目中采用了CardView请注意在低版本中多测试

1.注意4.2.2及以下版本、4.2.2版本以上版本、5.0版本;

2.我遇到的问题有:

a.高度在5.0版本及以下版本的显示效果不一样(要设置的足够高,不然显示不全,讲上面的改为54dp的高度在低版本上的显示效果更好)

b.实现圆形的效果在5.0上的效果很好,在以下版本的效果会很差,简直不能忍受。。。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: