Android圆形imageview实现
2015-03-06 16:24
363 查看
现在有的应用在用户头像上使用圆形的imageview,比如百度贴吧。实现上并不困难,需要写一个类继承自ImageView,重写ondraw方法。
代码如下:
下面是实现的效果
代码如下:
public class CircleImage extends ImageView { /** * 3个构造函数 * @param context */ public CircleImage(Context context) { super(context); } public CircleImage(Context context, AttributeSet attrs) { super(context, attrs); } public CircleImage(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } /** * 重写的ondraw方法 */ @Override protected void onDraw(Canvas canvas) { Drawable drawable = getDrawable(); if (drawable == null) { return; } if (getWidth() == 0 || getHeight() == 0) { return; } Bitmap b = ((BitmapDrawable) drawable).getBitmap(); Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true); Bitmap roundBitmap = getCroppedBitmap(bitmap, getWidth()); canvas.drawBitmap(roundBitmap, 0, 0, null); } /** * 对bitmap进行裁剪成圆形 * @param bmp * @param radius * @return */ public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) { Bitmap sbmp; if (bmp.getWidth() != radius || bmp.getHeight() != radius) sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false); else sbmp = bmp; Bitmap output = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(), Bitmap.Config.ARGB_8888); final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight()); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); paint.setColor(Color.parseColor("#BAB399")); Canvas c = new Canvas(output); c.drawARGB(0, 0, 0, 0); c.drawCircle(sbmp.getWidth() / 2 + 0.7f, sbmp.getHeight() / 2 + 0.7f, sbmp.getWidth() / 2 + 0.1f, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); c.drawBitmap(sbmp, rect, rect, paint); return output; } }然后在imageview中可以通过xml的方式进行设置
<com.example.test.CircleImage android:id="@+id/iv" android:layout_width="70dp" android:layout_height="70dp" android:adjustViewBounds="true" android:src="@drawable/img" />com.example.test.CircleImage是包名+类名.
下面是实现的效果
相关文章推荐
- Android ImageView实现圆角,圆形图片
- android ImageView 实现圆形图片(QQ头像)
- Android实现圆形Imageview,带白色边框
- Android ImageView实现圆形头像
- android 实现圆形imageView,Circle imageView.
- Android 简单实现圆形ImageView添加双层圆形边框
- Android实现从相册选择或者直接拍照来设置圆形的头像CircleImageView
- Android利用CircleImageView实现圆形头像效果
- Android开发之自定义圆形的ImageView的实现
- android 自定义ImageView实现圆形压缩图片
- Android开发之自定义圆形的ImageView的实现
- android 圆形imageview实现 带自定定义大小
- Android实现自定义圆形/圆角ImageView
- Android使用CircleImageView实现圆形头像的方法
- Android 自定义View修炼-实现自定义圆形、圆角和椭圆ImageView(使用Xfermode图形渲染方法)
- Android 自定义ImageView实现圆角/圆形 附加OnTouchListener详细注释以及Button圆角
- Android Glide+CircleImageView实现加载圆形图片列表
- android自定义ImageView实现圆形图片
- Xamarin Android Circle ImageView 圆形图片实现
- android圆形头像的实现类CircleImageView.java