• 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.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
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.layout);
    17 
    18         Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.me);//1、取得图片资源的bitmap对象
    19         Bitmap dst;//2、将长方形图片裁剪成正方形图片
    20         if (src.getWidth() >= src.getHeight()) {// 所谓的裁剪,就是用Bitmap的create方法,指定宽高和源bitmap
    21             dst = Bitmap.createBitmap(src, src.getWidth() / 2 - src.getHeight() / 2, 0, src.getHeight(), src.getHeight());
    22         } else {
    23             dst = Bitmap.createBitmap(src, 0, src.getHeight() / 2 - src.getWidth() / 2, src.getWidth(), src.getWidth());
    24         }
    25         //这样,就得到了一个方形的图
    26         RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), dst);// 3、再启用RoundedBitmapDrawable设置圆角和抗锯齿
    27         roundedBitmapDrawable.setCornerRadius(dst.getWidth() / 2); //设置圆角半径为正方形边长的一半
    28         roundedBitmapDrawable.setAntiAlias(true);//图片的裁剪通常会造成锯齿,这里要设置抗锯齿
    29         ImageView image3 = (ImageView) findViewById(R.id.imageView3);//4、将处理之后的drawable对象设置到imageView中
    30         image3.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="@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的内部代码分析,这里留个位置,后面来填。

    ······

  • 相关阅读:
    web.xml 中的listener、 filter、servlet 加载顺序及其详解
    AOP概念的理解
    webx学习总结
    如何设计编制软件测试用例(一~三)
    冒烟测试小结(转载)
    在web.xml不认<taglib>解决办法
    document.domain 跨域问题【转】
    判断图片是否加载完成
    指定步长中间值
    关于 contentWindow, contentDocument
  • 原文地址:https://www.cnblogs.com/hankzhouAndroid/p/8973937.html
Copyright © 2020-2023  润新知