首页 > 代码库 > Android图片圆角转换 RoundedImageView开源项目 小记
Android图片圆角转换 RoundedImageView开源项目 小记
Android 将图片快速转换成圆角的方法
使用开源项目 RoundedImageView
github上面的开源项目 官方地址为: https://github.com/vinc3m1/RoundedImageView
效果如下:
下面快速的集成进来
步骤分为3个
1: 去github上下载 工程
https://github.com/vinc3m1/RoundedImageView
2: 导入工程
3 在布局中使用它
<com.makeramen.rounded.RoundedImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_alignParentLeft="true" android:padding="10dip" android:src=http://www.mamicode.com/"@drawable/photo1">
属性的意义:
makeramen:border_width="2dip" 表示图片的边框宽度为2个dp
makeramen: corner_radius表示为 图片转圆角的弧度
修改 makeramen:corner_radius="100dip"
当 corner_radius 设置为100dp 的时候 会呈现为圆形 .
( 注: com.makeramen.rounded.RoundedImageView 控件的宽和高需要相等 )
修改了example中的 rounded_item.xml
<?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2013 Make Ramen, LLC --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:makeramen="http://schemas.android.com/apk/res/com.makeramen.rounded.example" android:layout_width="match_parent" android:layout_height="200dip"> <com.makeramen.rounded.RoundedImageView android:id="@+id/imageView1" android:layout_width="200dp" android:layout_height="200dp" android:padding="10dip" android:src=http://www.mamicode.com/"@drawable/photo1">如下图:
用代码创建 :
RoundedImageView iv = new RoundedImageView(context); iv.setScaleType(ScaleType.CENTER_CROP); iv.setCornerRadius(10); iv.setBorderWidth(2); iv.setBorderColor(Color.DKGRAY); iv.setRoundedBackground(true); iv.setImageDrawable(drawable); iv.setBackground(backgroundDrawable); iv.setOval(true);
贴上部分源码:
package com.makeramen; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.Uri; import android.util.AttributeSet; import android.util.Log; import android.widget.ImageView; @SuppressWarnings("UnusedDeclaration") public class RoundedImageView extends ImageView { public static final String TAG = "RoundedImageView"; public static final float DEFAULT_RADIUS = 0f; public static final float DEFAULT_BORDER_WIDTH = 0f; private static final ScaleType[] SCALE_TYPES = { ScaleType.MATRIX, ScaleType.FIT_XY, ScaleType.FIT_START, ScaleType.FIT_CENTER, ScaleType.FIT_END, ScaleType.CENTER, ScaleType.CENTER_CROP, ScaleType.CENTER_INSIDE }; private float cornerRadius = DEFAULT_RADIUS; private float borderWidth = DEFAULT_BORDER_WIDTH; private ColorStateList borderColor = ColorStateList.valueOf(RoundedDrawable.DEFAULT_BORDER_COLOR); private boolean isOval = false; private boolean mutateBackground = false; private int mResource; private Drawable mDrawable; private Drawable mBackgroundDrawable; private ScaleType mScaleType; public RoundedImageView(Context context) { super(context); } public RoundedImageView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public RoundedImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundedImageView, defStyle, 0); int index = a.getInt(R.styleable.RoundedImageView_android_scaleType, -1); if (index >= 0) { setScaleType(SCALE_TYPES[index]); } else { // default scaletype to FIT_CENTER setScaleType(ScaleType.FIT_CENTER); } cornerRadius = a.getDimensionPixelSize(R.styleable.RoundedImageView_corner_radius, -1); borderWidth = a.getDimensionPixelSize(R.styleable.RoundedImageView_border_width, -1); // don't allow negative values for radius and border if (cornerRadius < 0) { cornerRadius = DEFAULT_RADIUS; } if (borderWidth < 0) { borderWidth = DEFAULT_BORDER_WIDTH; } borderColor = a.getColorStateList(R.styleable.RoundedImageView_border_color); if (borderColor == null) { borderColor = ColorStateList.valueOf(RoundedDrawable.DEFAULT_BORDER_COLOR); } mutateBackground = a.getBoolean(R.styleable.RoundedImageView_mutate_background, false); isOval = a.getBoolean(R.styleable.RoundedImageView_oval, false); updateDrawableAttrs(); updateBackgroundDrawableAttrs(true); a.recycle(); } @Override protected void drawableStateChanged() { super.drawableStateChanged(); invalidate(); } /** * Return the current scale type in use by this ImageView. * * @attr ref android.R.styleable#ImageView_scaleType * @see android.widget.ImageView.ScaleType */ @Override public ScaleType getScaleType() { return mScaleType; } /** * Controls how the image should be resized or moved to match the size * of this ImageView. * * @param scaleType The desired scaling mode. * @attr ref android.R.styleable#ImageView_scaleType */ @Override public void setScaleType(ScaleType scaleType) { assert scaleType != null; if (mScaleType != scaleType) { mScaleType = scaleType; switch (scaleType) { case CENTER: case CENTER_CROP: case CENTER_INSIDE: case FIT_CENTER: case FIT_START: case FIT_END: case FIT_XY: super.setScaleType(ScaleType.FIT_XY); break; default: super.setScaleType(scaleType); break; } updateDrawableAttrs(); updateBackgroundDrawableAttrs(false); invalidate(); } } @Override public void setImageDrawable(Drawable drawable) { mResource = 0; mDrawable = RoundedDrawable.fromDrawable(drawable); updateDrawableAttrs(); super.setImageDrawable(mDrawable); } @Override public void setImageBitmap(Bitmap bm) { mResource = 0; mDrawable = RoundedDrawable.fromBitmap(bm); updateDrawableAttrs(); super.setImageDrawable(mDrawable); } @Override public void setImageResource(int resId) { if (mResource != resId) { mResource = resId; mDrawable = resolveResource(); updateDrawableAttrs(); super.setImageDrawable(mDrawable); } } @Override public void setImageURI(Uri uri) { super.setImageURI(uri); setImageDrawable(getDrawable()); } private Drawable resolveResource() { Resources rsrc = http://www.mamicode.com/getResources();>
小记: 太方便了 真心感谢开源者每日精进一点点 谢谢
Android图片圆角转换 RoundedImageView开源项目 小记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。