当前位置: 首页 > article >正文

Android布局layout的draw简洁clipPath实现圆角矩形布局,Kotlin

Android布局layout的draw简洁clipPath实现圆角矩形布局,Kotlin

 

通常,如果要把一个相对布局,FrameLayout,或者线性布局等这样的布局变成具有圆角或者圆形的布局,需要增加一个style,给它设置圆角,现在通过上层动态Kotlin代码重写draw方法,很简单实现圆角矩形的任意布局:

 

import android.content.Context
import android.graphics.Canvas
import android.graphics.Path
import android.util.AttributeSet
import android.widget.RelativeLayout

class MyLayout : RelativeLayout {
    private var mRadius = 100f //半径
    private val mPath = Path()

    constructor(ctx: Context, attributeSet: AttributeSet) : super(ctx, attributeSet) {

    }

    //onDraw里面并不能简单实现,换用draw就很容易实现。
    override fun draw(canvas: Canvas) {
        canvas.save()

        mPath.addRoundRect(0f, 0f, measuredWidth.toFloat(), measuredHeight.toFloat(), mRadius, mRadius, Path.Direction.CW)
        canvas.clipPath(mPath)

        super.draw(canvas)
        canvas.restore()
    }
}

xml直接使用:

<?xml version="1.0" encoding="utf-8"?>
<com.myapp.MyLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/holo_red_dark"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:src="@mipmap/pic" />
</com.myapp.MyLayout>

最终:

f8ed9ff53f08433c9c0c2717141f6fb3.png

 

 

 

 

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2)-CSDN博客文章浏览阅读449次,点赞5次,收藏3次。Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案RoundedBitmapDrawable是Android在support v4的扩展包中新增的实现圆角图形的关键类,借助RoundedBitmapDrawable的帮助,可以轻松的以Android标准方式实现圆角图形图象。头像有标准的四方形,也有圆形(如QQ)。Android水平渐变色圆角矩形一个Android水平渐变色圆角矩形,如图:其实实现很简单,主要感觉颜色渐变,圆角弧度比较漂亮,故记录下来。https://blog.csdn.net/zhangphil/article/details/144586951Android基于Path的addRoundRect,Canvas剪切clipPath简洁圆形图用Matrix实现旋转角度,Kotlin(3)-CSDN博客文章浏览阅读30次。Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案RoundedBitmapDrawable是Android在support v4的扩展包中新增的实现圆角图形的关键类,借助RoundedBitmapDrawable的帮助,可以轻松的以Android标准方式实现圆角图形图象。Android水平渐变色圆角矩形一个Android水平渐变色圆角矩形,如图:其实实现很简单,主要感觉颜色渐变,圆角弧度比较漂亮,故记录下来。https://blog.csdn.net/zhangphil/article/details/144588050

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆角矩形实现,Kotlin(1)-CSDN博客文章浏览阅读615次,点赞8次,收藏4次。Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案RoundedBitmapDrawable是Android在support v4的扩展包中新增的实现圆角图形的关键类,借助RoundedBitmapDrawable的帮助,可以轻松的以Android标准方式实现圆角图形图象。头像有标准的四方形,也有圆形(如QQ)。Android水平渐变色圆角矩形一个Android水平渐变色圆角矩形,如图:其实实现很简单,主要感觉颜色渐变,圆角弧度比较漂亮,故记录下来。https://blog.csdn.net/zhangphil/article/details/144586015

 

 


http://www.kler.cn/a/472031.html

相关文章:

  • BeanFactory与factoryBean 区别,请用源码分析,及spring中涉及的点,及应用场景
  • 论文导读 | 数据库中的连接操作
  • WPF中RenderTargetBitmap问题解决
  • 外驱功率管电流型PWM控制芯片CRE6281B1
  • [项目实战2]贪吃蛇游戏
  • 如何轻松反转C# List<T>中的元素顺序
  • 『SQLite』如何使用索引来查询数据?
  • matlab编写Newton插值多项式
  • 旷视科技C++面试题及参考答案
  • 关于FPGA中添加FIR IP核(采用了GOWIN EDA)
  • 使用宝塔面板,安装 Nginx、MySQL 和 Node.js
  • 后端Java开发:第十天
  • 【Linux】进程概念(PCB)与进程创建(fork)
  • 策略模式(Stragety Pattern)
  • PostgreSQL 运维的难与“难” --上海PG大会主题记录
  • Cloudflare IP 优选工具:轻松找到最快的 CDN 节点
  • Unity 3D游戏开发从入门进阶到高级
  • 【蓝桥真题练习】蓝桥杯 2021 国赛 A 组 E 题
  • 云商城--业务+架构学习和环境准备
  • php 多进程那点事,用 swoole 如何解决呢 ?
  • 【Cocos TypeScript 零基础 5.1】
  • win下搭建elk并集成springboot
  • 未来趋势:电商平台API接口的智能化与自动化发展
  • MYSQL----------MySQL权限管理
  • get和post有什么区别
  • 解决LNMP环境下PHP使用freetds扩展连接SqlServer数据库乱码问题