`
wanggang412622562
  • 浏览: 4397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android自定义ImageView,自定义属性,实现圆角图片显示

阅读更多

package org.fireking.app.moon.ui; import org.fireking.app.moon.R; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.util.AttributeSet; import android.widget.ImageView; /** * 自定义view,实现显示圆角图片,圆角大小可以通过属性进行定制 * * @author 破 * */ public class UserMiniPhoto extends ImageView { Context context; TypedArray radiasSize; public UserMiniPhoto(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; // 使用自定义属性 radiasSize = context.obtainStyledAttributes(attrs, R.styleable.NewMyElement); // 获取系统view的属性 int src = attrs.getAttributeResourceValue( "http://schemas.android.com/apk/res/android", "src", 0); // 获取系统属性使用的资源,并转化为bitmap Bitmap mBitmap = BitmapFactory.decodeStream(getResources() .openRawResource(src)); // 将图片切成圆角 Bitmap desc = CornerBitmap(mBitmap, radiasSize.getDimension(R.styleable.NewMyElement_radiasSize, 5)); // 将修改后的图片设置进去到组件中 super.setImageBitmap(desc); } // 对图片进行圆角处理 public Bitmap CornerBitmap(Bitmap mBitmap, float rx) { Bitmap temp = null; temp = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Config.ARGB_8888); Canvas mCanvas = new Canvas(temp); Paint mPaint = new Paint(); Rect mRect = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); RectF mRectF = new RectF(mRect); mPaint.setAntiAlias(true); mCanvas.drawARGB(0, 0, 0, 0); mPaint.setColor(Color.RED); // 进行绘制圆角 mCanvas.drawRoundRect(mRectF, rx, rx, mPaint); // 设置新加图层和原图层的关系,详解见 // http://blog.csdn.net/oic8822882/article/details/6906768 mPaint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); mCanvas.drawBitmap(mBitmap, mRect, mRect, mPaint); return temp; } } //这里是自定义的属性,使用上和普通属性一样 //属性使用的时候需要自定义一个namespace,在定义layout中加入 xmlns:fireking="http://schemas.android.com/apk/res/org.fireking.app.moon" //使用

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics