RN上Android画图角有问题,主要存在几种情况
1.随机性,在页面有多图的情况下,偶现有的图需要画圆角的没有画圆角,有的不需要画圆角的确画了圆角
2.画圆角的不规则性,有时候想画10px的圆角,结果画了一个5px的圆角。希望对四个角进行圆角,结果只对部分角进行了圆角。
3.cover模式时RN使用fresco进行圆角,在有些手机上(realme或其它),图片密度显示异常。其它resizeMode则正常解决方案:
对ReactImageView.java进行修改
1.  private static float[] sComputedCornerRadii = new float[4];
将static去掉
2.覆写onDraw,把Android效果搞成和iOS一样的圆角方式,对画布进行圆角了,然后在已成圆角的画布上画图
3.针对cover模式,也将roundingParams.setCornersRadius(0);达到统一使用画布圆角的目的,避免使用fresco圆角异常
  @Overrideprotected void onDraw(Canvas canvas) {if (mBorderRadius > 0) {float[] rids = {mBorderRadius,mBorderRadius,mBorderRadius,mBorderRadius,mBorderRadius,mBorderRadius,mBorderRadius,mBorderRadius,};Path path = new Path();int w = this.getWidth();int h = this.getHeight();/*向路径中添加圆角矩形。radii数组定义圆角矩形的四个圆角的x,y半径。radii长度必须为8*/path.addRoundRect(new RectF(0,0,w,h),rids,Path.Direction.CW);canvas.clipPath(path);}super.onDraw(canvas);}
3.process方法可以直接
@Overridepublic void process(Bitmap output, Bitmap source) {super.process(output, source);}

注:还可以在process中用另外的方式画圆,随意搞吧,都能解决问题

          int w = source.getWidth();int h = source.getHeight();Canvas canvas = new Canvas(output);final int color = Color.TRANSPARENT;Paint mPaint = new Paint();final Rect rect = new Rect(0, 0, w, h);final RectF rectF = new RectF(rect);mPaint.setAntiAlias(true);mPaint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));canvas.drawARGB(0, 0, 0, 0);mPaint.setColor(color);canvas.drawRoundRect(rectF, w * borderRadiusEx, w * borderRadiusEx, mPaint);mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));canvas.drawBitmap(source, rect, rect, mPaint);

RN系列之五十三解决Android上图片圆角的终级解决方案相关推荐

  1. android中图片圆角,Android中实现圆角图片的几种方法

    Android中实现圆角图片有多种姿势,不知你解锁了几种? 方法一:setXfermode法 此种方式就是再new一个相同尺寸的bitmap,然后使用paint.setXfermode(new Por ...

  2. 电商项目如何解决线上优惠券超发(排错+解决方案)(荣耀典藏)

    目录 1.问题抛出 2.问题引发 3.问题解决 3.1.解决方案 1(Java 代码加锁) 3.2.解决方案 2(SQL 层面解决超发) 3.3.解决方案 3(通过 Redis 分布式锁来解决问题) ...

  3. 解决Android 拍照图片被旋转问题

    今天在项目中做拍照上传头像相关, 但调用系统相机拍照得到的图片总是旋转90度, 在网上找到了两种答案: 第一种如下, 无奈得到的旋转角度总是 0 度 , 无法解决旋转问题 //读取图片旋转角度publ ...

  4. 【Android Studio安装部署系列】十三、Android studio添加和删除Module 2

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 新建.导入.删除Module是常见的操作,这里简单介绍下. 新建Module File--New--New Module... 选中 ...

  5. RN 实现阴影,解决Android阴影问题 react-native-shadow

    RN提供的阴影仅支持IOS,所以,在开发遇到阴影问题需要借助第三方的插件 react-native-shadow 使用react-native-shadow和react-native-svg实现: 1 ...

  6. 羊皮书APP(Android版)开发系列(十三)Android 邮件发送的实现

    在app开发过程中,邮件发送功能也是一个常见的功能,用于反馈一些app信息,严重错误等.这里使用javamail-android来实现,使用javamail-android需要下载三个jar包,分别是 ...

  7. 解决android上WIFI提示“未检测到任何互联网连接,因此不会自动重新连接“

    问题描述: 在android5.1中出现如题提示,导致机器重启后不会链接WIFI. 分析代码: frameworks/opt/net/wifi/service/java/com/android/ser ...

  8. android .9图片 圆角,android的.9图片以及圆角进度条(进度条两端都是圆角)的实现...

    1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域 2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域 3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域 4号黑色条位置向上覆 ...

  9. android xml图片圆角矩形,使用Path自定义圆角图片

    简单实现圆角图片CircleView 效果: CircleImageView代码: public class CircleImageView extends AppCompatImageView { ...

最新文章

  1. PHP中的静态属性、静态方法、常量属性
  2. 动态注册客户端脚本的方法
  3. 虚拟机——虚拟机的初步认识
  4. 【转】详谈for循环里面的break和continue语句
  5. 200 switching to ascii mode_【图片】15005377957 三轮车载式液压打井机XYC-200A 型深水井钻机游走乡【地勘吧】...
  6. 宁德时代拟再投240亿元扩产宜宾基地
  7. 05-UIDynamic
  8. infopath 小结
  9. C# WinForm DataGridView 给标题列增加序号及格式化某个字段
  10. 信息学奥赛研究1:竞赛时间表、学习规划
  11. new一个对象是个什么过程
  12. java 习题_【精选】Java习题Java习题.pdf
  13. LINUX时间格式转换
  14. 查看CentOS版本信息
  15. linux搭建http代理服务器
  16. vs2019 vs2022番茄助手重新安装失败问题处理
  17. 在保护继承中基类的共有成员_鸡啄米:C++编程入门系列之三十八(继承与派生:派生类对基类成员的访问控制之保护继承与私有继承)...
  18. Visual Basic 6.0 中文企业版
  19. mac安装软件管家homebrew
  20. html 地球页面代码,纯CSS3实现地球自转实现代码(图文教程附送源码)

热门文章

  1. kube-apiserver启动时报错并且不能操作etcd
  2. R 计算时间序列的交叉相关性教程
  3. ansys一段时间后进入model报错:ansysWBU.exe encountered a problem.
  4. SQL Server 索引(index) 和 视图(view) 的简单介绍和操作
  5. 《学会提问-批判性思维指南》--70页原创PPT免费分享 (评论: 学会提问)
  6. 计算机boot进入u盘启动,戴尔服务器怎么进入u盘启动模式 选择oneshotbios
  7. Vue 实现页面一键截屏功能
  8. 神经网络中定义网络模型中的forward方法
  9. Android 8.1 从零开始写 HAL -- (2) 实现 HAL 主体
  10. jQuery的下载与安装