ImageView设计成圆角的形状

今天在做程序的时候遇到一个问题,是把图片显示成圆角的,我们平时所写的ImageView都是直角的,看起来是很生硬的。如果把四个角给设计成圆角,看起来就会圆润一些,没有那么生硬。这个问题想了很久,也想过很多方法,找了很久,后来想到直接在ImageView.onDraw的时候,给他画出圆角来,这样,这个ImageView里面的ImageBitmap就也有圆角的效果了。实现的代码如下:

新建一个class类

  1. public class RoundCornerImageView extends ImageView {
  2. public RoundCornerImageView(Context context) {
  3. super(context);
  4. }
  5. public RoundCornerImageView(Context context, AttributeSet attrs) {
  6. super(context, attrs);
  7. }
  8. public RoundCornerImageView(Context context, AttributeSet attrs,
  9. int defStyle) {
  10. super(context, attrs, defStyle);
  11. }
  12. @Override
  13. protected void onDraw(Canvas canvas) {
  14. Path clipPath = new Path();
  15. int w = this.getWidth();
  16. int h = this.getHeight();
  17. clipPath.addRoundRect(new RectF(0, 0, w, h), 10.0f, 10.0f, Path.Direction.CW);
  18. canvas.clipPath(clipPath);
  19. super.onDraw(canvas);
  20. }
  21. }

下面这行代码就能画出圆角效果,10度的角

[java]  view plain copy print ?
  1. clipPath.addRoundRect(new RectF(0, 0, w, h), 10.0f, 10.0f, Path.Direction.CW);

在layout.xml中直接使用RoundCornerImageView就会出现圆角的ImageView效果

[html]  view plain copy print ?
  1. <com.qise.app.ui.utils.RoundCornerImageView android:id="@+id/foodItem_foodImg"
  2. android:src="@drawable/food_img_na"
  3. android:layout_width="80dip"
  4. android:layout_height="80dip"
  5. android:scaleType="centerCrop"
  6. />

有什么不足之处还望各位大神多多指教,大家如果有什么更好的方法可以一起来研究。

http://blog.csdn.net/u013184970/article/details/51911757

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时代新人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值