简易的圆角ImageView实现

原创 2015年07月08日 10:23:25

这里实现一个简易的圆角ImageView

public class RoundCornerImageView extends ImageView {
	RectF rect;
	Paint paint;
	Path clipPath;
	int dp1;
	int dp3;

	public RoundCornerImageView(Context context, AttributeSet attrs) {
		super(context, attrs);

		TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundedImageView);
		int textColor = a.getColor(R.styleable.RoundedImageView_border_color, 0XFFFFFFFF);

		dp1 = DensityUtil.dip2px(context, 1);
		dp3 = DensityUtil.dip2px(context, 3);

		rect = new RectF();

		clipPath = new Path();

		paint = new Paint();
		paint.setAntiAlias(true);
		paint.setStrokeWidth(dp1);
		paint.setColor(textColor);
		paint.setStyle(Style.STROKE);

		closeHardwareAccelarated();

		a.recycle();

	}

	@SuppressLint("NewApi")
	private void closeHardwareAccelarated() {
		if (VERSION.SDK_INT >= 11) {
			setLayerType(View.LAYER_TYPE_SOFTWARE, paint);
		}
	}

	@Override
	public void onDraw(Canvas canvas) {
		long a = System.currentTimeMillis();
		rect.set(0, 0, getWidth(), getHeight());
		clipPath.addRoundRect(rect, dp3, dp3, Path.Direction.CW);
		canvas.clipPath(clipPath);
		super.onDraw(canvas);
		canvas.drawRoundRect(rect, dp3, dp3, paint);
		Util.LogE("CornerImage", "CornerImage:" + (System.currentTimeMillis() - a));
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android 简易圆角ImageView

Android 三种方式实现圆角ImageView

Android 三种方式实现圆角ImageView

android 实现圆角imageView的两种方法

首先说明:两种方法都有一个相同点,重写了onDraw方法,方法里面都是采用重绘bitmap的方式实现圆角Image 第二种方法网上有很多相似例子,不过发现它们都有一个错误,就是左下角不能实现圆角,我的...

android 圆形ListView实现,并附带圆角ImageView

转载请注明出处:王亟亟的大牛之路平时 垂直向下的ListView已经司空见惯,换一种带一定角度的圆角ListView应该会给用户不同的体验项目目录: 2个自定义View一个主Activity ...

Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示

android中的ImageView只能显示矩形的图片,为了用户体验更多,Android实现圆角矩形,圆形或者椭圆等图形,一般通过自定义ImageView来实现,首先获取到图片的Bitmap,然后通过...

安卓imageview实现上面两个圆角下面两个直角的效果

安卓imageview实现上面两个圆角下面两个直接的效果

重写ImageView使用Xfermode遮罩实现圆角和圆形

重写ImageView,并且在画布上绘制出四个角,使用DST_OUT取图模式对图片取出; 网上各种案例都有给出上面的实现方法,那么就来说说怎么实现 首先绘制出4个角...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)