圆形图片(kotlin)
来源:互联网 发布:七哥娃娃淘宝店铺 编辑:程序博客网 时间:2024/06/05 09:48
使用koelin 实现圆形的图片
说明
在这种需求中我们需要知道的首先就是圆形的图片她的宽和高是相等的,以宽或者高的一半为半径画圆就是我们要设计的圆,在将资源中的或者网络中的图片读取设置就OK了,
先看一下效果图
在看代码
class CircularPictureView : ImageView { private var mRadius = 0 //图片的半径 private lateinit var paint: Paint //画笔对象延迟加载 在使用的时候进行加载 private var mScale = 0F //缩放比列 constructor(context: Context?) : this(context, null) constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0) constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) //圆形的图片 我们应该让他的宽高是相等的 val size = Math.min(measuredWidth, measuredHeight) mRadius = size.div(2) setMeasuredDimension(size, size) } override fun onDraw(canvas: Canvas?) { paint = Paint() val bitmap = drawableToBitmap(drawable) val bitmapShader = BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP) mScale = bitmap?.height?.let { Math.min(it, bitmap?.width) }?.let { mRadius.times(2.0).div(it).toFloat() }!! val matrix = Matrix() matrix.setScale(mScale, mScale) bitmapShader.setLocalMatrix(matrix) paint.shader = bitmapShader //话圆形 质地昂中心点坐标 半径 画笔 canvas?.drawCircle(mRadius.toFloat(), mRadius.toFloat(), mRadius.toFloat(), paint) /* * * if (canvas != null) { canvas.drawCircle(mRadius.toFloat(), mRadius.toFloat(), mRadius.toFloat(),paint) } * */ } /** * drawable 转成Bitmap的方法 */ private fun drawableToBitmap(drawable: Drawable?): Bitmap? { if (drawable is BitmapDrawable) { return drawable.bitmap } val width = drawable?.intrinsicWidth val height = drawable?.intrinsicHeight val bitmap = width?.let { height?.let { it1 -> Bitmap.createBitmap(it, it1, Bitmap.Config.ARGB_8888) } } val canvas = Canvas(bitmap) width?.let { height?.let { it1 -> drawable.setBounds(0, 0, it, it1) } } drawable?.draw(canvas) return bitmap }}
完整的Demo
阅读全文
0 0
- 圆形图片(kotlin)
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- 圆形图片
- imageview显示圆形图片
- Android自定义圆形图片
- 圆形图片CSS
- 圆形图片代码分享
- 转换图片成圆形
- 圆形图片(个人头像)
- 记VirtualBox下安装Ubantu16.04配置联网
- 按天时分秒倒计时
- 文章标题
- 推荐一款Java基于最新Spring 4.3.2 集成Hibernate 5.1.0 基于Bootstrap 3.3.7的全自动代码生成器
- 说给部分程序员听
- 圆形图片(kotlin)
- 读《jQuery技术内幕》(03)
- 3 次数最多字符(修改)
- 倒计时器类,三秒触发消息,接收到键值重置倒计时
- 机器学习实战-3决策树
- Soakaway
- Android逆向系列之动态调试5–代码注入(JDB调试)
- C语言版本socket server
- kryo工具类