Android中经常会遇到对图片进行二次处理,例如加圆角,或者显示圆形图片

方法一:

  通过第三方框架Glide实现图片显示有圆角,有三种写法如下:

  1.1,第一种实现:

  RequestOptions options = new RequestOptions().error(R.drawable.img_load_failure).bitmapTransform(new RoundedCorners(30));//图片圆角为30

  Glide.with(this).load(URL) //图片地址

  .apply(options)

  .into(ImagView);

  1.2,第二种实现:

  RequestOptions requestOptions = new RequestOptions();

  requestOptions.placeholder(R.drawable.ic_launcher_background);

  requestOptions.circleCropTransform();

  requestOptions.transforms( new RoundedCorners(30));

  Glide.with(this).load(URL) //图片地址

  .apply(options)

  .into(ImagView);

  1.3,第三种实现:

  RequestOptions options = new RequestOptions().centerCrop() .transform(new RoundTransform(this,30));

  Glide.with(this).load(URL) //图片地址

  .apply(options)

  .into(ImagView);

  public class RoundTransform extends BitmapTransformation {

  private static float radius = 0f;

  public RoundTransform(Context context) {

  this(context, 4);

  }

  public RoundTransform(Context context, int dp) {

  super(context);

  this.radius = Resources.getSystem().getDisplayMetrics().density * dp;

  }

  @Override

  protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {

  Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight);

  return roundCrop(pool, bitmap);

  }

  private static Bitmap roundCrop(BitmapPool pool, Bitmap source) {

  if (source == null) return null;

  Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);

  if (result == null) {

  result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);

  } 无锡人流多少钱 http://www.bhnfkyy.com

  Canvas canvas = new Canvas(result);

  Paint paint = new Paint();

  paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));

  paint.setAntiAlias(true);

  RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight());

  canvas.drawRoundRect(rectF, radius, radius, paint);

  return result;

  }

  public String getId() {

  return getClass().getName() + Math.round(radius);

  }

  @Override

  public void updateDiskCacheKey(MessageDigest messageDigest) {

  }

  }

Android 图片设置圆角的更多相关文章

  1. Android 图片设置圆角 方法之二

    Android中经常会遇到对图片进行二次处理,例如加圆角,或者显示圆形图片.接下来我们再介绍一种方法. 首先, 自定义ImageView: android:id="@+id/iv" ...

  2. Java 图片设置圆角(设置边框,旁白)

    /** * 图片设置圆角 * @param srcImage * @param radius * @param border * @param padding * @return * @throws ...

  3. iOS图片设置圆角

    一般我们在iOS开发的过程中设置圆角都是如下这样设置的. imageView.clipsToBounds = YES; [imageView.layer setCornerRadius:]; 这样设置 ...

  4. iOS图片设置圆角性能优化

    问题 圆角虽好,但如果使用不当,它就是你的帧数杀手,特别当它出现在滚动列表的时候.下面来看圆角如何毁掉你的流畅度的. 实测 layer.cornerRadius 我创建了一个简单地UITableVie ...

  5. Android怎样设置圆角button

    1. 在res文件夹下的drawable文件夹下新建shape.xml文件 <?xml version="1.0" encoding="utf-8"?&g ...

  6. 微信小程序图片设置圆角进入页面闪动

    transform变形 当我们通过某些行为触发页面进行大面积绘制的时候,浏览器由于没有事先准备,应付渲染够呛,于是掉帧,于是卡顿.而will-change则是真正的行为触发之前告诉浏览器:“我待会儿就 ...

  7. 图片设置3D效果

    /** * 图片绘制3d效果 * @param srcImage * @param radius * @param border * @param padding * @return * @throw ...

  8. iOS设置圆角的四种方法

    小小圆角问题,正常情况下,我们不需要过多关心,但当屏幕内比较多的时候,还是有必要了解下性能问题的 一.设置CALayer的cornerRadius 这是最常用的,也是最简单的. cornerRadiu ...

  9. Android 图片圆角的设置

    ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fi ...

随机推荐

  1. hdu1863 畅通工程 基础最小生成树

    #include <iostream> #include <cstdio> #include <algorithm> #define N 110 #define M ...

  2. c++ 头文件路径选择

    单文件引用头文件./ 当前目录 ../ 父级目录 / 根目录              多文件引用头文件多文件引用头文件 定义单独放在cpp文件里面 ,声明放在().h)里面

  3. DFS/并查集 Codeforces Round #286 (Div. 2) B - Mr. Kitayuta's Colorful Graph

    题目传送门 /* 题意:两点之间有不同颜色的线连通,问两点间单一颜色连通的路径有几条 DFS:暴力每个颜色,以u走到v为结束标志,累加条数 注意:无向图 */ #include <cstdio& ...

  4. python正则表达式多次提取数据(一个规则提取多组数据)

    import re ttt='"FileName":"陈雪凝 - <em>绿色<\/em>","AlbumID":& ...

  5. Lambda表达式的一些常用形式

    1.调用一个方法 prod=>EvaluteProduct(prod); 2.lambad表达式来表示一个多参数的委托,则必须把参数封装在括号内.语句如下: (prod,count)=>p ...

  6. mysql单向自动同步

    mysql自动同步 以下教程均使用mysql自带的自动同步功能 全库单向自动同步 本例把192.168.3.45上名称为ewater_main的数据库自动同步到192.168.3.68的ewater_ ...

  7. 洛谷 大牛分站 P1000 超级玛丽游戏

    题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...

  8. 应用程序员眼中的数据库管理系统:API+数据库语言

    应用程序员眼中的数据库管理系统:API+数据库语言 sqlite3_open_v2 https://www.cnblogs.com/cchust/p/5121559.html

  9. 汇编4OPCODE

    opcode原理 前缀域 切换操作数大小前缀 : 066h 可以将32位的操作数切换成16位的操作数 B8 00010000 | MOV EAX,0x100     66:B8 0001 | MOV ...

  10. Python3简明教程(三)—— 运算符和表达式

    运算符 什么是运算符? 举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. Python支持以下类型的运算符: 算术运算符 关系运算符 赋 ...