Android studio中实现圆形头像
时间: 2024-04-21 09:17:36 浏览: 151
Android 实现圆形头像
3星 · 编辑精心推荐
在Android Studio中实现圆形头像的方法有以下几种:
1. 使用ImageView的圆形裁剪功能
在布局文件中添加一个ImageView,并设置其src属性为头像图片,然后设置其scaleType为centerCrop,最后使用android:background属性设置圆形背景即可实现圆形头像。
```
<ImageView
android:id="@+id/avatar"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="centerCrop"
android:src="@drawable/avatar"
android:background="@drawable/circle"/>
```
其中,circle.xml是一个圆形背景的drawable文件,代码如下:
```
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FFFFFF" />
</shape>
```
2. 使用Glide库实现圆形头像
Glide是一款强大的图片加载库,可以方便地加载网络或本地图片,并提供了很多图片处理的功能,包括圆形裁剪。
在布局文件中添加一个ImageView,并设置其src属性为空,然后在Java代码中使用Glide加载头像图片,并使用Glide提供的Transformations.circleCrop()方法进行圆形裁剪,最后设置到ImageView中即可。
```
<ImageView
android:id="@+id/avatar"
android:layout_width="100dp"
android:layout_height="100dp"/>
Glide.with(this)
.load("http://xxx.com/avatar.png")
.apply(RequestOptions.circleCropTransform())
.into(imageView);
```
3. 使用自定义View实现圆形头像
自定义View是一种更灵活、更可定制化的实现方式。可以继承View或其子类,然后在onDraw方法中绘制头像图片,并使用canvas.drawCircle()方法绘制圆形背景。
```
public class CircleImageView extends ImageView {
private Paint mPaint;
public CircleImageView(Context context) {
super(context);
init();
}
public CircleImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CircleImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.WHITE);
}
@Override
protected void onDraw(Canvas canvas) {
Drawable drawable = getDrawable();
if (drawable == null) {
super.onDraw(canvas);
return;
}
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
Bitmap circleBitmap = getCircleBitmap(bitmap);
canvas.drawBitmap(circleBitmap, 0, 0, null);
}
private Bitmap getCircleBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int radius = Math.min(width, height) / 2;
canvas.drawCircle(width / 2, height / 2, radius, mPaint);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, 0, 0, mPaint);
return output;
}
}
```
在布局文件中使用自定义View即可。
```
<com.example.CircleImageView
android:id="@+id/avatar"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/avatar"/>
```
阅读全文