android-圆形头像

引子:

  拍摄的照片,截图软件截的图,一般都是以矩形的形式呈现,然而很多时候android开发,需要做出一个圆形图像作为 用户的头像。

  有两种方式可供选择,

  1)直接使用androidSdk提供的RoundedBitmapDrawable.java类 对drawable设置圆角角度,可以生成圆形效果。

  2)CircleImageView是github上 的 一个第三方开源项目,它提供了圆形图像的专业处理方法。

  两者的区别如下:

      1)RoundedBitmapDrawable 是通过设置圆角角度来造成圆形效果,所以它除了生成正圆效果,还能生成 圆角效果。这一点,CircleImageView做不到。

        2)RoundedBitmapDrawable 不能直接定义边框效果(厚度,颜色等),但是CircleImageVIew可以。

示例:

RoundedBitmapDrawable:

layout.xml中:

1 <ImageView
2         android:id="@+id/imageView3"
3         android:layout_width="wrap_content"
4         android:layout_height="wrap_content"
5         android:padding="5dp"/>

 java代码中:请重点看红色注释部分;

 1 package com.example.myroundimageview;
 2 
 3 import android.graphics.Bitmap;
 4 import android.graphics.BitmapFactory;
 5 import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
 6 import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.util.Log;
10 import android.view.View;
11 import android.widget.ImageView;
12 
13 public class MainActivity extends AppCompatActivity {
14 
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.layout);
19         
20              Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.me);//1、取得图片资源的bitmap对象
21              Bitmap dst;//2、将长方形图片裁剪成正方形图片
22              if (src.getWidth() >= src.getHeight()) {// 所谓的裁剪,就是用Bitmap的create方法,指定宽高和源bitmap
23                 dst = Bitmap.createBitmap(src, src.getWidth() / 2 - src.getHeight() / 2, 0, src.getHeight(), src.getHeight());
24              } else {
25                 dst = Bitmap.createBitmap(src, 0, src.getHeight() / 2 - src.getWidth() / 2, src.getWidth(), src.getWidth());
26         }
27            //这样,就得到了一个方形的图
28            RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), dst);// 3、再启用RoundedBitmapDrawable设置圆角和抗锯齿
29            roundedBitmapDrawable.setCornerRadius(dst.getWidth() / 2); //设置圆角半径为正方形边长的一半
30            roundedBitmapDrawable.setAntiAlias(true);//图片的裁剪通常会造成锯齿,这里要设置抗锯齿
31            ImageView image3 = (ImageView) findViewById(R.id.imageView3);//4、将处理之后的drawable对象设置到imageView中
32       image3.setImageDrawable(roundedBitmapDrawable);
33     }
34 }

猜你喜欢

转载自www.cnblogs.com/hankzhouAndroid/p/8973937.html