一行代码实现圆形头像

效果图

在开发APP中,经常要实现圆形头像,那么该如何实现呢?

要裁剪吗,要重写draw函数吗?不用,只用一行代码就可以实现

Glide实现圆形图像

Glide.with(mContext)
                .load(R.drawable.iv_image_header)
                .error(R.drawable.ic_error_default)
                .transform(new GlideCircleTransform(mContext))
                .into(mImage);

其中load后为载入的图像,error后为出错时载入的图像,transform是对其修改,我们也是通过这个GlideCirTransForm来修改的,使用的话要把mContext替换为你自己的activty,mImage为图片载入的位置

使用之前的准备

1.添加项目依赖

compile ‘org.greenrobot:eventbus:3.0.0‘
compile ‘com.squareup.retrofit2:retrofit:2.0.2‘
compile ‘com.squareup.retrofit2:converter-gson:2.0.2‘
compile ‘com.github.bumptech.glide:glide:3.7.0‘
compile ‘org.jetbrains:annotations-java5:15.0‘
compile ‘in.srain.cube:ultra-ptr:1.0.11‘
compile ‘com.wang.avi:library:1.0.5‘

2.导入GlideCircleTransform.java文件

GlideCircleTransform.java代码如下:

package com.sina.weibo.sdk.demo.utils;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;

import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;

public class GlideCircleTransform extends BitmapTransformation {

    public GlideCircleTransform(Context context) {
        super(context);
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;

        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        return result;
    }

    @Override
    public String getId() {
        return getClass().getName();
    }
}

完成这两步,你就可以使用那行代码完成你自己的圆形头像啦!

时间: 2024-11-13 23:41:13

一行代码实现圆形头像的相关文章

iOS开发——定制圆形头像与照相机图库的使用

如今的App都很流行圆形的头像,比方QQ右上角的头像,今日头条的头像等等.这已经成为App设计的趋势了.今天我们就来简单实现一下这个功能,我还会把从手机拍照中或者图库中取出作为头像的照片存储到应用程序沙盒中. 下次进入应用的时候还会显示该头像. 演示样例代码上传至:https://github.com/chenyufeng1991/AvatarPhoto  . (1)该demo使用storyboard进行实现.首先拖入一个ImageView用来显示头像和一个button. 并拖拽到代码中进行绑定

圆形头像CircleImageView和Cardview使用

效果: 圆形头像在我们的日常使用的app中很常见,因为圆形的头像比较美观. 使用圆形图片的方法可能有我们直接将图片裁剪成圆形再在app中使用, 还有就是使用自定义View对我们设置的任何图片自动裁剪成圆形. 这里使用github上CircleImageView github:https://github.com/hdodenhof/CircleImageView CardView顾名思义卡片式的View, CardView继承的是FrameLayout,所以摆放内部控件的时候需要注意一下 可以设

圆形头像以及一些常见需求形状自定义ImageView组件

在实际开发中,我们经常会遇到这样的需求,就是无论图片长啥样,我们都要其显示成圆形.圆形加一个边框.矩形加边框,带圆角的矩形等等,lib和demo下载地址:https://github.com/mapleyuan/RoundImageView.效果如下,大家有兴趣的可以下下来使用,发现有什么问题也欢迎向我提出. 下面我大概讲下实现. 首先当然是继承ImageView,重写onDraw()方法.我们来看看onDraw的实现:     protected void onDraw(Canvas canv

几行实现圆形头像,以及一些常见需求形状自定义ImageView组件

在实际开发中,我们经常会遇到这样的需求,就是无论图片长啥样,我们都要其显示成圆形.圆形加一个边框.矩形加边框,带圆角的矩形等等,我已把自己平常用的组件和demo上传到了github(https://github.com/mapleyuan/RoundImageView)上,效果如下.大家有兴趣的可以下下来使用,发现有什么问题也欢迎向我提出. 下面我大概讲下实现. 首先当然是继承ImageView,重写onDraw()方法.我们来看看onDraw的实现: @Override     protect

【Android】自定义圆形ImageView(圆形头像 可指定大小)

最近在仿手Q的UI,这里面经常要用到的就是圆形头像,看到 在android中画圆形图片的几种办法 这篇文章,了解了制作这种头像的原理.不过里面提供的方法还有一个不足的地方就是不能根据实际需求改变图片的大小,也就是说提供的原图是大尺寸的,转换之后的图片也是大尺寸的,这显然不符合我们实际项目中的需求.于是我对里面介绍的第一种方法做了一番改进,使其能直接在XML中指定图片的大小. 大体步骤 将原图居中裁剪成正方形 根据指定的宽度对正方形进行缩放 裁剪成圆形 效果 代码实现 package com.de

Core Graphics快速入门——从一行代码说起

Core Graphics入门 想必每个第一次接触Core Graphics的开发者都被无数的API.混乱的代码逻辑折腾得头疼不已,甚至望而却步.即使是绘制一个简单的矩形也看上去非常繁琐.本文换一个角度,整理一下有关Core Graphics的知识,也算作是这段时间学习的总结. Core Graphics和UIKit的区别 首先从概念上了解一下: 根据苹果的描述,UIKit是我们最容易也是最常接触到的框架.绝大多数图形界面都由UIKit完成.但是UIKit依赖于Core Graphics框架,也

自定义控件 编辑和选取圆形头像

android大家都有很多需要用户上传头像的需求,有的是选方形,有的是圆角矩形,有的是圆形. 首先我们要做一个处理图片的自定义控件,把传入的图片,经过用户选择区域,处理成一定的形状. 有的app是通过在图片上画一个矩形区域表示选中的内容,有的则是通过双指放大缩小,拖动图片来选取图片.圆形头像,还是改变图片比较好 圆形区域可调节大小. 这个自定义View的图像部分分为三个,背景图片,半透明蒙层,和亮色区域--还是直接贴代码得了 package com.example.jjj.widget; imp

js 一行代码实现图片圆角(角度可调)

关键字: border-radius 浏览器支持: 效果图: w3school在线测试工具 v1.2  http://www.w3school.com.cn/tiy/c.asp?f=css_border-radius&p=6 实现代码: 1 <!-- 圆形头像 --> 2 <div align="center"> 3 <img src="100.jpg" style="margin:10px auto;border-r

【Android】自己定义圆形ImageView(圆形头像 可指定大小)

近期在仿手Q的UI,这里面常常要用到的就是圆形头像,看到 在android中画圆形图片的几种办法 这篇文章,了解了制作这样的头像的原理.只是里面提供的方法另一个不足的地方就是不能依据实际需求改变图片的大小,也就是说提供的原图是大尺寸的,转换之后的图片也是大尺寸的,这显然不符合我们实际项目中的需求.于是我对里面介绍的第一种方法做了一番改进,使其能直接在XML中指定图片的大小. 大体步骤 将原图居中裁剪成正方形 依据指定的宽度对正方形进行缩放 裁剪成圆形 效果 代码实现 package com.de