重点说一说CircleImageView和附录文章1的异同,在开发中如何在特定状况下该选择何种技术实现方案。
(一)附录1的RoundedBitmapDrawable是谷歌官方的圆形实现,RoundedBitmapDrawable的最大特色是能够正在上层Java代码中灵活定制如边角弧度、圆角矩形、把一个矩形处理成圆形图、椭圆形图等等,可是RoundedBitmapDrawable没有提供直接定义边框的功能,好比,就像上图中的圆形图,边缘部分要加必定厚度的外层边框线,则RoundedBitmapDrawable没法直接实现。
(二)有些开发状况中,不必定非要把设置、实现圆形图的代码所有放在上层Java代码中写,而只是想写在xml布局文件中,那么RoundedBitmapDrawable就无法直接在xml布局文件中写,而CircleImageView则直接能够在xml中灵活定义边框线厚度、颜色等等。
(三)CircleImageView顾名思义,专业处理圆形图,CircleImageView不像RoundedBitmapDrawable那样还能够制做圆角矩形、椭圆图等等。服务器
总结:
(一)假设若是仅仅只是在上层Java代码中设置一个圆形图(好比常见的开发场景中设置圆形用户头像),那么此时在xml布局中先写好一个ImageView,而后上层Java代码从服务器读取一个头像的byte字节,转化为Bitmap,而后经过RoundedBitmapDrawable处理成圆形drawable设置到ImageView中,那么这种开发场景就能够简单的使用RoundedBitmapDrawable。
(二)若是对图像的UI设计要求变得复杂,好比加边框、边线厚度、边线颜色等等都要有,且不一样的圆图要有必定的遮盖等等,那这种状况下就再也不合适用RoundedBitmapDrawable,而比较适合用CircleImageView。布局