android自定义view-打造圆形ImageView(一)

前言:

大家在很多应用不难发现,用户的头像那一块的imageview是圆形的,可是我们并没有现成的圆形ImageView调用,那么最常见的思路就是自己去写一个属于自己的圆形ImageView,基于这样的出发点,今天我们就自己动手去写一个圆形ImageView方便日后直接使用大笑。为什么标题会有(一)呢,其实打造圆形ImageView,我能想到的有三种方式,

  1. BitmapShader(渲染器,将画笔用bitmap图形填充)
  2. Xfermode
  3. 继承drawable
其实就我个人使用而言的话,使用很多三方图片加载框架如picasso,universal-image-loader,volley的时候,使用继承自ImageView方式的圆形Imageview比较方便一点,也就是我们这里的前两种方式,不过我们的drawable方式是最简单的。当然了,最简单的当然是留到最后再说啦。 吐舌头

截图:

这边我们的imageview可以设置成圆形或者圆角的,原来我们写圆角的ImageView的时候要设置xml,然后设置drawable,这里直接使用,很方便的。
正文:
首先,任何重写view都需要的几个步骤:
  1. 继承view
  2. 自定义属性
  3. 重写onMeasure方法【可不重写】
  4. 重写onDraw方法

Step1:继承View
public class RoundImageView extends ImageView

step2:自定义属性:attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <attr name="borderRadius" format="dimension" />
    <attr name="imageType">
        <enum name="circle" value="0" />
        <enum name="round" value="1" />
    </attr>

    <declare-styleable name="RoundImageView">
        <attr name="borderRadius" />
        <attr name="imageType" />
    </declare-styleable>

</resources>
这边<declare-styleable name="RoundImageView">的name值,就是我们自定义view的名字,以后我们在构造器中获取自定义属性值的时候会使用到。
Step3:在构造器中初始化值
	public RoundImageView(Context context) {
		this(context, null);
	}

	public RoundImageView(Context context, AttributeSet attrs) {
		this(context, attrs, 0);
	}

	public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		// 初始化画笔等属性
		mMatrix = new Matrix();
		mPaint = new Paint();
		mPaint.setAntiAlias(true);
		// 获取自定义属性值
		TypedArray array = context.getTheme().obtainStyledAttributes(attrs, R.sty
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值