这是使用 Canvas 的 clipPath 方法实现的圆角 View,在本库中提供了个人认为常用的几个 View 如下几种:

RadiusFrameLayout

RadiusLinearLayout

RadiusRelativeLayout

RadiusTextView

RadiusImageView

效果如下:

废话不多说,直接来看看怎么用吧~

使用

引用:

在根目录级的 build.gradle 中添加

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

再在要使用的项目级的 build.gradle 中添加:

dependencies {

compile 'com.github.arvinljw:ClipView:v1.0.1'

}

api 介绍

首先这些都是自定义 View,它们都具有自定义属性:

xml

代码

含义

app:radius="dimen"

view.setRadius(int radius)

设置各个角的圆角

app:radius_left_top="dimen"

view.setRadiusLeftTop(int rlt)

设置左上角圆角

app:radius_left_bottom="dimen"

view.setRadiusLeftBottom(int rlb)

设置左下角圆角

app:radius_right_top="dimen"

view.setRadiusRightTop(int rrt)

设置右上角圆角

app:radius_right_bottom="dimen"

view.setRadiusRightBottom(int rrb)

设置右下角圆角

补充说两点:

代码设置这些角是有顺序的,后边的会覆盖前边的,例如先设置了 setRadius 为 10,这时候每个角的大小都是 10,然后再设置 setRadiusLeftTop 为 0 的话,那么左上角圆角大小就变成 0 了,其他的还是 10。

代码设置圆角并不会自动重新绘制 View,需要自己手动去调用 invalidate()等重绘的方法,因为自动调用的话,如果连着设置几个角,就会被调用几次,那样肯定是浪费资源的,而又不好控制,所以就放弃了自动绘制。

扩展

当然最重要的是我把核心功能封装到了 RadiusUtils 中,在以上的各个 View 中的代码几乎都一样,都是调用 RadiusUtils 中的方法,所以本库中没有提供的,而你又有新的需求,即可参照以上几个 View 去实现即可。

todo

如果想要设置 boder,还是不方便,如果需要去写个 drawable,那大多时候都用不着本库中提供的方法,所以计划之后会提供绘制 border 相关的属性。

License

Copyright 2017 arvinljw

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

android view clip,ClipView 自定义 RadiusView,包含常用的 Layout 和 View,方便扩展 @codeKK Android开源站...相关推荐

  1. 分享一套Android快速开发通用模板,包含常用主流框架,持续更新中……

    AndroidTemplate 博客地址:android小咖秀 项目初衷 做开发三五年了.项目也做了些,都是不停地撸码,有自己从0开始的,有从其他人手里接锅的,慢慢的遇到的问题多了起来也就成了经验,自 ...

  2. android百度地图定位自定义图标,百度地图SDK集成及根据坐标实现定位(android studio开发)...

    百度地图SDK集成及根据坐标实现定位(android studio开发) 百度地图SDK集成及根据坐标实现定位(android studio开发) 1.下载百度地图SDK 链接:http://lbsy ...

  3. android 混音 源码,FFmpegAndroid android 端基于 FFmpeg 实现音频剪切、拼接、转码、混音、编解码;视频剪切、水印、截图、转码、编 @codeKK c开源站...

    android 端基于 FFmpeg 库的使用 添加编译 ffmpeg.shine.mp3lame.x264 源码的参考脚本 目前音视频相关处理: 音频剪切.拼接 音频混音 音频转码 音视频合成 音频 ...

  4. android堆内存解析,heapsnap HeapSnap 是一款针对 Android 进程堆内存进行追踪、定位,以便查出泄露位置的工具 @codeKK c开源站...

    1.HeapSnap 是什么 HeapSnap 是一个定位内存泄露的工具,适用于 Android 平台. 主要特性如下: 对系统负载低 不需要修改目标进程的源代码 支持 Andoroid 上的大多数 ...

  5. android差分升级原理,BigNews Android 增量更新框架差分包升级 @codeKK c开源站

    支持增量包/差分包/升级包 原理:在服务器端使用 bsdiff 工具将新老安装包的差异打包为一个体积较小的差分包/升级包,然后在 App 端通过 bspatch 工具(和 bsdiff 配套的)用差分 ...

  6. android人脸识显示头像自定义,Android 仿QQ头像自定义截取功能

    看了Android版QQ的自定义头像功能,决定自己实现,随便熟悉下android绘制和图片处理这一块的知识. 先看看效果: 思路分析: 这个效果可以用两个View来完成,上层View是一个遮盖物,绘制 ...

  7. Android XML中引用自定义内部类view的四个why

    今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...

  8. Android TV Demo 工程,其中包含 TV 常用的自定义控件,飞框效果实现,外边框效果实现,UI 控件焦点自动处理,使 TV 开发更简单,更高效。

    TVLibraryDemo 项目地址:zhangtiansheng/TVLibraryDemo  简介:Android TV Demo 工程,其中包含 TV 常用的自定义控件,飞框效果实现,外边框效果 ...

  9. 【朝花夕拾】Android自定义View之(一)手把手教你看懂View绘制流程——向源码要答案

    前言 原文:Android自定义View之(一)手把手教你看懂View绘制流程--向源码要答案 View作为整个app的颜值担当,在Android体系中占有重要的地位.深入理解Android View ...

最新文章

  1. 银行程序代发工资的方法
  2. Impress.js教程
  3. 用计算机计算汉坦,河北省Ⅱ型汉坦病毒流行特征及与细胞自噬相互作用研究
  4. 如何用VS2005制作Web安装程序
  5. JavaScript学习(七十六)—this的指向问题
  6. android fresco 存储,Android使用Fresco之下载图片(包括GIF图)
  7. MATLAB求解线性规划(含整数规划和0-1规划)问题
  8. 蓝桥杯c语言大一的知识够了吗,参加蓝桥杯后的感受以及个人总结
  9. 实时协同编辑的实现: 编辑锁, OT算法
  10. 逍遥模拟器怎么开启vt?
  11. 《我想进大厂》之MQ夺命连环11问
  12. 【教资必过!!!】思想品德课程理论基本知识
  13. xmind打不开java_xmind打开出错(JVM terminated. Exit code=-1) | 学步园
  14. 安装并使用Ghidra的Eclipse插件的过程
  15. mysql 之 FLUSH TABLES
  16. 【WPF学习手记】绘制箭头
  17. tesla k80显卡 配置支持opengl
  18. NP问题真的很难理解
  19. obsidian和zotero联动无法跳转zotero
  20. 【图像去噪】基于边缘增强扩散 (cEED) 和 Coherence Enhancing Diffusion (cCED) 滤波器实现图像去噪附matlab代码

热门文章

  1. HTML做跳转另一个页面链接,html中如何链接到另一个页面
  2. 机器学习—— SVM分类垃圾短信
  3. 工信部备案新规则下,关于域名核验的相关问题
  4. Delete数据如何恢复
  5. 树的概念:层次、高度、深度、宽度
  6. 01.Android之基础组件问题 1
  7. Docker中批量删除 tag为none的镜像
  8. 389高校毕业设计选题
  9. p2p sdk异步建连源码介绍
  10. java中clone方法的理解(深拷贝、浅拷贝)