前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android实现圆形图像的两种方法(Glide和Picasso)

Android实现圆形图像的两种方法(Glide和Picasso)

作者头像
是阿超
发布2022-08-07 12:41:59
8110
发布2022-08-07 12:41:59
举报
文章被收录于专栏:CSDN

Android实现圆形图像的两种方法

先上效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Glide

代码语言:javascript
复制
在app的build.gradle中引入:
// 加载图片
implementation 'com.github.bumptech.glide:glide:4.13.1'
代码语言:javascript
复制
// 如果涉及到网络加载图片,需要在manifest.xml文件中增加网络权限
<uses-permission android:name="android.permission.INTERNET" />
代码语言:javascript
复制
// 直接在java文件中引用库就OK
/**
* context:Context(with参数类型可以为Context、Activity、FragmentActivity、Fragment、View)
* uri:Uri(load参数类型可以为Bitmap、Drawable、String、Uri、File、Integer、URL、byte[]、Object)
* apply:RequestOptions.bitmapTransform(new CircleCrop()):加载圆形图片
* imageView:控件id
*/
Glide.with(context).load(uri).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(imageView);

Picasso

代码语言:javascript
复制
在app的build.gradle中引入:
// 加载网络图片相关
implementation "com.squareup.picasso:picasso:2.5.2"
代码语言:javascript
复制
// 直接在java文件中引用
/**
* context:Context
* uri:Uri(load参数类型可以为String、Uri、File、int)
* transform:new CircleTransform():圆形图片工具类(下文有)
* imageView:控件id
*/
Picasso.with(context).load(uri).transform(new CircleTransform()).into(imageView);

CircleTransform.java(圆形图片工具类)

代码语言:javascript
复制
package com.gaojc.top.util;

import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.squareup.picasso.Transformation;

/**
 * 圆形图片
 */
public class CircleTransform implements Transformation {

    @Override
    public Bitmap transform(Bitmap source) {
        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;
        Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
        if (squaredBitmap != source) {
            source.recycle();
        }
        Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
        Canvas canvas = new Canvas(bitmap);
        Paint paint = new Paint();
        BitmapShader shader = new BitmapShader(squaredBitmap,
                BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
        paint.setShader(shader);
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        squaredBitmap.recycle();
        return bitmap;
    }

    @Override
    public String key() {
        return "circle";
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android实现圆形图像的两种方法
  • 先上效果图
  • Glide
  • Picasso
    • CircleTransform.java(圆形图片工具类)
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档