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

  • 先上效果图
  • Glide
  • Picasso
    • CircleTransform.java(圆形图片工具类)

先上效果图


Glide

在app的build.gradle中引入:
// 加载图片
implementation 'com.github.bumptech.glide:glide:4.13.1'
// 如果涉及到网络加载图片,需要在manifest.xml文件中增加网络权限
<uses-permission android:name="android.permission.INTERNET" />
// 直接在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

在app的build.gradle中引入:
// 加载网络图片相关
implementation "com.squareup.picasso:picasso:2.5.2"
// 直接在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(圆形图片工具类)

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 {@Overridepublic 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;}@Overridepublic String key() {return "circle";}
}

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

  1. android 图片叠加xml,Android实现图片叠加效果的两种方法

    本文实例讲述了Android实现图片叠加效果的两种方法.,具体如下: 效果图: 第一种: 第二种: 第一种是通过canvas画出来的效果: public void first(View v) { // ...

  2. Android4清理代码缓存,Android清除应用缓存的两种方法

    第一种 使用ActivityManager中的clearApplicationUserData方法,代码如下: ActivityManager am = (ActivityManager) getSy ...

  3. matlab批量处理程序设计,Matlab实现批量处理图像的两种方法

    Matlab实现批量处理图像的两种方法 基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副: s ...

  4. android 画布叠加,Android实现图片叠加效果的两种方法

    本文实例讲述了Android实现图片叠加效果的两种方法.分享给大家供大家参考,具体如下: 效果图: 第一种: 第二种: 第一种是通过canvas画出来的效果: public void first(Vi ...

  5. Android中添加背景音乐的两种方法

    前些天在尝试自己写一个Android小游戏--flybird 基本功能实现了,就想添加声音,然后上网查了查,大多是一样,可是用到我这,有些却不可以用,所以我还用了两种方法. 下面谈谈这两种方法. 方法 ...

  6. java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法

    首先还是要了解框架JFrame中的层次结构.JFrame中的层次分布及相对关系是:最底层是:JRootPane:第二层是:JlayerPane:最上层就是ContentPane,也正是我们常说的内容面 ...

  7. Android发送短信的两种方法

    Android发送短信代码的两种方法 Android发送短信代码的两种方法 有两种方法可以实现发送短信: 其一是使用intent-startActivity,URI数据格式为"smsto:n ...

  8. android相册如何加背景音乐,Android中添加背景音乐的两种方法

    前些天在尝试自己写一个Android小游戏--flybird 基本功能实现了,就想添加声音,然后上网查了查,大多是一样,可是用到我这,有些却不可以用,所以我还用了两种方法. 下面谈谈这两种方法. 方法 ...

  9. Android设备设置代理的两种方法

    本文将介绍两种给给android设备设置网络代理的方法,一种是直接在网络设置中操作,另一种是通过adb指令操作 第一种最常用的通过设置页面操作(此处以夜神模拟器为例讲解,其他设备操作方式基本类似) 操 ...

最新文章

  1. 轻松应对Java试题,这是一份大数据分析工程师面试指南
  2. 两种方式(goto语句以及while循环)实现C语言关机小程序
  3. Java中的异常和递归
  4. 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial
  5. 最值得一看的几条简单的谷歌 Google 搜索技巧!
  6. php 替换某一行,PHP中如何替换换行符?
  7. VisualStudioCode下载安装与安装中文插件教程(图文教程)
  8. .NET Core微服务开发服务间调用篇-GRPC
  9. linux如何查看nohup日志大小,linux下nohup日志输出过大问题解决方案
  10. Visual C# 打造 “浏览器”
  11. mysql自动安装脚本
  12. 深入浅出mysql笔记
  13. JS获取IP地址信息,以及设备信息
  14. 深度linux 官网,深度OS
  15. JsBarcode的使用
  16. 中台战略=微服务+服务治理+组织架构
  17. 进阶篇:4.1)DFA设计指南:简化产品设计(kiss原则)
  18. 【转载】腾讯服务器centos服务器下mysql的安装
  19. 尚硅谷_2019互联网大厂高频重点面试题(第二季)思维导图脑图笔记完整版
  20. steam同乐无法连接远程计算机,Steam远程同乐功能怎么使用_Steam远程同乐功能使用方法_3DM单机...

热门文章

  1. Jar包阿里云服务器后台运行
  2. 核心单词 Word List 1
  3. [Linux 驱动] -- 驱动调试技巧点滴分享
  4. vue校验密码的三种写法
  5. 各种神经网络的应用领域,神经网络技术及其应用
  6. Debian apache
  7. 12、【股票策略】使用backtrader回测升级版的狗股策略-基于股息率和市净率两个因子
  8. 性能测试能力提升-关于性能测试
  9. Hi3516DV300编译环境搭建问题及解决
  10. 服务器更新维护公告语,6月1日阴阳师服务器更新维护内容公告