RN系列之五十三解决Android上图片圆角的终级解决方案
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上图片圆角的终级解决方案相关推荐
- android中图片圆角,Android中实现圆角图片的几种方法
Android中实现圆角图片有多种姿势,不知你解锁了几种? 方法一:setXfermode法 此种方式就是再new一个相同尺寸的bitmap,然后使用paint.setXfermode(new Por ...
- 电商项目如何解决线上优惠券超发(排错+解决方案)(荣耀典藏)
目录 1.问题抛出 2.问题引发 3.问题解决 3.1.解决方案 1(Java 代码加锁) 3.2.解决方案 2(SQL 层面解决超发) 3.3.解决方案 3(通过 Redis 分布式锁来解决问题) ...
- 解决Android 拍照图片被旋转问题
今天在项目中做拍照上传头像相关, 但调用系统相机拍照得到的图片总是旋转90度, 在网上找到了两种答案: 第一种如下, 无奈得到的旋转角度总是 0 度 , 无法解决旋转问题 //读取图片旋转角度publ ...
- 【Android Studio安装部署系列】十三、Android studio添加和删除Module 2
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 新建.导入.删除Module是常见的操作,这里简单介绍下. 新建Module File--New--New Module... 选中 ...
- RN 实现阴影,解决Android阴影问题 react-native-shadow
RN提供的阴影仅支持IOS,所以,在开发遇到阴影问题需要借助第三方的插件 react-native-shadow 使用react-native-shadow和react-native-svg实现: 1 ...
- 羊皮书APP(Android版)开发系列(十三)Android 邮件发送的实现
在app开发过程中,邮件发送功能也是一个常见的功能,用于反馈一些app信息,严重错误等.这里使用javamail-android来实现,使用javamail-android需要下载三个jar包,分别是 ...
- 解决android上WIFI提示“未检测到任何互联网连接,因此不会自动重新连接“
问题描述: 在android5.1中出现如题提示,导致机器重启后不会链接WIFI. 分析代码: frameworks/opt/net/wifi/service/java/com/android/ser ...
- android .9图片 圆角,android的.9图片以及圆角进度条(进度条两端都是圆角)的实现...
1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域 2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域 3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域 4号黑色条位置向上覆 ...
- android xml图片圆角矩形,使用Path自定义圆角图片
简单实现圆角图片CircleView 效果: CircleImageView代码: public class CircleImageView extends AppCompatImageView { ...
最新文章
- PHP中的静态属性、静态方法、常量属性
- 动态注册客户端脚本的方法
- 虚拟机——虚拟机的初步认识
- 【转】详谈for循环里面的break和continue语句
- 200 switching to ascii mode_【图片】15005377957 三轮车载式液压打井机XYC-200A 型深水井钻机游走乡【地勘吧】...
- 宁德时代拟再投240亿元扩产宜宾基地
- 05-UIDynamic
- infopath 小结
- C# WinForm DataGridView 给标题列增加序号及格式化某个字段
- 信息学奥赛研究1:竞赛时间表、学习规划
- new一个对象是个什么过程
- java 习题_【精选】Java习题Java习题.pdf
- LINUX时间格式转换
- 查看CentOS版本信息
- linux搭建http代理服务器
- vs2019 vs2022番茄助手重新安装失败问题处理
- 在保护继承中基类的共有成员_鸡啄米:C++编程入门系列之三十八(继承与派生:派生类对基类成员的访问控制之保护继承与私有继承)...
- Visual Basic 6.0 中文企业版
- mac安装软件管家homebrew
- html 地球页面代码,纯CSS3实现地球自转实现代码(图文教程附送源码)
热门文章
- kube-apiserver启动时报错并且不能操作etcd
- R 计算时间序列的交叉相关性教程
- ansys一段时间后进入model报错:ansysWBU.exe encountered a problem.
- SQL Server 索引(index) 和 视图(view) 的简单介绍和操作
- 《学会提问-批判性思维指南》--70页原创PPT免费分享 (评论: 学会提问)
- 计算机boot进入u盘启动,戴尔服务器怎么进入u盘启动模式 选择oneshotbios
- Vue 实现页面一键截屏功能
- 神经网络中定义网络模型中的forward方法
- Android 8.1 从零开始写 HAL -- (2) 实现 HAL 主体
- jQuery的下载与安装