为CircleImageView添加阴影

在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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容