android-圆形头像

敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述android-圆形头像相关的知识,希望能为你提供帮助。
引子:拍摄的照片,截图软件截的图,一般都是以矩形的形式呈现,然而很多时候android开发,需要做出一个圆形图像作为 用户的头像。
有两种方式可供选择,
1)直接使用androidSdk提供的RoundedBitmapDrawable.java类 对drawable设置圆角角度,可以生成圆形效果。
2)CircleImageView是github上 的 一个第三方开源项目,它提供了圆形图像的专业处理方法。
 
两者的区别如下:
       1)RoundedBitmapDrawable 是通过设置圆角角度来造成圆形效果,所以它除了生成正圆效果,还能生成 圆角效果。这一点,CircleImageView做不到。
        2)RoundedBitmapDrawable 不能直接定义边框效果(厚度,颜色等),但是CircleImageVIew可以。
示例: RoundedBitmapDrawable:layout.xml中:

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

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

 
 
 
CircleImageView:在androidStudio中引用 它的库:
 
dependencies { .... implementation ‘de.hdodenhof:circleimageview:2.2.0‘ }

 
在layout.xml中:
< de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="96dp"
android:layout_height="96dp"
android:src="https://www.songbingjia.com/android/@drawable/itsme"
app:civ_border_color="@android:color/holo_green_dark"
app:civ_border_overlay="true"
app:civ_border_width="2dp"
app:civ_circle_background_color="@color/colorPrimaryDark"
app:civ_fill_color="@color/colorAccent"/>

至于这个CircleImageView的内部代码分析,这里留个位置,后面来填。
······
【android-圆形头像】 










    推荐阅读