为CircleImageView添加阴影
2016-10-13 本文已影响1789人
Little_Mango
在5.X以上的版本可以使用elevation属性为控件添加阴影,但是需要控件设置了background属性并且不能设置颜色为transparent。
Snip20161013_11.png- 左边是只给CircleImageView添加了elevation属性的结果,由于没有设置background属性,所以看不到阴影。
- 中间是给CircleImageView添加了elevation和background属性,确实出现了阴影,但是阴影是矩形的而且多出了不是透明颜色的背景。
- 而右边的图就是我们想要的结果。
ViewOutlineProvider
5.X提供这这个类,看文档的说明是
used for shadow casting and clipping
大意是用于裁剪阴影。
所以通过使用ViewOutlineProvider给CircleImageView设置outline,便可以设置阴影。
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/iv3"
android:elevation="24dp"
android:layout_width="96dp"
android:layout_height="96dp"
android:src="@mipmap/superman"
app:civ_border_width="2dp"
app:civ_border_color="#FF000000"/>
只需要设置elevation属性,不需要设置background属性。
java代码:
//获取outline
ViewOutlineProvider vop = new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
//修改outline
outline.setOval(0,0,view.getWidth(),view.getHeight());
}};
//重新设置
mCircleImageView3.setOutlineProvider(vop);