现在很多的APP都很喜欢圆形的头像,这里就简单的写个圆形的ImageView~

第三方圆形ImageView控件:

RoundedImageView

CircleImageView

实现代码:

自定义ImageView:RoundImageView.java

package com.jay.demo.imageviewdemo;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.Region;
import android.util.AttributeSet;
import android.widget.ImageView; /**
* Created by coder-pig on 2015/7/18 0018.
*/
public class RoundImageView extends ImageView { private Bitmap mBitmap;
private Rect mRect = new Rect();
private PaintFlagsDrawFilter pdf = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG);
private Paint mPaint = new Paint();
private Path mPath=new Path();
public RoundImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
} //传入一个Bitmap对象
public void setBitmap(Bitmap bitmap) {
this.mBitmap = bitmap;
} private void init() {
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
mPaint.setAntiAlias(true);// 抗锯尺
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(mBitmap == null)
{
return;
}
mRect.set(0,0,getWidth(),getHeight());
canvas.save();
canvas.setDrawFilter(pdf);
mPath.addCircle(getWidth() / 2, getWidth() / 2, getHeight() / 2, Path.Direction.CCW);
canvas.clipPath(mPath, Region.Op.REPLACE);
canvas.drawBitmap(mBitmap, null, mRect, mPaint);
canvas.restore();
}
}

布局代码:activity_main.xml:

<com.jay.demo.imageviewdemo.RoundImageView
android:id="@+id/img_round"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="5px"/>

MainActivity.java:

package com.jay.demo.imageviewdemo;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private RoundImageView img_round; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img_round = (RoundImageView) findViewById(R.id.img_round);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.meinv);
img_round.setBitmap(bitmap);
}
}

最新文章

  1. jquery html动态添加的元素绑定事件详解
  2. TFS - 使用微软测试管理器实现跨团队项目的测试用例管理
  3. An Example of Pre-Query and Post-Query Triggers in Oracle Forms With Using Display_Item to Highlight Dynamically
  4. 下拉列表autocomplete各种实现方式比较
  5. 关于Eclipse平台的使用和开发第一个SWT程序
  6. portlet初学习及HelloWorld例子
  7. N3292x IBR介绍
  8. [TYVJ] P1006 ISBN
  9. Android 中常用代码片段
  10. WebDriver(Selenium2) 常见异常及处理方法
  11. window下Git和github入门
  12. monogodb使用
  13. MongoDB学习之路(二)
  14. javaScript事件流是什么?
  15. linux mysql 安装
  16. c语言作业01-分支、顺序结构
  17. 2019.03.26 bzoj4447: [Scoi2015]小凸解密码(线段树)
  18. 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) ——3.Programming assignments : Residual Networks
  19. dubbo使用的zk客户端
  20. DART: a fast and accurate RNA-seq mapper with a partitioning strategy DART:使用分区策略的快速准确的RNA-seq映射器

热门文章

  1. mac os 安装 wget
  2. App测试札记
  3. 关于MATLAB处理大数据坐标文件
  4. PHP中几个输出函数echo,print(),print_r(),sprintf(),var_dump()的区别
  5. SmartSql漫谈
  6. 读书共享 Primer Plus C-part 7
  7. React Image加载图片过大导致ListView滑动卡顿
  8. servlet+jsp update修改页面的实现,整整搞了两个小时才搞定
  9. ssh自动化出现的莫名报错
  10. vijos1080题解