亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

android開發之自定義圓形ImagView

標簽:
Android

在日常使用中我们经常会使用到圆形的图片,但是android系统中并没有默认的圆形控件,所以我们需要自己来写一个自定义的ImagView来显示一张圆形的图片,下面先看效果

5bb6e054000189ba04050721.jpg

详细的方法是我们自定义一个类,继承ImagView,然后重写一些方法,下面是代码

/**
 * 圆形的ImagView
 * 
 * @author Administrator
 * 
 */
public class RoundImageView extends ImageView {
   public RoundImageView(Context context) {
      super(context);
      // TODO Auto-generated constructor stub
   }

   public RoundImageView(Context context, AttributeSet attrs) {
      super(context, attrs);
   }

   public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
   }

   @Override
   protected void onDraw(Canvas canvas) {

      Drawable drawable = getDrawable();

      if (drawable == null) {
         return;
      }

      if (getWidth() == 0 || getHeight() == 0) {
         return;
      }

      Bitmap b = ((BitmapDrawable) drawable).getBitmap();

      if (null == b) {
         return;
      }

      Bitmap bitmap = b.copy(Config.ARGB_8888, true);

      int w = getWidth(), h = getHeight();

      Bitmap roundBitmap = getCroppedBitmap(bitmap, w);
      canvas.drawBitmap(roundBitmap, 0, 0, null);

   }

   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(),
            Config.ARGB_8888);
      Canvas canvas = new Canvas(output);

      final int color = 0xffa19774;
      final Paint paint = new Paint();
      final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());

      paint.setAntiAlias(true);
      paint.setFilterBitmap(true);
      paint.setDither(true);
      canvas.drawARGB(0, 0, 0, 0);
      //设置笔的颜色
      paint.setColor(Color.parseColor("#BAB399"));
      //画圆
      canvas.drawCircle(sbmp.getWidth() / 2 + 0.5f,
            sbmp.getHeight() / 2 + 0.5f, sbmp.getWidth() / 2 + 0.5f, paint);
      paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
      canvas.drawBitmap(sbmp, rect, rect, paint);

      return output;
   }
}

然后在布局中引用这个自定义的控件, 就可以了

<里面的是你的包名加自定义的类名,如果按住Ctrl+鼠标左键能进入类的话,就说明引用成功了。

<comiptv.example.vincent.test.RoundImageView
    android:layout_centerInParent="true"
    android:class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@mipmap/a8"
    android:layout_width="300dp"
    android:layout_height="300dp"
    />

这样就可以了

原文链接:http://www.apkbus.com/blog-843025-61687.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消