虽然安卓提供了丰富的控件,但是开发过程中经常遇到需要开发自定义的控件的情况,例如消息样式中的发送图片,使用原ImageView是无法实现下图效果的(在圆角边框+箭头的基础上对图片进行裁剪):

实现方法
本例实在原ImageView基础上进行修改,因此相对较简单,只需要重写onDraw(Canvas)即可。
获取bitmap
getDrawable()方法获取到ImageView得Drawable,并由其创建Bitmap;getWidth()、getHeight()方法获取ImageView的宽高。绘制边框
PorterDuff.Mode.SRC_IN模式时会保留原图与所画图重叠的部分,因此我们只要使用Paint画好边框剩下的就很简单了。moveTo(float,float)、 lineTo(float,float)、 arcTo(float,float) 并计算好对应的数值(圆弧度线、直线长度),设置好所要绘制的“路径”。canvas.drawPath(path, paint)绘制边框。绘制新的Bitmap
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN))canvas.drawBitmap(scaledBitmap, 0, 0, paint)以上就实现了示例图片的效果~