android xml图片圆角矩形,使用Path自定义圆角图片
简单实现圆角图片CircleView
效果:
CircleImageView代码:
public class CircleImageView extends AppCompatImageView {
private Path mPath;
private RectF mRectF;
private Paint mPaint;
public CircleImageView(Context context) {
this(context, null);
}
public CircleImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CircleImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(15);
mPath = new Path();
}
@Override
protected void onDraw(Canvas canvas) {
//设置外框的矩形区域,不可再init()初始化,构造器中width和height还未确定,可在onMesure()中获取并设置
mRectF = new RectF(0,0, getWidth(),getHeight());
//path划出一个圆角矩形,容纳图片,图片矩形区域设置比红色外框小,否则会覆盖住外框,随意控制
mPath.addRoundRect(new RectF(10, 10, mRectF.right-10,mRectF.bottom-10), 50, 50, Path.Direction.CW);
canvas.drawRoundRect(mRectF, 50, 50, mPaint); //画出红色外框圆角矩形
canvas.clipPath(mPath);//将canvas裁剪到path设定的区域,往后的绘制都只能在此区域中,
//这一句应该放在canvas.clipPath(path)之后,canvas.clipPath(path)只对裁剪之后的绘制起作用,
// 这个方法在ImageView中会画出xml设置的Drawable,落在刚才设置的path中
super.onDraw(canvas);
}
}
整个原理就是用Path划出一个圆角矩形区域,调用super.onDraw(canvas)就可以让Drawable 落在那个区域。
使用,xml:
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.why.traing2.MainActivity">
android:id="@+id/img_circle"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/gakki"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintVertical_bias="0.501"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
/>
Activivty:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CircleImageView circleImageView = (CircleImageView)findViewById(R.id.img_circle);
}
}
看了些参考资料,发现上篇写错了,发现思路比较简单的,记录下。也可以用Shader, Xfermode实现,参考:https://enggm.wordpxress.com/...
android xml图片圆角矩形,使用Path自定义圆角图片相关推荐
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)...
本文转载自:http://blog.csdn.net/rhljiayou/article/details/9919713 首先了解一下CGContextRef: An opaque type that ...
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
本文转载自:http://blog.csdn.net/rhljiayou/article/details/9919713 首先了解一下CGContextRef: An opaque type that ...
- CSS 使用border-radius属性实现标签元素变为正圆、椭圆、圆角矩形(可以自定义4个角的圆角大小)
1 使用详解 border-radius 说明:给元素的边框设置圆角,默认不设置圆角为矩形,可以给元素设置圆角将元素变为正圆.椭圆或圆角矩形 语法: (1)border-radius:50%,给元素设 ...
- html圆角矩形的渐变色,canvas圆角矩形 PS制作渐变圆角矩形: 方法一:
用canvas画只有一个角是圆角的矩形,能画出来么? CSS布局HTML小编今天和大家分享各位大侠指点, 找到方法了float[] radii={12f,12f,0f,0f,0f,0f,0f,0f}; ...
- canvas 圆角矩形填充_canvas制作圆角矩形(包括填充矩形的功能)
canvas制作圆角矩形(包括填充矩形的功能) 您的浏览器不支持 HTML5 canvas 标签. window.onload = function() { var myCanvas = docume ...
- 自定义圆角矩形图片/圆形图片
图片的圆形/圆角矩形的处理方式有很多,网上也有很多例子,最近项目比较清闲,就试着自己写了一个通用的图片处理,可以根据参数的不同自动生成原型图片或者圆角矩形图片的自定义view大致的效果如下图,两个vi ...
- Android圆形以及圆角矩形头像
原理,通过设置画笔的Mode.SRC_IN将画布上重叠区域以外清除,圆形头像不就是我们的bitmap上在中心位置画一个圆然后两部分重叠的么. 如果不明白请往下看. 下面整张图是需要处理的bitmap, ...
- HTML设置单边圆角,如何在html中做圆角矩形和 只有右边的分隔线
其实是对(理论上是对所有的)html元素: 而实际 常用的是 div块, 链接a 等运用圆角矩形的样式 这个圆角是通过元素: div, a的 css 样式来实现的: 样式: border-radius ...
- 如何在html中做圆角矩形和 只有右边的分隔线
这个网站满好的,可以常看看 css-matic中有几个很好的写css可视化的工具 其实做css 版式布局等都可以有工具的 推荐40个优秀的免费CSS工具 debugger正则表达式在线 其实是对(理论 ...
最新文章
- 跨平台PHP调试器设计及使用方法——协议解析
- HDLBits 系列(30)Serial Receiver
- css盒子模型、边框border、外边距margin、填充padding、轮廓outline
- Word编写代码时输出半角引号
- 全球及中国家电用PET薄膜涂层钢卷市场前景形势与未来竞争规模展望报告2022版
- DeepMatch :用于推荐广告的深度召回匹配算法库
- 字节跳动---毕业旅行问题
- 关于使用两个GTP/GTX出现[DRC RTSTAT-1]error([route 35-54] critical warning)的问题详解
- mysql 中文列索引_MYSQL多列索引
- 【评分】第三次作业-团队展示
- 2021年将迎接你的是什么?
- java实现可选形参_Java:可选的可选实现
- mysql性能优化 硬件优化_mysql性能优化学习笔记(6)数据库配置优化硬件优化...
- Python json模块 - Python零基础入门教程
- 过拟合怎么产生的?防治措施?
- Redis签到功能设计与实现
- hdu-5703 Desert(水题)
- RabbitMQ学习之(二)_Centos6下安装RabbitMQ及管理配置
- 数位板驱动压力测试_【又来甩锅了】数位板/数位屏延迟怎么办?
- finallshell使用_Finalshell软件安装使用
热门文章
- mysql表分区数量限制_MySQL分区表的局限和限制详解
- iphone个人热点无法开启_无法在 iPhone 上正常使用“个人热点”怎么办?
- ios php mysql实例_php – 从iOS应用程序将图像存储到MYSQL数据库中
- zabbix前端php界面,Zabbix前端插件zatree在Zabbix 2.2.1前端报错的解决方案
- 硬盘读写测试工具_硬盘测速工具:Blackmagic Disk Speed Test Mac
- java spring源码_spring源码分析-spring中的bean
- php写else老是报错,调试PHP错误经常用到的一些
- mysql5.6 慢查询_MySQL5.6 如何优化慢查询的SQL语句
- Controller接口控制器(2)
- listview item里面的控件点击事件