一个可指定任意角为圆角的ImageView

这次带来一个继承ImageView控件,可以显示圆形,也可以显示圆角矩形,并且可以指定任意一个角为圆角。口说无凭,先来看一下效果吧。


                                         


说起来这控件原本是在我刚学android的时候,为了实现圆形图片的效果在网上找,并且一直在用,后来在一个项目里有个图片

左上角和左下角是圆角,两外两个角不是圆角的设计,我就在这基础上改了一下,就是现在的这个控件。由于年代太久远加之我

改动得比较多,原博主的博客找不着了,非常抱歉。

 

又废话了一大堆,赶紧上源码吧。

 

首先控件支持直接在布局文件里设置属性,所以我们需要先自定义一些属性资源。在values文件夹下的attrs.xml文件(如果没有

就自己新建一个)里,添加如下代码:

<declare-styleable name="RoundImageView">
    <attr name="type" />
    <attr name="scale" />
    <attr name="borderRadius" />
    <attr name="top_left" />
    <attr name="top_right" />
    <attr name="bottom_left" />
    <attr name="bottom_right" />
</declare-styleable>

<attr name="borderRadius" format="dimension" />
<attr name="type">
    <enum name="circle" value="0" />
    <enum name="round" value="1" />
</attr>
<attr name="scale">
    <enum name="crop" value="0" />
    <enum name="fit" value="1" />
</attr>

<attr name="top_left" format="boolean" />
<attr name="top_right" format="boolean" />
<attr name="bottom_left" format="boolean" />
<attr name="bottom_right" format="boolean" />


然后就可以上控件本体了,控件名叫RoundImageView,如下:

RoundImageView.java:

public class RoundImageView extends ImageView {
    public static final int TYPE_CIRCLE = 0;
    public static final int TYPE_ROUND = 1;

    public static final int SCALE_TYPE_CROP = 0;
    public static final int SCALE_TYPE_FIT = 1;

    private static final int BODER_RADIUS_DEFAULT = 10;

    private static final String STATE_INSTANCE = "state_instance";
    private static final String STATE_TYPE = "state_type";
    private static final String STATE_BORDER_RADIUS = "state_border_radius";

    // 左上角是否为圆角
    private boolean corners_top_left = true;

    // 右上角是否为圆角
    private boolean corners_top_right = true;

    // 左下角是否为圆角
    private boolean corners_bottom_left = true;

    // 右下角是否为圆角
    private boolean corners_bottom_right = true;

    // 显示类型,可选项:圆形,圆角矩形
    private int type = TYPE_CIRCLE;

    // 填充类型,可选项:充满,剪裁
    private int 
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值